62 lines
2.1 KiB
Bash
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"
|