| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/bin/bash
- # TypeORM 迁移创建自动化脚本
- #
- # 用法: pnpm run migration:create -- -n MigrationName
- #
- # 功能:
- # 1. 调用 TypeORM CLI 生成迁移文件
- # 2. 自动更新 migrations/index.ts Barrel 文件
- # 3. 自动更新 src/data-source.ts 的 migrations 数组
- set -e # 遇到错误立即退出
- # 获取迁移名称参数
- MIGRATION_NAME="${1:-}"
- if [ -z "$MIGRATION_NAME" ]; then
- echo "错误:请提供迁移名称"
- echo "用法: pnpm run migration:create -- -n MigrationName"
- exit 1
- fi
- echo "=========================================="
- echo "TypeORM 迁移创建工具"
- echo "=========================================="
- echo "迁移名称: $MIGRATION_NAME"
- echo ""
- # 进入 server 目录
- cd "$(dirname "$0")/.."
- # 1. 调用 TypeORM CLI 生成迁移文件
- echo "步骤 1: 生成迁移文件..."
- pnpm exec typeorm-ts-node-commonjs migration:generate -d src/data-source.ts -n "$MIGRATION_NAME"
- # 查找新生成的迁移文件
- MIGRATION_FILE=$(find migrations -name "*.ts" -type f | grep -v index.ts | tail -1)
- if [ -z "$MIGRATION_FILE" ]; then
- echo "错误:未找到生成的迁移文件"
- exit 1
- fi
- echo "生成的迁移文件: $MIGRATION_FILE"
- # 提取迁移类名(不含扩展名)
- MIGRATION_CLASS=$(basename "$MIGRATION_FILE" .ts)
- # 2. 更新 migrations/index.ts Barrel 文件
- echo ""
- echo "步骤 2: 更新 migrations/index.ts..."
- if ! grep -q "$MIGRATION_CLASS" migrations/index.ts 2>/dev/null; then
- # 追加导出语句到 index.ts
- echo "export { $MIGRATION_CLASS } from './$MIGRATION_CLASS';" >> migrations/index.ts
- echo "已添加 $MIGRATION_CLASS 到 migrations/index.ts"
- else
- echo "$MIGRATION_CLASS 已存在于 migrations/index.ts"
- fi
- # 3. 更新 src/data-source.ts 的 migrations 数组
- echo ""
- echo "步骤 3: 更新 src/data-source.ts..."
- if ! grep -q "$MIGRATION_CLASS" src/data-source.ts; then
- # 在 migrations 数组中添加新类(在最后一个元素后添加)
- # 使用 awk 查找 // 添加新迁移时... 这一行,并在其前面插入新类
- awk -v class="$MIGRATION_CLASS" '
- /\/\/ 添加新迁移时,在此处添加对应的/ {
- print " " class ","
- }
- { print }
- ' src/data-source.ts > src/data-source.ts.tmp && mv src/data-source.ts.tmp src/data-source.ts
- echo "已添加 $MIGRATION_CLASS 到 src/data-source.ts"
- else
- echo "$MIGRATION_CLASS 已存在于 src/data-source.ts"
- fi
- echo ""
- echo "=========================================="
- echo "迁移创建完成!"
- echo "=========================================="
- echo ""
- echo "下一步操作:"
- echo "1. 检查并编辑迁移文件: $MIGRATION_FILE"
- echo "2. 运行迁移: pnpm migration:run"
- echo ""
|