From c10e999b959cf7a74343371bcad9c76ca50b07bb Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Wed, 23 Aug 2017 16:45:15 -0400 Subject: [PATCH] mig-init: loop through sorted mig-sql/ directory mig-init will look for .sql files in mig-sql to run Signed-off-by: Jason Etheridge --- mig-bin/mig-init | 58 ++++++++++----------------------------- mig-sql/000-tracked_column.sql | 15 ++++++++++ mig-sql/000-tracked_file.sql | 14 +++++++++ 3 files changed, 44 insertions(+), 43 deletions(-) create mode 100644 mig-sql/000-tracked_column.sql create mode 100644 mig-sql/000-tracked_file.sql diff --git a/mig-bin/mig-init b/mig-bin/mig-init index 05ad5d8..6ed6811 100755 --- a/mig-bin/mig-init +++ b/mig-bin/mig-init @@ -31,6 +31,7 @@ use Pod::Usage; use DBI; use FindBin; my $mig_bin = "$FindBin::Bin/"; +my $mig_sql = $mig_bin . "../mig-sql/"; use lib "$FindBin::Bin/"; use Mig; @@ -45,7 +46,9 @@ if (! Mig::check_for_db_migschema()) { if (! Mig::check_db_migschema_for_migration_tables()) { try_to_init_schema_with_migration_tools(); } -vivicate_mig_tracking_tables(); +Mig::die_if_mig_tracking_table_exists(); +Mig::die_if_mig_column_tracking_table_exists(); +loop_through_mig_sql_templates(); exit 0; @@ -75,47 +78,16 @@ sub try_to_init_schema_with_migration_tools { Mig::db_disconnect($dbh); } -sub vivicate_mig_tracking_tables { - Mig::die_if_mig_tracking_table_exists(); - print "Creating table $MIGSCHEMA.tracked_file...\n"; - my $dbh = Mig::db_connect(); - my $rv = $dbh->do(" - CREATE TABLE $MIGSCHEMA.tracked_file ( - id serial - ,base_filename TEXT UNIQUE - ,has_headers BOOLEAN - ,headers_file TEXT - ,utf8_filename TEXT - ,clean_filename TEXT - ,stage_sql_filename TEXT - ,map_sql_filename TEXT - ,prod_sql_filename TEXT - ,parent_table TEXT - ,staged_table TEXT - ); - ") || die "Error creating table $MIGSCHEMA.tracked_file: $!\n"; - Mig::die_if_mig_column_tracking_table_exists(); - my $rv2 = $dbh->do(" - CREATE TABLE $MIGSCHEMA.tracked_column ( - id serial - ,base_filename TEXT - ,parent_table TEXT - ,staged_table TEXT - ,staged_column TEXT - ,comment TEXT - ,target_table TEXT - ,target_column TEXT - ,transform TEXT - ,summarize BOOLEAN - ); - ") || die "Error creating table $MIGSCHEMA.tracked_column: $!\n"; - my $rv3 = $dbh->do(" - CREATE INDEX ON $MIGSCHEMA.tracked_column(target_table,target_column); - ") || die "Error creating index on $MIGSCHEMA.tracked_column: $!\n"; - my $rv4 = $dbh->do(" - CREATE INDEX ON $MIGSCHEMA.tracked_column(base_filename); - ") || die "Error creating index on $MIGSCHEMA.tracked_column: $!\n"; - Mig::db_disconnect($dbh); +sub loop_through_mig_sql_templates { + print "Looping through mig-sql/ templates\n"; + opendir my $dir, $mig_sql or die "Cannot open directory: $!"; + my @files = sort readdir $dir; + closedir $dir; + foreach my $file (@files) { + if ($file =~ /.sql$/) { + print "executing $file:\n"; + system( $mig_bin . "mig-sql", ('-f',$file) ) + } + } } - diff --git a/mig-sql/000-tracked_column.sql b/mig-sql/000-tracked_column.sql new file mode 100644 index 0000000..3f73454 --- /dev/null +++ b/mig-sql/000-tracked_column.sql @@ -0,0 +1,15 @@ +DROP TABLE IF EXISTS tracked_column; +CREATE TABLE tracked_column ( + id serial + ,base_filename TEXT + ,parent_table TEXT + ,staged_table TEXT + ,staged_column TEXT + ,comment TEXT + ,target_table TEXT + ,target_column TEXT + ,transform TEXT + ,summarize BOOLEAN +); +CREATE INDEX ON tracked_column(target_table,target_column); +CREATE INDEX ON tracked_column(base_filename); diff --git a/mig-sql/000-tracked_file.sql b/mig-sql/000-tracked_file.sql new file mode 100644 index 0000000..d80b12d --- /dev/null +++ b/mig-sql/000-tracked_file.sql @@ -0,0 +1,14 @@ +DROP TABLE IF EXISTS tracked_file; +CREATE TABLE tracked_file ( + id serial + ,base_filename TEXT UNIQUE + ,has_headers BOOLEAN + ,headers_file TEXT + ,utf8_filename TEXT + ,clean_filename TEXT + ,stage_sql_filename TEXT + ,map_sql_filename TEXT + ,prod_sql_filename TEXT + ,parent_table TEXT + ,staged_table TEXT +); -- 1.7.2.5