]> git.donarmstrong.com Git - debbugs.git/blob - Debbugs/DB/Result/Bug.pm
Update DB Schema version to 6
[debbugs.git] / Debbugs / DB / Result / Bug.pm
1 use utf8;
2 package Debbugs::DB::Result::Bug;
3
4 # Created by DBIx::Class::Schema::Loader
5 # DO NOT MODIFY THE FIRST PART OF THIS FILE
6
7 =head1 NAME
8
9 Debbugs::DB::Result::Bug - Bugs
10
11 =cut
12
13 use strict;
14 use warnings;
15
16 use base 'DBIx::Class::Core';
17 use Carp;
18
19 =head1 COMPONENTS LOADED
20
21 =over 4
22
23 =item * L<DBIx::Class::InflateColumn::DateTime>
24
25 =item * L<DBIx::Class::TimeStamp>
26
27 =back
28
29 =cut
30
31 __PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp");
32
33 =head1 TABLE: C<bug>
34
35 =cut
36
37 __PACKAGE__->table("bug");
38
39 =head1 ACCESSORS
40
41 =head2 id
42
43   data_type: 'integer'
44   is_nullable: 0
45
46 Bug number
47
48 =head2 creation
49
50   data_type: 'timestamp with time zone'
51   default_value: current_timestamp
52   is_nullable: 0
53   original: {default_value => \"now()"}
54
55 Time bug created
56
57 =head2 log_modified
58
59   data_type: 'timestamp with time zone'
60   default_value: current_timestamp
61   is_nullable: 0
62   original: {default_value => \"now()"}
63
64 Time bug log was last modified
65
66 =head2 last_modified
67
68   data_type: 'timestamp with time zone'
69   default_value: current_timestamp
70   is_nullable: 0
71   original: {default_value => \"now()"}
72
73 Time bug status was last modified
74
75 =head2 archived
76
77   data_type: 'boolean'
78   default_value: false
79   is_nullable: 0
80
81 True if bug has been archived
82
83 =head2 unarchived
84
85   data_type: 'timestamp with time zone'
86   is_nullable: 1
87
88 Time bug was last unarchived; null if bug has never been unarchived
89
90 =head2 forwarded
91
92   data_type: 'text'
93   default_value: (empty string)
94   is_nullable: 0
95
96 Where bug has been forwarded to; empty if it has not been forwarded
97
98 =head2 summary
99
100   data_type: 'text'
101   default_value: (empty string)
102   is_nullable: 0
103
104 Summary of the bug; empty if it has no summary
105
106 =head2 outlook
107
108   data_type: 'text'
109   default_value: (empty string)
110   is_nullable: 0
111
112 Outlook of the bug; empty if it has no outlook
113
114 =head2 subject
115
116   data_type: 'text'
117   is_nullable: 0
118
119 Subject of the bug
120
121 =head2 severity
122
123   data_type: 'integer'
124   is_foreign_key: 1
125   is_nullable: 0
126
127 =head2 done
128
129   data_type: 'integer'
130   is_foreign_key: 1
131   is_nullable: 1
132
133 Individual who did the -done; empty if it has never been -done
134
135 =head2 done_full
136
137   data_type: 'text'
138   default_value: (empty string)
139   is_nullable: 0
140
141 =head2 owner
142
143   data_type: 'integer'
144   is_foreign_key: 1
145   is_nullable: 1
146
147 Individual who owns this bug; empty if no one owns it
148
149 =head2 owner_full
150
151   data_type: 'text'
152   default_value: (empty string)
153   is_nullable: 0
154
155 =head2 submitter
156
157   data_type: 'integer'
158   is_foreign_key: 1
159   is_nullable: 1
160
161 Individual who submitted this bug; empty if there is no submitter
162
163 =head2 submitter_full
164
165   data_type: 'text'
166   default_value: (empty string)
167   is_nullable: 0
168
169 =head2 unknown_packages
170
171   data_type: 'text'
172   default_value: (empty string)
173   is_nullable: 0
174
175 Package name if the package is not known
176
177 =cut
178
179 __PACKAGE__->add_columns(
180   "id",
181   { data_type => "integer", is_nullable => 0 },
182   "creation",
183   {
184     data_type     => "timestamp with time zone",
185     default_value => \"current_timestamp",
186     is_nullable   => 0,
187     original      => { default_value => \"now()" },
188   },
189   "log_modified",
190   {
191     data_type     => "timestamp with time zone",
192     default_value => \"current_timestamp",
193     is_nullable   => 0,
194     original      => { default_value => \"now()" },
195   },
196   "last_modified",
197   {
198     data_type     => "timestamp with time zone",
199     default_value => \"current_timestamp",
200     is_nullable   => 0,
201     original      => { default_value => \"now()" },
202   },
203   "archived",
204   { data_type => "boolean", default_value => \"false", is_nullable => 0 },
205   "unarchived",
206   { data_type => "timestamp with time zone", is_nullable => 1 },
207   "forwarded",
208   { data_type => "text", default_value => "", is_nullable => 0 },
209   "summary",
210   { data_type => "text", default_value => "", is_nullable => 0 },
211   "outlook",
212   { data_type => "text", default_value => "", is_nullable => 0 },
213   "subject",
214   { data_type => "text", is_nullable => 0 },
215   "severity",
216   { data_type => "integer", is_foreign_key => 1, is_nullable => 0 },
217   "done",
218   { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
219   "done_full",
220   { data_type => "text", default_value => "", is_nullable => 0 },
221   "owner",
222   { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
223   "owner_full",
224   { data_type => "text", default_value => "", is_nullable => 0 },
225   "submitter",
226   { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
227   "submitter_full",
228   { data_type => "text", default_value => "", is_nullable => 0 },
229   "unknown_packages",
230   { data_type => "text", default_value => "", is_nullable => 0 },
231 );
232
233 =head1 PRIMARY KEY
234
235 =over 4
236
237 =item * L</id>
238
239 =back
240
241 =cut
242
243 __PACKAGE__->set_primary_key("id");
244
245 =head1 RELATIONS
246
247 =head2 bug_affects_binpackages
248
249 Type: has_many
250
251 Related object: L<Debbugs::DB::Result::BugAffectsBinpackage>
252
253 =cut
254
255 __PACKAGE__->has_many(
256   "bug_affects_binpackages",
257   "Debbugs::DB::Result::BugAffectsBinpackage",
258   { "foreign.bug" => "self.id" },
259   { cascade_copy => 0, cascade_delete => 0 },
260 );
261
262 =head2 bug_affects_srcpackages
263
264 Type: has_many
265
266 Related object: L<Debbugs::DB::Result::BugAffectsSrcpackage>
267
268 =cut
269
270 __PACKAGE__->has_many(
271   "bug_affects_srcpackages",
272   "Debbugs::DB::Result::BugAffectsSrcpackage",
273   { "foreign.bug" => "self.id" },
274   { cascade_copy => 0, cascade_delete => 0 },
275 );
276
277 =head2 bug_binpackages
278
279 Type: has_many
280
281 Related object: L<Debbugs::DB::Result::BugBinpackage>
282
283 =cut
284
285 __PACKAGE__->has_many(
286   "bug_binpackages",
287   "Debbugs::DB::Result::BugBinpackage",
288   { "foreign.bug" => "self.id" },
289   { cascade_copy => 0, cascade_delete => 0 },
290 );
291
292 =head2 bug_blocks_blocks
293
294 Type: has_many
295
296 Related object: L<Debbugs::DB::Result::BugBlock>
297
298 =cut
299
300 __PACKAGE__->has_many(
301   "bug_blocks_blocks",
302   "Debbugs::DB::Result::BugBlock",
303   { "foreign.blocks" => "self.id" },
304   { cascade_copy => 0, cascade_delete => 0 },
305 );
306
307 =head2 bug_blocks_bugs
308
309 Type: has_many
310
311 Related object: L<Debbugs::DB::Result::BugBlock>
312
313 =cut
314
315 __PACKAGE__->has_many(
316   "bug_blocks_bugs",
317   "Debbugs::DB::Result::BugBlock",
318   { "foreign.bug" => "self.id" },
319   { cascade_copy => 0, cascade_delete => 0 },
320 );
321
322 =head2 bug_merged_bugs
323
324 Type: has_many
325
326 Related object: L<Debbugs::DB::Result::BugMerged>
327
328 =cut
329
330 __PACKAGE__->has_many(
331   "bug_merged_bugs",
332   "Debbugs::DB::Result::BugMerged",
333   { "foreign.bug" => "self.id" },
334   { cascade_copy => 0, cascade_delete => 0 },
335 );
336
337 =head2 bug_mergeds_merged
338
339 Type: has_many
340
341 Related object: L<Debbugs::DB::Result::BugMerged>
342
343 =cut
344
345 __PACKAGE__->has_many(
346   "bug_mergeds_merged",
347   "Debbugs::DB::Result::BugMerged",
348   { "foreign.merged" => "self.id" },
349   { cascade_copy => 0, cascade_delete => 0 },
350 );
351
352 =head2 bug_messages
353
354 Type: has_many
355
356 Related object: L<Debbugs::DB::Result::BugMessage>
357
358 =cut
359
360 __PACKAGE__->has_many(
361   "bug_messages",
362   "Debbugs::DB::Result::BugMessage",
363   { "foreign.bug" => "self.id" },
364   { cascade_copy => 0, cascade_delete => 0 },
365 );
366
367 =head2 bug_srcpackages
368
369 Type: has_many
370
371 Related object: L<Debbugs::DB::Result::BugSrcpackage>
372
373 =cut
374
375 __PACKAGE__->has_many(
376   "bug_srcpackages",
377   "Debbugs::DB::Result::BugSrcpackage",
378   { "foreign.bug" => "self.id" },
379   { cascade_copy => 0, cascade_delete => 0 },
380 );
381
382 =head2 bug_status_caches
383
384 Type: has_many
385
386 Related object: L<Debbugs::DB::Result::BugStatusCache>
387
388 =cut
389
390 __PACKAGE__->has_many(
391   "bug_status_caches",
392   "Debbugs::DB::Result::BugStatusCache",
393   { "foreign.bug" => "self.id" },
394   { cascade_copy => 0, cascade_delete => 0 },
395 );
396
397 =head2 bug_tags
398
399 Type: has_many
400
401 Related object: L<Debbugs::DB::Result::BugTag>
402
403 =cut
404
405 __PACKAGE__->has_many(
406   "bug_tags",
407   "Debbugs::DB::Result::BugTag",
408   { "foreign.bug" => "self.id" },
409   { cascade_copy => 0, cascade_delete => 0 },
410 );
411
412 =head2 bug_user_tags
413
414 Type: has_many
415
416 Related object: L<Debbugs::DB::Result::BugUserTag>
417
418 =cut
419
420 __PACKAGE__->has_many(
421   "bug_user_tags",
422   "Debbugs::DB::Result::BugUserTag",
423   { "foreign.bug" => "self.id" },
424   { cascade_copy => 0, cascade_delete => 0 },
425 );
426
427 =head2 bug_vers
428
429 Type: has_many
430
431 Related object: L<Debbugs::DB::Result::BugVer>
432
433 =cut
434
435 __PACKAGE__->has_many(
436   "bug_vers",
437   "Debbugs::DB::Result::BugVer",
438   { "foreign.bug" => "self.id" },
439   { cascade_copy => 0, cascade_delete => 0 },
440 );
441
442 =head2 done
443
444 Type: belongs_to
445
446 Related object: L<Debbugs::DB::Result::Correspondent>
447
448 =cut
449
450 __PACKAGE__->belongs_to(
451   "done",
452   "Debbugs::DB::Result::Correspondent",
453   { id => "done" },
454   {
455     is_deferrable => 0,
456     join_type     => "LEFT",
457     on_delete     => "NO ACTION",
458     on_update     => "NO ACTION",
459   },
460 );
461
462 =head2 owner
463
464 Type: belongs_to
465
466 Related object: L<Debbugs::DB::Result::Correspondent>
467
468 =cut
469
470 __PACKAGE__->belongs_to(
471   "owner",
472   "Debbugs::DB::Result::Correspondent",
473   { id => "owner" },
474   {
475     is_deferrable => 0,
476     join_type     => "LEFT",
477     on_delete     => "NO ACTION",
478     on_update     => "NO ACTION",
479   },
480 );
481
482 =head2 severity
483
484 Type: belongs_to
485
486 Related object: L<Debbugs::DB::Result::Severity>
487
488 =cut
489
490 __PACKAGE__->belongs_to(
491   "severity",
492   "Debbugs::DB::Result::Severity",
493   { id => "severity" },
494   { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
495 );
496
497 =head2 submitter
498
499 Type: belongs_to
500
501 Related object: L<Debbugs::DB::Result::Correspondent>
502
503 =cut
504
505 __PACKAGE__->belongs_to(
506   "submitter",
507   "Debbugs::DB::Result::Correspondent",
508   { id => "submitter" },
509   {
510     is_deferrable => 0,
511     join_type     => "LEFT",
512     on_delete     => "NO ACTION",
513     on_update     => "NO ACTION",
514   },
515 );
516
517
518 # Created by DBIx::Class::Schema::Loader v0.07045 @ 2016-09-24 14:51:07
519 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iaipVETTaokcFNrICfIEAw
520
521 __PACKAGE__->many_to_many(tags => 'bug_tags','tag');
522 __PACKAGE__->many_to_many(user_tags => 'bug_user_tags','user_tag');
523 __PACKAGE__->many_to_many(srcpackages => 'bug_srcpackages','src_pkg');
524 __PACKAGE__->many_to_many(binpackages => 'bug_binpackages','bin_pkg');
525 __PACKAGE__->many_to_many(affects_binpackages => 'bug_affects_binpackages','bin_pkg');
526 __PACKAGE__->many_to_many(affects_srcpackages => 'bug_affects_srcpackages','src_pkg');
527 __PACKAGE__->many_to_many(messages => 'bug_messages','message');
528
529 sub sqlt_deploy_hook {
530     my ($self, $sqlt_table) = @_;
531     # CREATE INDEX bug_idx_owner ON bug(owner);
532     # CREATE INDEX bug_idx_submitter ON bug(submitter);
533     # CREATE INDEX bug_idx_done ON bug(done);
534     # CREATE INDEX bug_idx_forwarded ON bug(forwarded);
535     # CREATE INDEX bug_idx_last_modified ON bug(last_modified);
536     # CREATE INDEX bug_idx_severity ON bug(severity);
537     # CREATE INDEX bug_idx_creation ON bug(creation);
538     # CREATE INDEX bug_idx_log_modified ON bug(log_modified);
539     for my $idx (qw(owner submitter done forwarded last_modified),
540                  qw(severity creation log_modified),
541                 ) {
542         $sqlt_table->add_index(name => 'bug_idx'.$idx,
543                                fields => [$idx]);
544     }
545 }
546
547 sub set_related_packages {
548     my ($self,$relationship,$pkgs,$pkg_cache) = @_;
549
550     my @pkg_ids;
551     if ($relationship =~ /binpackages/) {
552         for my $pkg (@{$pkgs}) {
553             push @pkg_ids,
554               $self->result_source->schema->resultset('BinPkg')->
555               get_bin_pkg_id($pkg);
556         }
557     } elsif ($relationship =~ /srcpackages/) {
558         for my $pkg (@{$pkgs}) {
559             push @pkg_ids,
560               $self->result_source->schema->resultset('SrcPkg')->
561               get_src_pkg_id($pkg);
562         }
563     } else {
564         croak "Unsupported relationship $relationship";
565     }
566     if ($relationship eq 'binpackages') {
567         $self->set_binpackages([map {{id => $_}} @pkg_ids]);
568     } elsif ($relationship eq 'srcpackages') {
569         $self->set_srcpackages([map {{id => $_}} @pkg_ids]);
570     } elsif ($relationship eq 'affects_binpackages') {
571         $self->set_affects_binpackages([map {{id => $_}} @pkg_ids]);
572     } elsif ($relationship eq 'affects_srcpackages') {
573         $self->set_affects_srcpackages([map {{id => $_}} @pkg_ids]);
574     } else {
575         croak "Unsupported relationship $relationship";
576     }
577 }
578 # You can replace this text with custom code or comments, and it will be preserved on regeneration
579 1;