File Coverage

blib/lib/Module/CoreList/DBSchema.pm
Criterion Covered Total %
statement 62 64 96.8
branch 7 10 70.0
condition 7 10 70.0
subroutine 11 11 100.0
pod 5 5 100.0
total 92 100 92.0


line stmt bran cond sub pod time code
1             package Module::CoreList::DBSchema;
2              
3 5     5   125270 use strict;
  5         12  
  5         178  
4 5     5   22 use warnings;
  5         10  
  5         144  
5 5     5   3757 use Clone qw[clone];
  5         16792  
  5         487  
6 5     5   18886 use Module::CoreList;
  5         382035  
  5         114  
7 5     5   13080 use SQL::Abstract;
  5         61402  
  5         228  
8 5     5   66 use vars qw[$VERSION];
  5         11  
  5         3881  
9              
10             $VERSION = '0.06';
11              
12             my $tables = {
13             cl_perls => [
14             'perl_ver VARCHAR(20) NOT NULL',
15             'released VARCHAR(10)',
16             ],
17             cl_versions => [
18             'perl_ver VARCHAR(20) NOT NULL',
19             'mod_name VARCHAR(300) NOT NULL',
20             'mod_vers VARCHAR(30)',
21             'deprecated BOOL',
22             ],
23             cl_families => [
24             'perl_ver VARCHAR(20) NOT NULL',
25             'family VARCHAR(20) NOT NULL',
26             ],
27             cl_upstream => [
28             'mod_name VARCHAR(300) NOT NULL',
29             'upstream VARCHAR(20)',
30             ],
31             cl_bugtracker => [
32             'mod_name VARCHAR(300) NOT NULL',
33             'url TEXT',
34             ],
35             };
36              
37             my $queries = {
38             corelist => [ 'select cl_perls.perl_ver, mod_vers, released, deprecated from cl_versions,cl_perls where cl_perls.perl_ver = cl_versions.perl_ver and mod_name = ? order by cl_versions.perl_ver', 1 ],
39             };
40              
41             my $sql = SQL::Abstract->new();
42              
43             sub new {
44 4     4 1 238 my $package = shift;
45 4         12 my %opts = @_;
46 4         19 $opts{lc $_} = delete $opts{$_} for keys %opts;
47 4         17 my $self = bless \%opts, $package;
48 4         21 return $self;
49             }
50              
51             sub tables {
52 1     1 1 51 my $clone = clone( $tables );
53 1 50       5 return %{ $clone } if wantarray;
  1         8  
54 0         0 return $clone;
55             }
56              
57             sub data {
58 1     1 1 7 my $self = shift;
59 1         3 my %opts = @_;
60 1         4 $opts{lc $_} = delete $opts{$_} for keys %opts;
61 1   50     10 my $prefix = $opts{prefix} || '';
62 1         3 my $data = [];
63 1         46 foreach my $perl ( keys %Module::CoreList::version ) {
64 120         59881 push @{ $data }, [ $sql->insert( $prefix . 'cl_perls', [ $perl, $Module::CoreList::released{$perl} ] ) ];
  120         2144  
65 120         30472 foreach my $mod ( keys %{ $Module::CoreList::version{ $perl } } ) {
  120         920  
66 65696         23150923 my $modver = $Module::CoreList::version{ $perl }{ $mod };
67 65696 100       753406 $modver = '' unless $modver;
68 65696   100     298968 my $deprecated = $Module::CoreList::deprecated{ $perl }{ $mod } || 0;
69 65696         13461884 push @{ $data }, [
  65696         406105  
70             $sql->insert( $prefix . 'cl_versions', [ $perl, $mod, $modver, $deprecated ] )
71             ];
72             }
73             }
74 1         543 foreach my $family ( keys %Module::CoreList::families ) {
75 21         54 push @{ $data }, [
  102         15547  
76             $sql->insert( $prefix . 'cl_families', [ $_, $family ] )
77 21         3312 ] for @{ $Module::CoreList::families{ $family } };
78             }
79 1         328 foreach my $mod ( keys %Module::CoreList::upstream ) {
80 408   50     75169 push @{ $data }, [
  408         2671  
81             $sql->insert( $prefix . 'cl_upstream', [ $mod, ( $Module::CoreList::upstream{ $mod } || '' ) ] )
82             ];
83             }
84 1         371 foreach my $mod ( keys %Module::CoreList::bug_tracker ) {
85 406   100     68868 push @{ $data }, [
  406         2907  
86             $sql->insert( $prefix . 'cl_bugtracker', [ $mod, ( $Module::CoreList::bug_tracker{ $mod } || '' ) ] )
87             ];
88             }
89 1 50       289 return @{ $data } if wantarray;
  0         0  
90 1         8 return $data;
91             }
92              
93             sub queries {
94 1     1 1 9 return keys %{ $queries };
  1         6  
95             }
96              
97             sub query {
98 2     2 1 996 my $self = shift;
99 2   50     7 my $query = shift || return;
100 2 50       6 return unless exists $queries->{ $query };
101 2         4 my $sql = $queries->{ $query };
102 2 100       7 return @{ $sql } if wantarray;
  1         5  
103 1         3 return $sql;
104             }
105              
106             q[Modules are our business];
107              
108             __END__