]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/DB/Result/Bug.pm
switch all uses of MoreUtils to AllUtils
[debbugs.git] / Debbugs / DB / Result / Bug.pm
index 4a487825e6553d0132a02be2b622dfcc042c8baf..7c7fb63c9b36aa848c3f0692d22d3a87bef7b072 100644 (file)
@@ -517,5 +517,66 @@ __PACKAGE__->belongs_to(
 # Created by DBIx::Class::Schema::Loader v0.07045 @ 2016-09-24 14:51:07
 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iaipVETTaokcFNrICfIEAw
 
+use Carp;
+use List::AllUtils qw(uniq);
+
+__PACKAGE__->many_to_many(tags => 'bug_tags','tag');
+__PACKAGE__->many_to_many(user_tags => 'bug_user_tags','user_tag');
+__PACKAGE__->many_to_many(srcpackages => 'bug_srcpackages','src_pkg');
+__PACKAGE__->many_to_many(binpackages => 'bug_binpackages','bin_pkg');
+__PACKAGE__->many_to_many(affects_binpackages => 'bug_affects_binpackages','bin_pkg');
+__PACKAGE__->many_to_many(affects_srcpackages => 'bug_affects_srcpackages','src_pkg');
+__PACKAGE__->many_to_many(messages => 'bug_messages','message');
+
+sub sqlt_deploy_hook {
+    my ($self, $sqlt_table) = @_;
+    # CREATE INDEX bug_idx_owner ON bug(owner);
+    # CREATE INDEX bug_idx_submitter ON bug(submitter);
+    # CREATE INDEX bug_idx_done ON bug(done);
+    # CREATE INDEX bug_idx_forwarded ON bug(forwarded);
+    # CREATE INDEX bug_idx_last_modified ON bug(last_modified);
+    # CREATE INDEX bug_idx_severity ON bug(severity);
+    # CREATE INDEX bug_idx_creation ON bug(creation);
+    # CREATE INDEX bug_idx_log_modified ON bug(log_modified);
+    for my $idx (qw(owner submitter done forwarded last_modified),
+                qw(severity creation log_modified),
+               ) {
+       $sqlt_table->add_index(name => 'bug_idx'.$idx,
+                              fields => [$idx]);
+    }
+}
+
+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";
+    }
+    @pkg_ids = uniq @pkg_ids;
+    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";
+    }
+}
 # You can replace this text with custom code or comments, and it will be preserved on regeneration
 1;