On Thu, 30 Mar 2006, Matt S Trout wrote:
>
> Carl Franks wrote:
> >> package Foo::Schema;
> >> use base qw/DBIx::Class::Schema/;
> >>
> >> __PACKAGE__->declare( ... );
> >>
> >> 1;
> >>
> >> Where ... could be a data structure, a string, a filehandle, a
> >> filename, or undef to read from __DATA__
> >
> > I like the sound of that, but how about having it point to a
> > "create_tables.sql" file?
> > /very/ DRY :)
>
> Because DBIx-Class can already generate your deployment SQL for you. There's
> metadata required at the ORM layer that isn't required at the database layer,
> so the SQL DDL statements are never going to be sufficient - and cease to be
> DRY very rapidly as you try to go cross-database anyway.
How about a YAML spec for defining the database schema (and
optionally DBIC declarative statements) in one easy-to-r/w file:
'My::Foo':
table: foo
comments: 'A foo object'
pk:
- bar
- biz
belongs_to:
baz: 'My::Baz'
has_many:
bozzes: 'My::Boz'
fields:
bar:
type: varchar
limit: 10
biz:
type: int
signed: no
'My::Baz':
table: baz
pk: baz_id
has_many:
foos: 'My::Foo'
fields:
baz_id:
type: int
signed: no
keygen: auto_increment
baz_nut:
type: text
baz_fruit:
type: text
indexes:
fruit_and_nut:
- baz_nut
- baz_fruit
just_nut:
- baz_nut
'My::Boz':
table: boz
pk: boz_id
belongs_to:
foo: 'My::Foo'
fields:
boz_id:
type: int
signed: no
keygen: auto_increment
And so forth.
Mark
_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/