- S001.sql: 修复 INSERT IGNORE INTO 缺少空格的语法错误 - S002.sql: 重写为动态 @shop_id 模式,移除 TRUNCATE,改用 INSERT IGNORE INTO - clear_shop.sql: 新增按 @shop_code 清空单店数据的参数化脚本 - scripts/dev.sh: seed 命令支持 --clear 参数(先清空再写入) - seed.yml: 新增 clear 输入参数,支持按需清空后写入 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+28
-6
@@ -36,12 +36,22 @@ WEB_PID_FILE="$LOG_DIR/web.pid"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
# ── seed 命令 ────────────────────────────────────────────────
|
||||
# 用法: cmd_seed <shop_code>
|
||||
# 从 backend/config/config.yaml 读取 DSN,执行 backend/seeds/<shop>.sql
|
||||
# 用法: cmd_seed [--clear] <shop_code>
|
||||
# 从 docker-compose.yml 读取容器信息,执行 backend/seeds/<shop>.sql
|
||||
# --clear: 写入前先清空该门店所有数据
|
||||
cmd_seed() {
|
||||
local shop="${1:-}"
|
||||
local clear=false
|
||||
local shop=""
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--clear) clear=true ;;
|
||||
*) shop="$1" ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$shop" ]; then
|
||||
error "用法: sh scripts/dev.sh seed <shop_code> 示例: sh scripts/dev.sh seed H001"
|
||||
error "用法: sh scripts/dev.sh seed [--clear] <shop_code> 示例: sh scripts/dev.sh seed S001"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -64,6 +74,17 @@ cmd_seed() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$clear" = "true" ]; then
|
||||
local clear_file="$ROOT/backend/seeds/clear_shop.sql"
|
||||
if [ ! -f "$clear_file" ]; then
|
||||
error "清空脚本不存在: $clear_file"
|
||||
exit 1
|
||||
fi
|
||||
info "清空 ${shop} 数据 → 容器 ${container} / ${db_name}"
|
||||
{ printf "SET @shop_code='%s';\n" "$shop"; cat "$clear_file"; } \
|
||||
| docker exec -i "$container" mysql --default-character-set=utf8mb4 -uroot -p"$db_pass" "$db_name"
|
||||
fi
|
||||
|
||||
info "写入 ${shop} 种子数据 → 容器 ${container} / ${db_name}"
|
||||
docker exec -i "$container" mysql --default-character-set=utf8mb4 -uroot -p"$db_pass" "$db_name" < "$sql_file"
|
||||
success "✅ ${shop} 种子数据写入完成"
|
||||
@@ -107,7 +128,8 @@ show_help() {
|
||||
echo " --web-only 仅启动前端(Web)"
|
||||
echo ""
|
||||
echo "数据库命令:"
|
||||
echo " seed <shop_code> 清空并写入指定门店测试数据(如 H001)"
|
||||
echo " seed <shop_code> 写入指定门店测试数据(如 S001)"
|
||||
echo " seed --clear <shop> 先清空再写入(单店)"
|
||||
echo " reset 删表重建(AutoMigrate)"
|
||||
echo " clear 清空所有业务数据"
|
||||
echo ""
|
||||
@@ -135,7 +157,7 @@ case "$COMMAND" in
|
||||
esac
|
||||
;;
|
||||
seed)
|
||||
cmd_seed "${2:-}"
|
||||
cmd_seed "${2:-}" "${3:-}"
|
||||
exit 0
|
||||
;;
|
||||
reset)
|
||||
|
||||
Reference in New Issue
Block a user