Commit c0e2fcae658b2ee8e39076545f01d79f6f126f3d

Authored by zichun
1 parent 7caeb6c5

fix(scripts): load .env.local in seed-dev-admin so it targets correct DB

Previously the script used hardcoded defaults (127.0.0.1:3306 / xly_erp)
and ignored the user's remote test DB. Now sources .env.local like
setup-test-db.sh does. Documents the prereq that Spring Boot must have
started at least once (Flyway applies V1) before seeding.
Showing 1 changed file with 20 additions and 8 deletions
scripts/seed-dev-admin.sh
1 #!/usr/bin/env bash 1 #!/usr/bin/env bash
2 # Seed a dev admin user (sUserName=admin, password=666666). 2 # Seed a dev admin user (sUserName=admin, password=666666).
3 -# Run once after first `mvn spring-boot:run` so Flyway has applied V1.  
4 -# Idempotent: uses INSERT IGNORE on the unique key. 3 +#
  4 +# Prerequisites:
  5 +# 1. .env.local exists with DB_HOST/DB_PORT/DB_SCHEMA/DB_USER/DB_PASSWORD
  6 +# 2. Schema has been created — i.e. Spring Boot has started at least once
  7 +# so Flyway has applied V1__initial_schema.sql (creates tUser etc.)
  8 +#
  9 +# Idempotent: uses INSERT IGNORE on the unique key (sUserName).
5 10
6 set -euo pipefail 11 set -euo pipefail
7 12
8 -DB_HOST="${DB_HOST:-127.0.0.1}"  
9 -DB_PORT="${DB_PORT:-3306}"  
10 -DB_SCHEMA="${DB_SCHEMA:-xly_erp}"  
11 -DB_USER="${DB_USER:-root}" 13 +# macOS Homebrew mysql-client is keg-only; prepend common install paths.
  14 +for p in /opt/homebrew/opt/mysql-client/bin /usr/local/opt/mysql-client/bin; do
  15 + [ -d "$p" ] && case ":$PATH:" in *":$p:"*) ;; *) PATH="$p:$PATH" ;; esac
  16 +done
  17 +
  18 +ENV_FILE="$(dirname "$0")/../.env.local"
  19 +[ -f "$ENV_FILE" ] || { echo "[seed-dev-admin] ⚠️ .env.local 不存在($ENV_FILE)" >&2; exit 1; }
  20 +
  21 +set -a; . "$ENV_FILE"; set +a
12 22
13 # BCrypt(666666) cost 10. Spring's BCryptPasswordEncoder accepts both $2a$ and $2b$ prefixes. 23 # BCrypt(666666) cost 10. Spring's BCryptPasswordEncoder accepts both $2a$ and $2b$ prefixes.
14 HASH='$2b$10$ZzbGP0yWo3QJkaiZqEgtAOQVrzrti911VqbY7FoethhGQFPV0/Oj6' 24 HASH='$2b$10$ZzbGP0yWo3QJkaiZqEgtAOQVrzrti911VqbY7FoethhGQFPV0/Oj6'
15 25
16 -mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" ${DB_PASSWORD:+-p"$DB_PASSWORD"} "$DB_SCHEMA" <<SQL 26 +echo "[seed-dev-admin] target: ${DB_USER}@${DB_HOST}:${DB_PORT}/${DB_SCHEMA}"
  27 +
  28 +mysql -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" "${DB_SCHEMA}" <<SQL
17 INSERT IGNORE INTO tUser 29 INSERT IGNORE INTO tUser
18 (sBrandsId, sSubsidiaryId, tCreateDate, 30 (sBrandsId, sSubsidiaryId, tCreateDate,
19 sUserNo, sUserName, sUserType, sLanguage, bCanModifyDocs, 31 sUserNo, sUserName, sUserType, sLanguage, bCanModifyDocs,
@@ -24,4 +36,4 @@ VALUES @@ -24,4 +36,4 @@ VALUES
24 '$HASH', 'system', 0); 36 '$HASH', 'system', 0);
25 SQL 37 SQL
26 38
27 -echo "Seeded dev admin: sUserName=admin / password=666666" 39 +echo "[seed-dev-admin] OK — sUserName=admin / password=666666"