]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/DB/Result/Bug.pm
set related packages (bin/src/affects, etc.)
[debbugs.git] / Debbugs / DB / Result / Bug.pm
index 7cab97fbdfcfab249591a439ad8863121589035c..d6e0f3d6e9cdb30910b5913b1a2b9a695be501ae 100644 (file)
@@ -14,6 +14,7 @@ use strict;
 use warnings;
 
 use base 'DBIx::Class::Core';
+use Carp;
 
 =head1 COMPONENTS LOADED
 
@@ -21,11 +22,13 @@ use base 'DBIx::Class::Core';
 
 =item * L<DBIx::Class::InflateColumn::DateTime>
 
+=item * L<DBIx::Class::TimeStamp>
+
 =back
 
 =cut
 
-__PACKAGE__->load_components("InflateColumn::DateTime");
+__PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp");
 
 =head1 TABLE: C<bug>
 
@@ -115,30 +118,54 @@ Outlook of the bug; empty if it has no outlook
 
 Subject of the bug
 
-=head2 done
+=head2 severity
 
-  data_type: 'text'
-  default_value: (empty string)
+  data_type: 'integer'
+  is_foreign_key: 1
   is_nullable: 0
 
+=head2 done
+
+  data_type: 'integer'
+  is_foreign_key: 1
+  is_nullable: 1
+
 Individual who did the -done; empty if it has never been -done
 
-=head2 owner
+=head2 done_full
 
   data_type: 'text'
   default_value: (empty string)
   is_nullable: 0
 
+=head2 owner
+
+  data_type: 'integer'
+  is_foreign_key: 1
+  is_nullable: 1
+
 Individual who owns this bug; empty if no one owns it
 
-=head2 submitter
+=head2 owner_full
 
   data_type: 'text'
   default_value: (empty string)
   is_nullable: 0
 
+=head2 submitter
+
+  data_type: 'integer'
+  is_foreign_key: 1
+  is_nullable: 1
+
 Individual who submitted this bug; empty if there is no submitter
 
+=head2 submitter_full
+
+  data_type: 'text'
+  default_value: (empty string)
+  is_nullable: 0
+
 =head2 unknown_packages
 
   data_type: 'text'
@@ -185,11 +212,19 @@ __PACKAGE__->add_columns(
   { data_type => "text", default_value => "", is_nullable => 0 },
   "subject",
   { data_type => "text", is_nullable => 0 },
+  "severity",
+  { data_type => "integer", is_foreign_key => 1, is_nullable => 0 },
   "done",
+  { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
+  "done_full",
   { data_type => "text", default_value => "", is_nullable => 0 },
   "owner",
+  { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
+  "owner_full",
   { data_type => "text", default_value => "", is_nullable => 0 },
   "submitter",
+  { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
+  "submitter_full",
   { data_type => "text", default_value => "", is_nullable => 0 },
   "unknown_packages",
   { data_type => "text", default_value => "", is_nullable => 0 },
@@ -209,6 +244,36 @@ __PACKAGE__->set_primary_key("id");
 
 =head1 RELATIONS
 
+=head2 bug_affects_binpackages
+
+Type: has_many
+
+Related object: L<Debbugs::DB::Result::BugAffectsBinpackage>
+
+=cut
+
+__PACKAGE__->has_many(
+  "bug_affects_binpackages",
+  "Debbugs::DB::Result::BugAffectsBinpackage",
+  { "foreign.bug" => "self.id" },
+  { cascade_copy => 0, cascade_delete => 0 },
+);
+
+=head2 bug_affects_srcpackages
+
+Type: has_many
+
+Related object: L<Debbugs::DB::Result::BugAffectsSrcpackage>
+
+=cut
+
+__PACKAGE__->has_many(
+  "bug_affects_srcpackages",
+  "Debbugs::DB::Result::BugAffectsSrcpackage",
+  { "foreign.bug" => "self.id" },
+  { cascade_copy => 0, cascade_delete => 0 },
+);
+
 =head2 bug_binpackages
 
 Type: has_many
@@ -269,32 +334,32 @@ __PACKAGE__->has_many(
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
-=head2 bug_messages
+=head2 bug_mergeds_merged
 
 Type: has_many
 
-Related object: L<Debbugs::DB::Result::BugMessage>
+Related object: L<Debbugs::DB::Result::BugMerged>
 
 =cut
 
 __PACKAGE__->has_many(
-  "bug_messages",
-  "Debbugs::DB::Result::BugMessage",
-  { "foreign.bug" => "self.id" },
+  "bug_mergeds_merged",
+  "Debbugs::DB::Result::BugMerged",
+  { "foreign.merged" => "self.id" },
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
-=head2 bug_severity
+=head2 bug_messages
 
-Type: might_have
+Type: has_many
 
-Related object: L<Debbugs::DB::Result::BugSeverity>
+Related object: L<Debbugs::DB::Result::BugMessage>
 
 =cut
 
-__PACKAGE__->might_have(
-  "bug_severity",
-  "Debbugs::DB::Result::BugSeverity",
+__PACKAGE__->has_many(
+  "bug_messages",
+  "Debbugs::DB::Result::BugMessage",
   { "foreign.bug" => "self.id" },
   { cascade_copy => 0, cascade_delete => 0 },
 );
@@ -314,17 +379,17 @@ __PACKAGE__->has_many(
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
-=head2 bug_submitters
+=head2 bug_status_caches
 
 Type: has_many
 
-Related object: L<Debbugs::DB::Result::BugSubmitter>
+Related object: L<Debbugs::DB::Result::BugStatusCache>
 
 =cut
 
 __PACKAGE__->has_many(
-  "bug_submitters",
-  "Debbugs::DB::Result::BugSubmitter",
+  "bug_status_caches",
+  "Debbugs::DB::Result::BugStatusCache",
   { "foreign.bug" => "self.id" },
   { cascade_copy => 0, cascade_delete => 0 },
 );
@@ -344,55 +409,153 @@ __PACKAGE__->has_many(
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
-=head2 bug_vers
+=head2 bug_user_tags
 
 Type: has_many
 
-Related object: L<Debbugs::DB::Result::BugVer>
+Related object: L<Debbugs::DB::Result::BugUserTag>
 
 =cut
 
 __PACKAGE__->has_many(
-  "bug_vers",
-  "Debbugs::DB::Result::BugVer",
+  "bug_user_tags",
+  "Debbugs::DB::Result::BugUserTag",
   { "foreign.bug" => "self.id" },
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
-=head2 bugs_done_by
+=head2 bug_vers
 
 Type: has_many
 
-Related object: L<Debbugs::DB::Result::BugDoneBy>
+Related object: L<Debbugs::DB::Result::BugVer>
 
 =cut
 
 __PACKAGE__->has_many(
-  "bugs_done_by",
-  "Debbugs::DB::Result::BugDoneBy",
+  "bug_vers",
+  "Debbugs::DB::Result::BugVer",
   { "foreign.bug" => "self.id" },
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
-=head2 bugs_merged_merged
+=head2 done
 
-Type: has_many
+Type: belongs_to
 
-Related object: L<Debbugs::DB::Result::BugMerged>
+Related object: L<Debbugs::DB::Result::Correspondent>
 
 =cut
 
-__PACKAGE__->has_many(
-  "bugs_merged_merged",
-  "Debbugs::DB::Result::BugMerged",
-  { "foreign.merged" => "self.id" },
-  { cascade_copy => 0, cascade_delete => 0 },
+__PACKAGE__->belongs_to(
+  "done",
+  "Debbugs::DB::Result::Correspondent",
+  { id => "done" },
+  {
+    is_deferrable => 0,
+    join_type     => "LEFT",
+    on_delete     => "NO ACTION",
+    on_update     => "NO ACTION",
+  },
 );
 
+=head2 owner
+
+Type: belongs_to
+
+Related object: L<Debbugs::DB::Result::Correspondent>
+
+=cut
+
+__PACKAGE__->belongs_to(
+  "owner",
+  "Debbugs::DB::Result::Correspondent",
+  { id => "owner" },
+  {
+    is_deferrable => 0,
+    join_type     => "LEFT",
+    on_delete     => "NO ACTION",
+    on_update     => "NO ACTION",
+  },
+);
+
+=head2 severity
 
-# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-03-25 18:43:53
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cPIz8V6KUWZip+5Dvi7+4Q
+Type: belongs_to
+
+Related object: L<Debbugs::DB::Result::Severity>
+
+=cut
+
+__PACKAGE__->belongs_to(
+  "severity",
+  "Debbugs::DB::Result::Severity",
+  { id => "severity" },
+  { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
+);
+
+=head2 submitter
+
+Type: belongs_to
+
+Related object: L<Debbugs::DB::Result::Correspondent>
+
+=cut
+
+__PACKAGE__->belongs_to(
+  "submitter",
+  "Debbugs::DB::Result::Correspondent",
+  { id => "submitter" },
+  {
+    is_deferrable => 0,
+    join_type     => "LEFT",
+    on_delete     => "NO ACTION",
+    on_update     => "NO ACTION",
+  },
+);
 
 
+# Created by DBIx::Class::Schema::Loader v0.07045 @ 2016-09-24 14:51:07
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iaipVETTaokcFNrICfIEAw
+
+__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 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";
+    }
+}
 # You can replace this text with custom code or comments, and it will be preserved on regeneration
 1;