Commit | Line | Data |
deeb88bc |
1 | #!/usr/bin/perl |
2 | |
3 | use warnings; |
4 | use strict; |
5 | |
6 | use CPANDB; |
7 | use DBIx::Class::Schema::Loader 0.05; |
8 | use Data::Dumper::Concise; |
9 | |
10 | { |
11 | package CPANDB::Schema; |
12 | use base qw/DBIx::Class::Schema::Loader/; |
13 | |
14 | __PACKAGE__->loader_options ( |
15 | naming => 'v5', |
16 | ); |
17 | } |
18 | |
19 | my $s = CPANDB::Schema->connect (sub { CPANDB->dbh } ); |
20 | |
21 | # reference names are unstable - just create rels manually |
22 | # is there a saner way to do that? |
23 | my $distclass = $s->class('Distribution'); |
24 | $distclass->has_many ( |
25 | 'deps', |
26 | $s->class('Dependency'), |
27 | 'distribution', |
28 | ); |
29 | $s->unregister_source ('Distribution'); |
30 | $s->register_class ('Distribution', $distclass); |
31 | |
32 | |
33 | # a proof of concept how to find out who uses us *AND* SQLT |
34 | my $us_and_sqlt = $s->resultset('Distribution')->search ( |
35 | { |
36 | 'deps.dependency' => 'DBIx-Class', |
37 | 'deps_2.dependency' => 'SQL-Translator', |
38 | }, |
39 | { |
40 | join => [qw/deps deps/], |
41 | order_by => 'me.author', |
42 | select => [ 'me.distribution', 'me.author', map { "$_.phase" } (qw/deps deps_2/)], |
43 | as => [qw/dist_name dist_author req_dbic_at req_sqlt_at/], |
44 | result_class => 'DBIx::Class::ResultClass::HashRefInflator', |
45 | }, |
46 | ); |
47 | |
48 | print Dumper [$us_and_sqlt->all]; |