+sub set_related_packages {
+ my ($self,$relationship,$pkgs,$pkg_cache) = @_;
+
+ my @pkg_ids;
+ if ($relationship =~ /binpackages/) {
+ for my $pkg (@{$pkgs}) {
+ push @pkg_ids,
+ $self->result_source->schema->resultset('BinPkg')->
+ get_bin_pkg_id($pkg);
+ }
+ } elsif ($relationship =~ /srcpackages/) {
+ for my $pkg (@{$pkgs}) {
+ push @pkg_ids,
+ $self->result_source->schema->resultset('SrcPkg')->
+ get_src_pkg_id($pkg);
+ }
+ } else {
+ croak "Unsupported relationship $relationship";
+ }
+ if ($relationship eq 'binpackages') {
+ $self->set_binpackages([map {{id => $_}} @pkg_ids]);
+ } elsif ($relationship eq 'srcpackages') {
+ $self->set_srcpackages([map {{id => $_}} @pkg_ids]);
+ } elsif ($relationship eq 'affects_binpackages') {
+ $self->set_affects_binpackages([map {{id => $_}} @pkg_ids]);
+ } elsif ($relationship eq 'affects_srcpackages') {
+ $self->set_affects_srcpackages([map {{id => $_}} @pkg_ids]);
+ } else {
+ croak "Unsupported relationship $relationship";
+ }
+}