Merge 'sybase' into 'trunk'
[dbsrgits/DBIx-Class.git] / examples / Schema / testdb.pl
1 #!/usr/bin/perl -w
2
3 use MyDatabase::Main;
4 use strict;
5
6 my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db');
7 # for other DSNs, e.g. MySql, see the perldoc for the relevant dbd
8 # driver, e.g perldoc L<DBD::mysql>.
9
10 get_tracks_by_cd('Bad');
11 get_tracks_by_artist('Michael Jackson');
12
13 get_cd_by_track('Stan');
14 get_cds_by_artist('Michael Jackson');
15
16 get_artist_by_track('Dirty Diana');
17 get_artist_by_cd('The Marshall Mathers LP');
18
19
20 sub get_tracks_by_cd {
21     my $cdtitle = shift;
22     print "get_tracks_by_cd($cdtitle):\n";
23     my $rs = $schema->resultset('Track')->search(
24         {
25             'cd.title' => $cdtitle
26         },
27         {
28             join     => [qw/ cd /],
29             prefetch => [qw/ cd /]
30         }
31     );
32     while (my $track = $rs->next) {
33         print $track->title . "\n";
34     }
35     print "\n";
36 }
37
38 sub get_tracks_by_artist {
39     my $artistname = shift;
40     print "get_tracks_by_artist($artistname):\n";
41     my $rs = $schema->resultset('Track')->search(
42         {
43             'artist.name' => $artistname
44         },
45         {
46             join => {
47                 'cd' => 'artist'
48             },
49         }
50     );
51     while (my $track = $rs->next) {
52         print $track->title . "\n";
53     }
54     print "\n";
55 }
56
57
58 sub get_cd_by_track {
59     my $tracktitle = shift;
60     print "get_cd_by_track($tracktitle):\n";
61     my $rs = $schema->resultset('Cd')->search(
62         {
63             'tracks.title' => $tracktitle
64         },
65         {
66             join     => [qw/ tracks /],
67         }
68     );
69     my $cd = $rs->first;
70     print $cd->title . "\n\n";
71 }
72
73 sub get_cds_by_artist {
74     my $artistname = shift;
75     print "get_cds_by_artist($artistname):\n";
76     my $rs = $schema->resultset('Cd')->search(
77         {
78             'artist.name' => $artistname
79         },
80         {
81             join     => [qw/ artist /],
82             prefetch => [qw/ artist /]
83         }
84     );
85     while (my $cd = $rs->next) {
86         print $cd->title . "\n";
87     }
88     print "\n";
89 }
90
91
92
93 sub get_artist_by_track {
94     my $tracktitle = shift;
95     print "get_artist_by_track($tracktitle):\n";
96     my $rs = $schema->resultset('Artist')->search(
97         {
98             'tracks.title' => $tracktitle
99         },
100         {
101             join => {
102                 'cds' => 'tracks'
103             }
104         }
105     );
106     my $artist = $rs->first;
107     print $artist->name . "\n\n";
108 }
109
110          
111 sub get_artist_by_cd {
112     my $cdtitle = shift;
113     print "get_artist_by_cd($cdtitle):\n";
114     my $rs = $schema->resultset('Artist')->search(
115         {
116             'cds.title' => $cdtitle
117         },
118         {
119             join     => [qw/ cds /],
120         }
121     );
122     my $artist = $rs->first;
123     print $artist->name . "\n\n";
124 }