1 # This module is part of debbugs, and
2 # is released under the terms of the GPL version 3, or any later
3 # version (at your option). See the file README and COPYING for more
5 # Copyright 2018 by Don Armstrong <don@donarmstrong.com>.
7 package Debbugs::Package;
11 Debbugs::Package -- OO interface to packages
16 Debbugs::Package->new(schema => $s,binaries => [qw(foo)],sources => [qw(bar)]);
31 extends 'Debbugs::OOBase';
33 has name => (is => 'ro', isa => 'Str',
36 builder => '_build_name',
39 has type => (is => 'ro', isa => 'Str',
41 builder => '_build_type',
42 clearer => '_clear_type',
45 has valid => (is => 'ro', isa => 'Bool',
47 builder => '_build_valid',
48 writer => '_set_valid',
51 has 'sources' => (is => 'ro',isa => 'Array');
52 has 'dists' => (is => 'ro',isa => 'Array');
54 has 'versions' => (is => 'ro',isa => 'Array');
56 # gets used to retrieve packages
57 has 'package_collection' => (is => 'ro',
58 isa => 'Debbugs::Collection::Package',
59 builder => '_build_package_collection',
63 sub _build_package_collection {
64 return Debbugs::Collection::Package->new();
70 my @binaries = $self->binaries;
71 my @sources = $self->sources;
72 my $s = $self->schema;
73 carp "No schema" unless $self->schema;
75 my $src_rs = $s->resultset('SrcVer')->
76 search({'src_pkg.pkg'=>[$self->sources],
77 -or => {'suite.codename' => [make_list($param{dist})],
78 'suite.suite_name' => [make_list($param{dist})],
83 src_associations=>'suite'},
85 '+select' => [qw(src_pkg.pkg),
87 qw(src_associations.modified),
88 q(CONCAT(src_pkg.pkg,'/',me.ver))],
89 '+as' => ['src_pkg_name','codename',
92 result_class => 'DBIx::Class::ResultClass::HashRefInflator',
93 order_by => {-desc => 'me.ver'},
101 $self->populate() unless $self->initialized;
106 $self->populate() unless $self->initialized;
110 package Debbugs::Package::Version;
112 use base qw(Class::Accessor);
113 __PACKAGE__->mk_ro_accessors(qw(schema ));
124 package Debbugs::Package::Package;
126 package Debbugs::Package::Maintainer;
134 # indent-tabs-mode: nil
135 # cperl-indent-level: 4