mig-init: loop through sorted mig-sql/ directory
authorJason Etheridge <jason@esilibrary.com>
Wed, 23 Aug 2017 20:45:15 +0000 (16:45 -0400)
committerJason Etheridge <jason@esilibrary.com>
Wed, 23 Aug 2017 20:46:53 +0000 (16:46 -0400)
mig-init will look for .sql files in mig-sql to run

Signed-off-by: Jason Etheridge <jason@esilibrary.com>

mig-bin/mig-init
mig-sql/000-tracked_column.sql [new file with mode: 0644]
mig-sql/000-tracked_file.sql [new file with mode: 0644]

index 05ad5d8..6ed6811 100755 (executable)
@@ -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 (file)
index 0000000..3f73454
--- /dev/null
@@ -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 (file)
index 0000000..d80b12d
--- /dev/null
@@ -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
+);