Files
boursecu_server/database/sql/run_deploy_settings.sh
T

61 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# اجرای deploy_settings_const.sql روی یک یا چند دیتابیس — بدون کپی در Navicat.
#
# از ریشهٔ سرور:
# bash database/sql/run_deploy_settings.sh
# bash database/sql/run_deploy_settings.sh abaeigold
# bash database/sql/run_deploy_settings.sh abaeigold gholaktala
#
# اتصال از .env (DB_HOST / DB_PORT / DB_USERNAME / DB_PASSWORD).
# اگر نام DB ندهی، همان DB_DATABASE داخل .env استفاده می‌شود.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"
SQL_FILE="${SQL_FILE:-database/sql/deploy_settings_const.sql}"
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_USERNAME=$(read_env DB_USERNAME)
DB_PASSWORD=$(read_env DB_PASSWORD)
DB_DATABASE=$(read_env DB_DATABASE)
if [[ ! -f "$SQL_FILE" ]]; then
echo "ERROR: SQL file not found: $SQL_FILE" >&2
exit 1
fi
if [[ -z "${DB_HOST:-}" || -z "${DB_USERNAME:-}" ]]; then
echo "ERROR: DB_HOST / DB_USERNAME missing in .env" >&2
exit 1
fi
if [[ $# -gt 0 ]]; then
DBS=("$@")
else
if [[ -z "${DB_DATABASE:-}" ]]; then
echo "ERROR: no database name. Pass it as argument or set DB_DATABASE in .env" >&2
exit 1
fi
DBS=("$DB_DATABASE")
fi
mysql_run() {
local db="$1"
mysql -h "$DB_HOST" -P "${DB_PORT:-3306}" -u "$DB_USERNAME" -p"$DB_PASSWORD" \
--default-character-set=utf8mb4 "$db"
}
for db in "${DBS[@]}"; do
echo "==> $SQL_FILE → $db @ $DB_HOST:${DB_PORT:-3306}"
mysql_run "$db" < "$SQL_FILE"
echo " done: $db"
done
echo "==> all done"