Commit | Line | Data |
c6d74d3e |
1 | package # hide from PAUSE |
2 | DBICTest::Schema::CD; |
a02675cd |
3 | |
660cf1be |
4 | use base qw/DBICTest::BaseResult/; |
a02675cd |
5 | |
cebb7cce |
6 | # this tests table name as scalar ref |
7 | # DO NOT REMOVE THE \ |
8 | __PACKAGE__->table(\'cd'); |
9 | |
ff657a43 |
10 | __PACKAGE__->add_columns( |
0009fa49 |
11 | 'cdid' => { |
12 | data_type => 'integer', |
13 | is_auto_increment => 1, |
14 | }, |
15 | 'artist' => { |
16 | data_type => 'integer', |
17 | }, |
18 | 'title' => { |
19 | data_type => 'varchar', |
cb561d1a |
20 | size => 100, |
0009fa49 |
21 | }, |
22 | 'year' => { |
23 | data_type => 'varchar', |
cb561d1a |
24 | size => 100, |
0009fa49 |
25 | }, |
370f2ba2 |
26 | 'genreid' => { |
4e0eaf64 |
27 | data_type => 'integer', |
28 | is_nullable => 1, |
afa3668a |
29 | accessor => undef, |
a1cb5921 |
30 | }, |
31 | 'single_track' => { |
32 | data_type => 'integer', |
33 | is_nullable => 1, |
34 | is_foreign_key => 1, |
370f2ba2 |
35 | } |
0009fa49 |
36 | ); |
ff657a43 |
37 | __PACKAGE__->set_primary_key('cdid'); |
368a5228 |
38 | __PACKAGE__->add_unique_constraint([ qw/artist title/ ]); |
ff657a43 |
39 | |
e377d723 |
40 | __PACKAGE__->belongs_to( artist => 'DBICTest::Schema::Artist', undef, { |
41 | is_deferrable => 1, |
e377d723 |
42 | }); |
ff657a43 |
43 | |
a1cb5921 |
44 | # in case this is a single-cd it promotes a track from another cd |
56b73f83 |
45 | __PACKAGE__->belongs_to( single_track => 'DBICTest::Schema::Track', 'single_track', |
46 | { join_type => 'left'} |
47 | ); |
a1cb5921 |
48 | |
ff657a43 |
49 | __PACKAGE__->has_many( tracks => 'DBICTest::Schema::Track' ); |
50 | __PACKAGE__->has_many( |
51 | tags => 'DBICTest::Schema::Tag', undef, |
52 | { order_by => 'tag' }, |
53 | ); |
54 | __PACKAGE__->has_many( |
55 | cd_to_producer => 'DBICTest::Schema::CD_to_Producer' => 'cd' |
56 | ); |
57 | |
58 | __PACKAGE__->might_have( |
59 | liner_notes => 'DBICTest::Schema::LinerNotes', undef, |
60 | { proxy => [ qw/notes/ ] }, |
61 | ); |
4f6386b0 |
62 | __PACKAGE__->might_have(artwork => 'DBICTest::Schema::Artwork', 'cd_id'); |
cc9d96d0 |
63 | __PACKAGE__->has_one(mandatory_artwork => 'DBICTest::Schema::Artwork', 'cd_id'); |
4f6386b0 |
64 | |
ff657a43 |
65 | __PACKAGE__->many_to_many( producers => cd_to_producer => 'producer' ); |
66 | __PACKAGE__->many_to_many( |
67 | producers_sorted => cd_to_producer => 'producer', |
68 | { order_by => 'producer.name' }, |
69 | ); |
a02675cd |
70 | |
87310237 |
71 | __PACKAGE__->belongs_to('genre', 'DBICTest::Schema::Genre', |
72 | { 'foreign.genreid' => 'self.genreid' }, |
a0dd8679 |
73 | { |
74 | join_type => 'left', |
75 | on_delete => 'SET NULL', |
76 | on_update => 'CASCADE', |
a0dd8679 |
77 | }, |
87310237 |
78 | ); |
370f2ba2 |
79 | |
cef1bdda |
80 | #This second relationship was added to test the short-circuiting of pointless |
81 | #queries provided by undef_on_null_fk. the relevant test in 66relationship.t |
82 | __PACKAGE__->belongs_to('genre_inefficient', 'DBICTest::Schema::Genre', |
83 | { 'foreign.genreid' => 'self.genreid' }, |
84 | { |
85 | join_type => 'left', |
86 | on_delete => 'SET NULL', |
87 | on_update => 'CASCADE', |
88 | undef_on_null_fk => 0, |
89 | }, |
90 | ); |
91 | |
a02675cd |
92 | 1; |