+++ /dev/null
-CREATE TABLE artist (
- artistid INTEGER PRIMARY KEY,
- name TEXT NOT NULL
-);
-
-CREATE TABLE cd (
- cdid INTEGER PRIMARY KEY,
- artist INTEGER NOT NULL REFERENCES artist(artistid),
- title TEXT NOT NULL,
- year DATETIME
-);
-
-CREATE TABLE track (
- trackid INTEGER PRIMARY KEY,
- cd INTEGER NOT NULL REFERENCES cd(cdid),
- title TEXT NOT NULL
-);
require File::Spec;
-my $test_ddl_fn = File::Spec->catfile(qw( t lib sqlite.sql ));
-my @test_ddl_cmd = qw( -I lib -I t/lib -- maint/gen_sqlite_schema_files --schema-class DBICTest::Schema );
+my $test_ddl_fn = File::Spec->catfile(qw( t lib sqlite.sql ));
+my @test_ddl_cmd = qw( -I lib -I t/lib -- maint/gen_sqlite_schema_files --schema-class DBICTest::Schema );
+
+my $example_ddl_fn = File::Spec->catfile(qw( examples Schema db example.sql ));
+my $example_db_fn = File::Spec->catfile(qw( examples Schema db example.db ));
+my @example_ddl_cmd = qw( -I lib -I examples/Schema -- maint/gen_sqlite_schema_files --schema-class MyApp::Schema );
+my @example_pop_cmd = qw( -I lib -I examples/Schema -- examples/Schema/insertdb.pl );
# If the author doesn't have the prereqs, still generate a Makefile
# The EUMM build-stage generation will run unconditionally and
print "Regenerating $test_ddl_fn\n";
system( $^X, @test_ddl_cmd, '--ddl-out' => $test_ddl_fn );
+ print "Regenerating $example_ddl_fn and $example_db_fn\n";
+ system( $^X, @example_ddl_cmd, '--ddl-out' => $example_ddl_fn, '--deploy-to' => $example_db_fn );
+
+ print "Populating $example_db_fn\n";
+ system( $^X, @example_pop_cmd );
+
# if we don't do it some git tools (e.g. gitk) get confused that the
# ddl file is modified, when it clearly isn't
system('git status --porcelain >' . File::Spec->devnull);
dbic_clonedir_regen_test_ddl :
\t\$(ABSPERLRUN) @test_ddl_cmd --ddl-out @{[ $mm_proto->quote_literal($test_ddl_fn) ]}
+\t\$(ABSPERLRUN) @example_ddl_cmd --ddl-out @{[ $mm_proto->quote_literal($example_ddl_fn) ]} --deploy-to @{[ $mm_proto->quote_literal($example_db_fn) ]}
+\t\$(ABSPERLRUN) @example_pop_cmd
EOP
# keep the Makefile.PL eval happy
$getopt->getoptions($args, qw/
ddl-out=s@
schema-class=s@
+ deploy-to=s@
/);
die "You need to specify one DDL output filename via --ddl-out\n"
die "You need to specify one DBIC schema class via --schema-class\n"
if @{$args->{'schema-class'}||[]} != 1;
+die "You may not specify more than one deploy path via --deploy-to\n"
+ if @{$args->{'deploy-to'}||[]} > 1;
-my $schema = use_module( $args->{'schema-class'}[0] )->connect();
+my $schema = use_module( $args->{'schema-class'}[0] )->connect(
+ $args->{'deploy-to'}
+ ? ( "DBI:SQLite:$args->{'deploy-to'}[0]", undef, undef, { on_connect_do => "PRAGMA synchronous = OFF" } )
+ : ()
+);
+
+if ($args->{'deploy-to'}) {
+ file($args->{'deploy-to'}[0])->dir->mkpath;
+ $schema->deploy({ add_drop_table => 1 });
+}
my $ddl_fh;
if ($args->{'ddl-out'}[0] eq '-') {