5484f9e94b2b6f6343ea1e154472c8b6d3ed83c0
[dbsrgits/DBIx-Class-Fixtures.git] / t / lib / ExtraTest / Schema.pm
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
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   },
65   album => {
66     data_type => 'integer',
67   },
68   photographer => {
69     data_type => 'integer',
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
80 __PACKAGE__->belongs_to( photographer => 'ExtraTest::Schema::Result::Photographer' );
81 __PACKAGE__->belongs_to( album => 'ExtraTest::Schema::Result::Album' );
82
83 package ExtraTest::Schema;
84
85 use strict;
86 use warnings;
87
88 use base 'DBIx::Class::Schema';
89
90 __PACKAGE__->register_class(
91   Album => 'ExtraTest::Schema::Result::Album');
92 __PACKAGE__->register_class(
93   Photographer => 'ExtraTest::Schema::Result::Photographer');
94 __PACKAGE__->register_class(
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__
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 );
122 CREATE TABLE photo (
123   photo_id INTEGER PRIMARY KEY NOT NULL,
124   album INTEGER NOT NULL,
125   photographer INTEGER NOT NULL,
126   file varchar(255) NOT NULL
127 )
128