feat(db): enhance Makefile migrate-db to run all *.migrate.*.sql sequentially
This commit is contained in:
parent
e8635c1758
commit
48fdc445a1
@ -5,6 +5,7 @@ OS := $(shell uname -s)
|
||||
SCHEMA_FILE := ./sql/schema.sql
|
||||
MIGRATION_FILES := $(shell ls -1 sql/*.migrate.*.sql 2>/dev/null | sort)
|
||||
|
||||
|
||||
DB_NAME := account
|
||||
DB_USER := shenlan
|
||||
DB_PASS := password
|
||||
@ -58,19 +59,30 @@ init-db:
|
||||
fi
|
||||
@echo "使用数据库连接: $(DB_URL)"
|
||||
@psql "$(DB_URL)" -v ON_ERROR_STOP=1 -f $(SCHEMA_FILE)
|
||||
|
||||
# =========================================
|
||||
# migrate-db target
|
||||
# =========================================
|
||||
migrate-db:
|
||||
@echo ">>> 执行数据库 schema 迁移 (level/role metadata & MFA/email verification)"
|
||||
@if [ -z "$(MIGRATION_FILES)" ]; then \
|
||||
echo "❌ 未找到迁移 SQL 文件 (sql/*.migrate.*.sql)"; \
|
||||
@echo ">>> 执行数据库 schema 迁移 (level/role/MFA/email verification)"
|
||||
@echo "--------------------------------------------"
|
||||
@echo "使用数据库连接: $(DB_URL)"
|
||||
@if ! command -v psql >/dev/null 2>&1; then \
|
||||
echo "未检测到 psql,请先安装 PostgreSQL 客户端"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@MIGRATION_FILE=$$(echo $(MIGRATION_FILES) | tr ' ' '\n' | tail -n 1); \
|
||||
echo "--------------------------------------------"; \
|
||||
echo "使用数据库连接: $(DB_URL)"; \
|
||||
echo "执行迁移文件: $$MIGRATION_FILE"; \
|
||||
echo "--------------------------------------------"; \
|
||||
psql "$(DB_URL)" -v ON_ERROR_STOP=1 -f $$MIGRATION_FILE; \
|
||||
echo "✅ 数据库迁移完成: $$MIGRATION_FILE"
|
||||
@if [ -z "$(MIGRATION_FILES)" ]; then \
|
||||
echo "未找到迁移 SQL 文件 (*.migrate.*.sql)"; \
|
||||
exit 0; \
|
||||
fi
|
||||
@for file in $(MIGRATION_FILES); do \
|
||||
echo "执行迁移文件: $$file"; \
|
||||
echo "--------------------------------------------"; \
|
||||
psql "$(DB_URL)" -v ON_ERROR_STOP=1 -f $$file || { echo "❌ $$file 执行失败"; exit 1; }; \
|
||||
echo "✅ $$file 执行完成"; \
|
||||
echo ""; \
|
||||
done
|
||||
@echo "✅ 所有迁移执行完成"
|
||||
|
||||
# 删除数据库(安全防呆)
|
||||
drop-db:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user