#!/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"