chore(server): add helper script to run deploy_settings_const.sql
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user