]> git.donarmstrong.com Git - debbugs.git/blob - Debbugs/Package.pm
d73474c684117bd363831a2a6223693447c81b36
[debbugs.git] / Debbugs / Package.pm
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
4 # information.
5 # Copyright 2018 by Don Armstrong <don@donarmstrong.com>.
6
7 package Debbugs::Package;
8
9 =head1 NAME
10
11 Debbugs::Package -- OO interface to packages
12
13 =head1 SYNOPSIS
14
15    use Debbugs::Package;
16    Debbugs::Package->new(schema => $s,binaries => [qw(foo)],sources => [qw(bar)]);
17
18 =head1 DESCRIPTION
19
20
21
22 =cut
23
24 use warnings;
25 use strict;
26
27 use Mouse;
28
29 use Debbugs::Version;
30
31 extends 'Debbugs::OOBase';
32
33 has name => (is => 'ro', isa => 'Str',
34              lazy => 1,
35              required => 1,
36              builder => '_build_name',
37             );
38
39 has type => (is => 'ro', isa => 'Str',
40              lazy => 1,
41              builder => '_build_type',
42              clearer => '_clear_type',
43             );
44
45 has valid => (is => 'ro', isa => 'Bool',
46               lazy => 1,
47               builder => '_build_valid',
48               writer => '_set_valid',
49              );
50
51 has 'sources' => (is => 'ro',isa => 'Array');
52 has 'dists' => (is => 'ro',isa => 'Array');
53
54 has 'versions' => (is => 'ro',isa => 'Array');
55
56 # gets used to retrieve packages
57 has 'package_collection' => (is => 'ro',
58                              isa => 'Debbugs::Collection::Package',
59                              builder => '_build_package_collection',
60                              lazy => 1,
61                             );
62
63 sub _build_package_collection {
64     return Debbugs::Collection::Package->new();
65 }
66
67 sub populate {
68     my $self = shift;
69
70     my @binaries = $self->binaries;
71     my @sources = $self->sources;
72     my $s = $self->schema;
73     carp "No schema" unless $self->schema;
74
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})],
79                        }
80                },
81               {join => ['src_pkg',
82                        {
83                         src_associations=>'suite'},
84                        ],
85                '+select' => [qw(src_pkg.pkg),
86                              qw(suite.codename),
87                              qw(src_associations.modified),
88                              q(CONCAT(src_pkg.pkg,'/',me.ver))],
89                '+as' => ['src_pkg_name','codename',
90                          'modified_time',
91                          qw(src_pkg_ver)],
92                result_class => 'DBIx::Class::ResultClass::HashRefInflator',
93                order_by => {-desc => 'me.ver'},
94               },
95               );
96     
97 }
98
99 sub packages {
100     my $self = shift;
101     $self->populate() unless $self->initialized;
102 }
103
104 sub versions {
105     my $self = shift;
106     $self->populate() unless $self->initialized;
107 }
108
109
110 package Debbugs::Package::Version;
111
112 use base qw(Class::Accessor);
113 __PACKAGE__->mk_ro_accessors(qw(schema ));
114
115 sub version {
116 }
117
118 sub type {
119
120 }
121
122 sub 
123
124 package Debbugs::Package::Package;
125
126 package Debbugs::Package::Maintainer;
127
128
129 1;
130
131
132 __END__
133 # Local Variables:
134 # indent-tabs-mode: nil
135 # cperl-indent-level: 4
136 # End: