X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FBug.pm;h=38ebbe7ee034a0f069b06246dc6031f99bb99c76;hb=0f7cb608295bc9cb554d8f6555ca0c0987fdabf1;hp=539e7589a4035160e3c6bd655c5bba0e57c0c28a;hpb=7908c761e8b425f92178aa73f3aba1edce3ab438;p=debbugs.git diff --git a/Debbugs/Bug.pm b/Debbugs/Bug.pm index 539e758..38ebbe7 100644 --- a/Debbugs/Bug.pm +++ b/Debbugs/Bug.pm @@ -107,10 +107,7 @@ has correspondent_collection => ); sub _build_correspondent_collection { my $self = shift; - if ($self->has_schema) { - return Debbugs::Collection::Correspondent->new(schema => $self->schema); - } - return Debbugs::Collection::Correspondent->new(); + return Debbugs::Collection::Correspondent->new($self->schema_argument); } sub reset { @@ -372,11 +369,23 @@ sub is_merged { return $self->mergedwith->count > 0; } +has _mergedwith_array => + (is => 'ro', + isa => 'ArrayRef[Int]', + builder => '_build_mergedwith_array', + lazy => 1, + ); + +sub _build_mergedwith_array { + my $self = shift; + return [sort {$a <=> $b} + $self->_split_if_defined('mergedwith')]; +} + sub _build_mergedwith { my $self = shift; return $self->bug_collection-> - limit(sort {$a <=> $b} - $self->_split_if_defined('mergedwith')); + limit(@{$self->_mergedwith_array//[]}); } sub _build_pending { return $_[0]->status->{pending} // ''; @@ -581,7 +590,7 @@ sub filter { return 1 if $self->matches($param{exclude}); } if (exists $param{repeat_merged} and not $param{repeat_merged}) { - my @merged = sort {$a<=>$b} $self->bug, map {$_->bug} $self->mergedwith->members; + my @merged = sort {$a<=>$b} $self->bug, @{$self->_mergedwith_array // []}; return 1 if first {sub {defined $_}} @{$param{seen_merged}}{@merged}; @{$param{seen_merged}}{@merged} = (1) x @merged; @@ -673,6 +682,12 @@ sub related_packages_and_versions { return @return; } +sub CARP_TRACE { + my $self = shift; + return 'Debbugs::Bug={bug='.$self->bug.'}'; +} + +__PACKAGE__->meta->make_immutable; no Mouse; 1;