small tool to query cpan deps
[dbsrgits/DBIx-Class.git] / maint / joint_deps.pl
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];