package SweetTest; use strict; use warnings; use base qw/Class::DBI::Sweet/; use Class::DBI::Sweet::Topping; my $db_file = "t/var/SweetTest.db"; unlink($db_file) if -e $db_file; unlink($db_file . "-journal") if -e $db_file . "-journal"; mkdir("t/var") unless -d "t/var"; __PACKAGE__->connection("dbi:SQLite:${db_file}"); my $dbh = __PACKAGE__->db_Main; my $sql = <do($_) for split(/\n\n/, $sql); package SweetTest::LinerNotes; use base 'SweetTest'; SweetTest::LinerNotes->table('liner_notes'); SweetTest::LinerNotes->columns(Essential => qw/liner_id notes/); package SweetTest::Tag; use base 'SweetTest'; SweetTest::Tag->table('tags'); SweetTest::Tag->columns(Essential => qw/tagid cd tag/); SweetTest::Tag->has_a(cd => 'SweetTest::CD'); package SweetTest::Track; use base 'SweetTest'; SweetTest::Track->table('track'); SweetTest::Track->columns(Essential => qw/trackid cd position title/); SweetTest::Track->has_a(cd => 'SweetTest::CD'); package SweetTest::CD; use base 'SweetTest'; SweetTest::CD->table('cd'); SweetTest::CD->columns(Essential => qw/cdid artist title year/); SweetTest::CD->has_many(tracks => 'SweetTest::Track'); SweetTest::CD->has_many(tags => 'SweetTest::Tag'); SweetTest::CD->has_a(artist => 'SweetTest::Artist'); SweetTest::CD->might_have(liner_notes => 'SweetTest::LinerNotes' => qw/notes/); package SweetTest::Artist; use base 'SweetTest'; SweetTest::Artist->table('artist'); SweetTest::Artist->columns(Essential => qw/artistid name/); SweetTest::Artist->has_many(cds => 'SweetTest::CD'); SweetTest::Artist->has_many(twokeys => 'SweetTest::TwoKeys'); SweetTest::Artist->has_many(onekeys => 'SweetTest::OneKey'); package SweetTest::TwoKeys; use base 'SweetTest'; SweetTest::TwoKeys->table('twokeys'); SweetTest::TwoKeys->columns(Primary => qw/artist cd/); SweetTest::TwoKeys->has_a(artist => 'SweetTest::Artist'); SweetTest::TwoKeys->has_a(cd => 'SweetTest::CD'); package SweetTest::OneKey; use base 'SweetTest'; SweetTest::OneKey->table('onekey'); SweetTest::OneKey->columns(Primary => qw/id/); SweetTest::OneKey->columns(Essential => qw/artist cd/); SweetTest::OneKey->has_a(artist => 'SweetTest::Artist'); SweetTest::OneKey->has_a(cd => 'SweetTest::CD'); 1;