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