From 52ac142907097426998d311d02ada8f877706168 Mon Sep 17 00:00:00 2001 From: Finley Ghosh Date: Sun, 10 Aug 2025 19:21:37 +1000 Subject: [PATCH] Moving scripts to their own files, adding a basic migration script, marking most sql files for ignore --- deploy/deploy-stg.sh | 34 ++----------------- deploy/scripts/restore_db_from_backup.sh | 13 +++++++ deploy/scripts/run_all_migrations.sh | 18 ++++++++++ ...customers.sql => ignore_001_customers.sql} | 0 ...2_products.sql => ignore_002_products.sql} | 0 ...ers.sql => ignore_003_purchase_orders.sql} | 0 .../{004_users.sql => ignore_004_users.sql} | 0 ...5_invoices.sql => ignore_005_invoices.sql} | 0 ...addresses.sql => ignore_006_addresses.sql} | 0 ...chments.sql => ignore_007_attachments.sql} | 0 .../{008_boxes.sql => ignore_008_boxes.sql} | 0 .../{009_states.sql => ignore_009_states.sql} | 0 ...0_statuses.sql => ignore_010_statuses.sql} | 0 ...inciples.sql => ignore_011_principles.sql} | 0 ...countries.sql => ignore_012_countries.sql} | 0 ...ne_items.sql => ignore_013_line_items.sql} | 0 .../{documents.sql => ignore_documents.sql} | 0 .../{enquiries.sql => ignore_enquiries.sql} | 0 18 files changed, 34 insertions(+), 31 deletions(-) create mode 100644 deploy/scripts/restore_db_from_backup.sh create mode 100644 deploy/scripts/run_all_migrations.sh rename go-app/sql/schema/{001_customers.sql => ignore_001_customers.sql} (100%) rename go-app/sql/schema/{002_products.sql => ignore_002_products.sql} (100%) rename go-app/sql/schema/{003_purchase_orders.sql => ignore_003_purchase_orders.sql} (100%) rename go-app/sql/schema/{004_users.sql => ignore_004_users.sql} (100%) rename go-app/sql/schema/{005_invoices.sql => ignore_005_invoices.sql} (100%) rename go-app/sql/schema/{006_addresses.sql => ignore_006_addresses.sql} (100%) rename go-app/sql/schema/{007_attachments.sql => ignore_007_attachments.sql} (100%) rename go-app/sql/schema/{008_boxes.sql => ignore_008_boxes.sql} (100%) rename go-app/sql/schema/{009_states.sql => ignore_009_states.sql} (100%) rename go-app/sql/schema/{010_statuses.sql => ignore_010_statuses.sql} (100%) rename go-app/sql/schema/{011_principles.sql => ignore_011_principles.sql} (100%) rename go-app/sql/schema/{012_countries.sql => ignore_012_countries.sql} (100%) rename go-app/sql/schema/{013_line_items.sql => ignore_013_line_items.sql} (100%) rename go-app/sql/schema/{documents.sql => ignore_documents.sql} (100%) rename go-app/sql/schema/{enquiries.sql => ignore_enquiries.sql} (100%) diff --git a/deploy/deploy-stg.sh b/deploy/deploy-stg.sh index e5ec8f46..054eb1e2 100755 --- a/deploy/deploy-stg.sh +++ b/deploy/deploy-stg.sh @@ -76,39 +76,11 @@ ENVEOF fi echo "Checking running containers..." - # Check containers - docker compose -f docker-compose.stg.yml ps - echo "Creating migration runner script..." - cat > /home/cmc/run_all_migrations.sh <<'EOF' -#!/bin/bash -set -e -SQL_DIR="/home/cmc/cmc-sales-staging/sql/schema" -DB_USER="cmc" -DB_PASS="xVRQI&cA?7AU=hqJ!%au" -DB_NAME="cmc" -DB_HOST="127.0.0.1" - -for sqlfile in "$SQL_DIR"/*.sql; do - echo "Running migration: $sqlfile" - mariadb -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" < "$sqlfile" -done -echo "All migrations applied." -EOF + # Copy migration and restore scripts to server + cp /home/cmc/cmc-sales-staging/deploy/scripts/run_all_migrations.sh /home/cmc/run_all_migrations.sh chmod +x /home/cmc/run_all_migrations.sh - echo "Creating restore script for database from backups..." - # Create restore script for database from backups - cat > /home/cmc/restore_db_from_backup.sh <<'EOF' -#!/bin/bash -LATEST_BACKUP=$(ls -t /backups/backup_*.sql.gz | head -n1) -echo "Restoring database from latest backup: $LATEST_BACKUP" -if [ -f "$LATEST_BACKUP" ]; then - gunzip < "$LATEST_BACKUP" | mariadb -h 127.0.0.1 -u cmc -p"xVRQI&cA?7AU=hqJ!%au" cmc - echo "Database restore complete." -else - echo "No backup file found in /backups. Skipping database restore." -fi -EOF + cp /home/cmc/cmc-sales-staging/deploy/scripts/restore_db_from_backup.sh /home/cmc/restore_db_from_backup.sh chmod +x /home/cmc/restore_db_from_backup.sh echo "Creating sync script for staging directories..." diff --git a/deploy/scripts/restore_db_from_backup.sh b/deploy/scripts/restore_db_from_backup.sh new file mode 100644 index 00000000..b9c8bafb --- /dev/null +++ b/deploy/scripts/restore_db_from_backup.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e +# Sync latest backup from production +rsync -avz -e "ssh -i ~/.ssh/cmc-old" --progress cmc@sales.cmctechnologies.com.au:~/backups /home/cmc/ +LATEST_BACKUP=$(ls -t /home/cmc/backups/backup_*.sql.gz | head -n1) +echo "Restoring database from latest backup: $LATEST_BACKUP" +if [ -f "$LATEST_BACKUP" ]; then + docker cp "$LATEST_BACKUP" cmc-db:/tmp/backup.sql.gz + docker exec cmc-db sh -c "gunzip < /tmp/backup.sql.gz | mariadb -u cmc -p'xVRQI&cA?7AU=hqJ!%au' cmc" + echo "Database restore complete." +else + echo "No backup file found in /home/cmc/backups. Skipping database restore." +fi diff --git a/deploy/scripts/run_all_migrations.sh b/deploy/scripts/run_all_migrations.sh new file mode 100644 index 00000000..bf6e6bb1 --- /dev/null +++ b/deploy/scripts/run_all_migrations.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e +SQL_DIR="/home/cmc/cmc-sales-staging/go-app/sql/schema" +DB_USER="cmc" +DB_PASS="xVRQI&cA?7AU=hqJ!%au" +DB_NAME="cmc" +DB_HOST="127.0.0.1" + +for sqlfile in "$SQL_DIR"/*.sql; do + # Skip files starting with "ignore_" + if [[ "$sqlfile" == ignore_* ]]; then + echo "Skipping ignored migration: $sqlfile" + continue + fi + echo "Running migration: $sqlfile" + mariadb -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" < "$sqlfile" +done +echo "All migrations applied." diff --git a/go-app/sql/schema/001_customers.sql b/go-app/sql/schema/ignore_001_customers.sql similarity index 100% rename from go-app/sql/schema/001_customers.sql rename to go-app/sql/schema/ignore_001_customers.sql diff --git a/go-app/sql/schema/002_products.sql b/go-app/sql/schema/ignore_002_products.sql similarity index 100% rename from go-app/sql/schema/002_products.sql rename to go-app/sql/schema/ignore_002_products.sql diff --git a/go-app/sql/schema/003_purchase_orders.sql b/go-app/sql/schema/ignore_003_purchase_orders.sql similarity index 100% rename from go-app/sql/schema/003_purchase_orders.sql rename to go-app/sql/schema/ignore_003_purchase_orders.sql diff --git a/go-app/sql/schema/004_users.sql b/go-app/sql/schema/ignore_004_users.sql similarity index 100% rename from go-app/sql/schema/004_users.sql rename to go-app/sql/schema/ignore_004_users.sql diff --git a/go-app/sql/schema/005_invoices.sql b/go-app/sql/schema/ignore_005_invoices.sql similarity index 100% rename from go-app/sql/schema/005_invoices.sql rename to go-app/sql/schema/ignore_005_invoices.sql diff --git a/go-app/sql/schema/006_addresses.sql b/go-app/sql/schema/ignore_006_addresses.sql similarity index 100% rename from go-app/sql/schema/006_addresses.sql rename to go-app/sql/schema/ignore_006_addresses.sql diff --git a/go-app/sql/schema/007_attachments.sql b/go-app/sql/schema/ignore_007_attachments.sql similarity index 100% rename from go-app/sql/schema/007_attachments.sql rename to go-app/sql/schema/ignore_007_attachments.sql diff --git a/go-app/sql/schema/008_boxes.sql b/go-app/sql/schema/ignore_008_boxes.sql similarity index 100% rename from go-app/sql/schema/008_boxes.sql rename to go-app/sql/schema/ignore_008_boxes.sql diff --git a/go-app/sql/schema/009_states.sql b/go-app/sql/schema/ignore_009_states.sql similarity index 100% rename from go-app/sql/schema/009_states.sql rename to go-app/sql/schema/ignore_009_states.sql diff --git a/go-app/sql/schema/010_statuses.sql b/go-app/sql/schema/ignore_010_statuses.sql similarity index 100% rename from go-app/sql/schema/010_statuses.sql rename to go-app/sql/schema/ignore_010_statuses.sql diff --git a/go-app/sql/schema/011_principles.sql b/go-app/sql/schema/ignore_011_principles.sql similarity index 100% rename from go-app/sql/schema/011_principles.sql rename to go-app/sql/schema/ignore_011_principles.sql diff --git a/go-app/sql/schema/012_countries.sql b/go-app/sql/schema/ignore_012_countries.sql similarity index 100% rename from go-app/sql/schema/012_countries.sql rename to go-app/sql/schema/ignore_012_countries.sql diff --git a/go-app/sql/schema/013_line_items.sql b/go-app/sql/schema/ignore_013_line_items.sql similarity index 100% rename from go-app/sql/schema/013_line_items.sql rename to go-app/sql/schema/ignore_013_line_items.sql diff --git a/go-app/sql/schema/documents.sql b/go-app/sql/schema/ignore_documents.sql similarity index 100% rename from go-app/sql/schema/documents.sql rename to go-app/sql/schema/ignore_documents.sql diff --git a/go-app/sql/schema/enquiries.sql b/go-app/sql/schema/ignore_enquiries.sql similarity index 100% rename from go-app/sql/schema/enquiries.sql rename to go-app/sql/schema/ignore_enquiries.sql