From cca504cf8bd5011df265ad1746b71e34657df061 Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Fri, 10 Apr 2020 15:29:18 -0400 Subject: [PATCH] first cut of kmig-link --- kmig.d/bin/mig-link | 30 +++++++++++++++++------------- 1 files changed, 17 insertions(+), 13 deletions(-) diff --git a/kmig.d/bin/mig-link b/kmig.d/bin/mig-link index 0c1d42b..492507c 100755 --- a/kmig.d/bin/mig-link +++ b/kmig.d/bin/mig-link @@ -19,8 +19,8 @@ B use strict; use Switch; use Env qw( - HOME PGHOST PGPORT PGUSER PGDATABASE MIGSCHEMA - MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR + HOME MYSQL_HOST MYSQL_TCP_PORT MYSQL_USER MYSQL_DATABASE MYSQL_PW + MIGSCHEMA MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR ); use Pod::Usage; use DBI; @@ -28,12 +28,12 @@ use Cwd 'abs_path'; use FindBin; my $mig_bin = "$FindBin::Bin/"; use lib "$FindBin::Bin/"; -use EMig; +use KMig; pod2usage(-verbose => 2) if ! $ARGV[0] || $ARGV[0] eq '--help'; -EMig::die_if_no_env_migschema(); -EMig::die_if_mig_tracking_table_does_not_exist(); +KMig::die_if_no_env_migschema(); +KMig::die_if_mig_tracking_table_does_not_exist(); my $file = abs_path($ARGV[0]); if ($file =~ /^$MIGBASEWORKDIR/) { @@ -50,20 +50,24 @@ sub link_table { my $file = abs_path(shift); my $table = shift; - if (! EMig::check_db_migschema_for_specific_table($table)) { + if ($table !~ /^m_/) { + die "for safety, since kmig 'link'ing really just adds columns to the parent table, this action is restricted to tables prefixed with m_"; + } + + if (! KMig::check_db_migschema_for_specific_table($table)) { die "table not found in MIGSCHEMA ($MIGSCHEMA): $table\n"; } - my $tracked_file_id = EMig::check_for_tracked_file($file); + my $tracked_file_id = KMig::check_for_tracked_file($file); if ($tracked_file_id) { - my $data = EMig::status_this_file($file); + my $data = KMig::status_this_file($file); print "linking file to parent table: $file -> $table\n"; - my $dbh = EMig::db_connect(); + my $dbh = KMig::db_connect(); my $sth = $dbh->prepare(" SELECT base_filename - FROM $MIGSCHEMA.tracked_file + FROM m_tracked_file WHERE parent_table = " . $dbh->quote($table) . " AND base_filename <> " . $dbh->quote($file) . ";" ); @@ -75,12 +79,12 @@ sub link_table { die "table ($table) already linked to a different file: $cols[0]\n"; } $rv = $dbh->do(" - UPDATE $MIGSCHEMA.tracked_file + UPDATE m_tracked_file SET parent_table = " . $dbh->quote($table) . " WHERE base_filename = " . $dbh->quote($file) . " ; - ") || die "Error updating table $MIGSCHEMA.tracked_file: $!\n"; - EMig::db_disconnect($dbh); + ") || die "Error updating table m_tracked_file: $!\n"; + KMig::db_disconnect($dbh); } else { print "File not currently tracked: $file\n"; } -- 1.7.2.5