61 lines
1.6 KiB
Bash
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"
|