X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FDB%2FResult%2FBug.pm;fp=Debbugs%2FDB%2FResult%2FBug.pm;h=561c0c1dbd6b33dfa4897253db00cf8dc2595043;hb=53c435119200ab9b1c2538a96b8374c51a078855;hp=0000000000000000000000000000000000000000;hpb=0e8f07fda6e40b5967d9c6b28b3200db22766343;p=debbugs.git diff --git a/Debbugs/DB/Result/Bug.pm b/Debbugs/DB/Result/Bug.pm new file mode 100644 index 0000000..561c0c1 --- /dev/null +++ b/Debbugs/DB/Result/Bug.pm @@ -0,0 +1,582 @@ +use utf8; +package Debbugs::DB::Result::Bug; + +# Created by DBIx::Class::Schema::Loader +# DO NOT MODIFY THE FIRST PART OF THIS FILE + +=head1 NAME + +Debbugs::DB::Result::Bug - Bugs + +=cut + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +=head1 COMPONENTS LOADED + +=over 4 + +=item * L + +=item * L + +=back + +=cut + +__PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp"); + +=head1 TABLE: C + +=cut + +__PACKAGE__->table("bug"); + +=head1 ACCESSORS + +=head2 id + + data_type: 'integer' + is_nullable: 0 + +Bug number + +=head2 creation + + data_type: 'timestamp with time zone' + default_value: current_timestamp + is_nullable: 0 + original: {default_value => \"now()"} + +Time bug created + +=head2 log_modified + + data_type: 'timestamp with time zone' + default_value: current_timestamp + is_nullable: 0 + original: {default_value => \"now()"} + +Time bug log was last modified + +=head2 last_modified + + data_type: 'timestamp with time zone' + default_value: current_timestamp + is_nullable: 0 + original: {default_value => \"now()"} + +Time bug status was last modified + +=head2 archived + + data_type: 'boolean' + default_value: false + is_nullable: 0 + +True if bug has been archived + +=head2 unarchived + + data_type: 'timestamp with time zone' + is_nullable: 1 + +Time bug was last unarchived; null if bug has never been unarchived + +=head2 forwarded + + data_type: 'text' + default_value: (empty string) + is_nullable: 0 + +Where bug has been forwarded to; empty if it has not been forwarded + +=head2 summary + + data_type: 'text' + default_value: (empty string) + is_nullable: 0 + +Summary of the bug; empty if it has no summary + +=head2 outlook + + data_type: 'text' + default_value: (empty string) + is_nullable: 0 + +Outlook of the bug; empty if it has no outlook + +=head2 subject + + data_type: 'text' + is_nullable: 0 + +Subject of the bug + +=head2 severity + + 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 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 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' + default_value: (empty string) + is_nullable: 0 + +Package name if the package is not known + +=cut + +__PACKAGE__->add_columns( + "id", + { data_type => "integer", is_nullable => 0 }, + "creation", + { + data_type => "timestamp with time zone", + default_value => \"current_timestamp", + is_nullable => 0, + original => { default_value => \"now()" }, + }, + "log_modified", + { + data_type => "timestamp with time zone", + default_value => \"current_timestamp", + is_nullable => 0, + original => { default_value => \"now()" }, + }, + "last_modified", + { + data_type => "timestamp with time zone", + default_value => \"current_timestamp", + is_nullable => 0, + original => { default_value => \"now()" }, + }, + "archived", + { data_type => "boolean", default_value => \"false", is_nullable => 0 }, + "unarchived", + { data_type => "timestamp with time zone", is_nullable => 1 }, + "forwarded", + { data_type => "text", default_value => "", is_nullable => 0 }, + "summary", + { data_type => "text", default_value => "", is_nullable => 0 }, + "outlook", + { 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 }, +); + +=head1 PRIMARY KEY + +=over 4 + +=item * L + +=back + +=cut + +__PACKAGE__->set_primary_key("id"); + +=head1 RELATIONS + +=head2 bug_affects_binpackages + +Type: has_many + +Related object: L + +=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 + +=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 + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_binpackages", + "Debbugs::DB::Result::BugBinpackage", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_blocks_blocks + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_blocks_blocks", + "Debbugs::DB::Result::BugBlock", + { "foreign.blocks" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_blocks_bugs + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_blocks_bugs", + "Debbugs::DB::Result::BugBlock", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_merged_bugs + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_merged_bugs", + "Debbugs::DB::Result::BugMerged", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_mergeds_merged + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_mergeds_merged", + "Debbugs::DB::Result::BugMerged", + { "foreign.merged" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_messages + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_messages", + "Debbugs::DB::Result::BugMessage", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_srcpackages + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_srcpackages", + "Debbugs::DB::Result::BugSrcpackage", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_status_caches + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_status_caches", + "Debbugs::DB::Result::BugStatusCache", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_tags + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_tags", + "Debbugs::DB::Result::BugTag", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_user_tags + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_user_tags", + "Debbugs::DB::Result::BugUserTag", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 bug_vers + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "bug_vers", + "Debbugs::DB::Result::BugVer", + { "foreign.bug" => "self.id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 done + +Type: belongs_to + +Related object: L + +=cut + +__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 + +=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 + +Type: belongs_to + +Related object: L + +=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 + +=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 + +use Carp; +use List::MoreUtils 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;