Files
boursecu_server/database/sql/run_gholaktala_upgrade.sh
T
2026-07-14 22:03:39 +03:30

62 lines
2.1 KiB
Bash

#!/usr/bin/env bash
# ارتقای DB قلک طلا — schema + merge settings/const
# استفاده: cd /opt/gholak/server && bash database/sql/run_gholaktala_upgrade.sh
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"
read_env() {
grep "^${1}=" .env | cut -d= -f2- | tr -d '\r"' | head -1
}
DB_HOST=$(read_env DB_HOST)
DB_PORT=$(read_env DB_PORT)
DB_DATABASE=$(read_env DB_DATABASE)
DB_USERNAME=$(read_env DB_USERNAME)
DB_PASSWORD=$(read_env DB_PASSWORD)
mysql_cmd() {
mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" "$@"
}
mysqldump_cmd() {
mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USERNAME" -p"$DB_PASSWORD" \
--single-transaction --routines --triggers "$DB_DATABASE" "$@"
}
BACKUP_FILE="/tmp/gholaktala_before_upgrade_$(date +%Y%m%d_%H%M%S).sql"
echo "==> 0/5 backup -> $BACKUP_FILE"
mysqldump_cmd > "$BACKUP_FILE"
echo " backup size: $(du -h "$BACKUP_FILE" | cut -f1)"
echo "==> 1/5 gholaktala_upgrade.sql (schema + backfill)"
mysql_cmd < database/sql/gholaktala_upgrade.sql
echo "==> 2/5 deploy_settings_const_preserve_value_sync_can_edit.sql (merge settings + const)"
mysql_cmd < database/sql/deploy_settings_const_preserve_value_sync_can_edit.sql
echo "==> 3/5 baseline_migrations.sql (اگر قبلاً نزده‌اید)"
if mysql_cmd -N -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='migrations';" | grep -q '^1$'; then
PKG=$(mysql_cmd -N -e "SELECT COUNT(*) FROM migrations WHERE migration IN (
'2019_12_14_000001_create_personal_access_tokens_table',
'2021_12_02_065938_create_wallet_moudle_table'
);" 2>/dev/null || echo 0)
if [[ "$PKG" != "2" ]]; then
echo " running baseline_migrations.sql ..."
mysql_cmd < database/sql/baseline_migrations.sql
else
echo " skip — baseline already applied"
fi
else
echo " skip — no migrations table"
fi
echo "==> 4/5 php artisan migrate"
php artisan migrate --force
echo "==> 5/5 php artisan config:clear"
php artisan config:clear
echo "==> done — backup: $BACKUP_FILE"
echo "==> test: GET /server/customer/me"