Merge 'sybase' into 'trunk'
[dbsrgits/DBIx-Class.git] / examples / Schema / testdb.pl
CommitLineData
0c337847 1#!/usr/bin/perl -w
2
3use MyDatabase::Main;
4use strict;
5
6my $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
10get_tracks_by_cd('Bad');
11get_tracks_by_artist('Michael Jackson');
12
13get_cd_by_track('Stan');
14get_cds_by_artist('Michael Jackson');
15
16get_artist_by_track('Dirty Diana');
17get_artist_by_cd('The Marshall Mathers LP');
18
19
20sub 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
38sub 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
58sub 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
73sub 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
93sub 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
111sub 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}