Commit | Line | Data |
3d4debec |
1 | package ExtraTest::Schema::Result::Album; |
2 | |
3 | use base 'DBIx::Class::Core'; |
4 | |
5 | __PACKAGE__->table('album'); |
6 | __PACKAGE__->add_columns( |
7 | 'albumid' => { |
8 | data_type => 'integer', |
9 | is_auto_increment => 1, |
10 | }, |
11 | 'name' => { |
12 | data_type => 'varchar', |
13 | size => 100, |
14 | is_nullable => 1, |
15 | }, |
16 | ); |
17 | __PACKAGE__->set_primary_key('albumid'); |
18 | |
19 | __PACKAGE__->has_many( |
20 | photos => 'ExtraTest::Schema::Result::Photo' |
21 | ); |
22 | |
23 | 1; |
24 | |
25 | package ExtraTest::Schema::Result::Photographer; |
26 | |
27 | use base 'DBIx::Class::Core'; |
28 | |
29 | __PACKAGE__->table('photographer'); |
30 | __PACKAGE__->add_columns( |
31 | 'photographerid' => { |
32 | data_type => 'integer', |
33 | is_auto_increment => 1, |
34 | }, |
35 | 'name' => { |
36 | data_type => 'varchar', |
37 | size => 100, |
38 | is_nullable => 1, |
39 | }, |
40 | ); |
41 | __PACKAGE__->set_primary_key('photographerid'); |
42 | |
43 | __PACKAGE__->has_many( |
44 | photos => 'ExtraTest::Schema::Result::Photo' |
45 | ); |
46 | |
47 | 1; |
48 | |
49 | |
6d01d9c1 |
50 | package ExtraTest::Schema::Result::Photo; |
51 | |
52 | use strict; |
53 | use warnings; |
54 | |
55 | use base 'DBIx::Class::Core'; |
56 | |
57 | __PACKAGE__->load_components(qw/InflateColumn::FS/); |
58 | __PACKAGE__->table('photo'); |
59 | |
60 | __PACKAGE__->add_columns( |
61 | photo_id => { |
62 | data_type => 'integer', |
63 | is_auto_increment => 1, |
64 | }, |
3d4debec |
65 | album => { |
66 | data_type => 'integer', |
67 | }, |
6d01d9c1 |
68 | photographer => { |
3d4debec |
69 | data_type => 'integer', |
6d01d9c1 |
70 | }, |
71 | file => { |
72 | data_type => 'varchar', |
73 | size => 255, |
74 | is_fs_column => 1, |
75 | fs_column_path =>'./t/var/files', |
76 | }); |
77 | |
78 | __PACKAGE__->set_primary_key('photo_id'); |
79 | |
3d4debec |
80 | __PACKAGE__->belongs_to( photographer => 'ExtraTest::Schema::Result::Photographer' ); |
81 | __PACKAGE__->belongs_to( album => 'ExtraTest::Schema::Result::Album' ); |
82 | |
6d01d9c1 |
83 | package ExtraTest::Schema; |
84 | |
85 | use strict; |
86 | use warnings; |
87 | |
88 | use base 'DBIx::Class::Schema'; |
89 | |
90 | __PACKAGE__->register_class( |
3d4debec |
91 | Album => 'ExtraTest::Schema::Result::Album'); |
92 | __PACKAGE__->register_class( |
93 | Photographer => 'ExtraTest::Schema::Result::Photographer'); |
94 | __PACKAGE__->register_class( |
6d01d9c1 |
95 | Photo => 'ExtraTest::Schema::Result::Photo'); |
96 | |
97 | sub load_sql { |
98 | local $/ = undef; |
99 | my $sql = <DATA>; |
100 | } |
101 | |
102 | sub init_schema { |
103 | my $sql = (my $schema = shift) |
104 | ->load_sql; |
105 | |
106 | ($schema->storage->dbh->do($_) || |
107 | die "Error on SQL: $_\n") |
108 | for split(/;\n/, $sql); |
109 | } |
110 | |
111 | 1; |
112 | |
113 | __DATA__ |
3d4debec |
114 | CREATE TABLE album ( |
115 | albumid INTEGER PRIMARY KEY NOT NULL, |
116 | name varchar(100) NOT NULL |
117 | ); |
118 | CREATE TABLE photographer ( |
119 | photographerid INTEGER PRIMARY KEY NOT NULL, |
120 | name varchar(100) NOT NULL |
121 | ); |
6d01d9c1 |
122 | CREATE TABLE photo ( |
123 | photo_id INTEGER PRIMARY KEY NOT NULL, |
3d4debec |
124 | album INTEGER NOT NULL, |
125 | photographer INTEGER NOT NULL, |
6d01d9c1 |
126 | file varchar(255) NOT NULL |
127 | ) |
128 | |