feat(db): enhance Makefile migrate-db to run all *.migrate.*.sql sequentially

This commit is contained in:
root 2025-10-08 20:02:50 +08:00
parent e8635c1758
commit 48fdc445a1

View File

@ -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: