8 use Path::Class 'file';
9 my $db_fn = file($INC{'MyApp/Schema.pm'})->dir->parent->file('db/example.db');
11 # for other DSNs, e.g. MySql, see the perldoc for the relevant dbd
12 # driver, e.g perldoc L<DBD::mysql>.
13 my $schema = MyApp::Schema->connect("dbi:SQLite:$db_fn");
15 get_tracks_by_cd('Bad');
16 get_tracks_by_artist('Michael Jackson');
18 get_cd_by_track('Stan');
19 get_cds_by_artist('Michael Jackson');
21 get_artist_by_track('Dirty Diana');
22 get_artist_by_cd('The Marshall Mathers LP');
25 sub get_tracks_by_cd {
27 print "get_tracks_by_cd($cdtitle):\n";
28 my $rs = $schema->resultset('Track')->search(
30 'cd.title' => $cdtitle
36 while (my $track = $rs->next) {
37 print $track->title . "\n";
42 sub get_tracks_by_artist {
43 my $artistname = shift;
44 print "get_tracks_by_artist($artistname):\n";
45 my $rs = $schema->resultset('Track')->search(
47 'artist.name' => $artistname
55 while (my $track = $rs->next) {
56 print $track->title . "\n";
62 my $tracktitle = shift;
63 print "get_cd_by_track($tracktitle):\n";
64 my $rs = $schema->resultset('Cd')->search(
66 'tracks.title' => $tracktitle
69 join => [qw/ tracks /],
73 print $cd->title . "\n\n";
76 sub get_cds_by_artist {
77 my $artistname = shift;
78 print "get_cds_by_artist($artistname):\n";
79 my $rs = $schema->resultset('Cd')->search(
81 'artist.name' => $artistname
84 join => [qw/ artist /],
87 while (my $cd = $rs->next) {
88 print $cd->title . "\n";
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(
98 'tracks.title' => $tracktitle
106 my $artist = $rs->first;
107 print $artist->name . "\n\n";
110 sub get_artist_by_cd {
112 print "get_artist_by_cd($cdtitle):\n";
113 my $rs = $schema->resultset('Artist')->search(
115 'cds.title' => $cdtitle
121 my $artist = $rs->first;
122 print $artist->name . "\n\n";