diff --git a/Fabric.Backend.Center/package.json b/Fabric.Backend.Center/package.json index 9186873..b40c54a 100644 --- a/Fabric.Backend.Center/package.json +++ b/Fabric.Backend.Center/package.json @@ -11,7 +11,10 @@ "lint:fix": "eslint 'src/**/*.ts' --fix", "format": "prettier --write 'src/**/*.ts'", "test:unit": "vitest run src/**/*.spec.ts --exclude src/*.integration.spec.ts --exclude dist/**", - "test:integration": "vitest run src/*.integration.spec.ts --exclude dist/**" + "test:integration": "vitest run src/*.integration.spec.ts --exclude dist/**", + "migration:generate": "node --require ts-node/register ./node_modules/typeorm/cli.js migration:generate src/migrations/AutoMigration -d src/data-source.ts", + "migration:run": "node --require ts-node/register ./node_modules/typeorm/cli.js migration:run -d src/data-source.ts", + "migration:revert": "node --require ts-node/register ./node_modules/typeorm/cli.js migration:revert -d src/data-source.ts" }, "dependencies": { "@nestjs/common": "^10.4.8", diff --git a/Fabric.Backend.Center/src/data-source.ts b/Fabric.Backend.Center/src/data-source.ts new file mode 100644 index 0000000..521bcdd --- /dev/null +++ b/Fabric.Backend.Center/src/data-source.ts @@ -0,0 +1,16 @@ +import 'reflect-metadata'; +import { DataSource, DataSourceOptions } from 'typeorm'; +import { buildTypeOrmConfig } from './database.config'; + +const cfg = buildTypeOrmConfig(); + +const options: DataSourceOptions = { + ...(cfg as Record), + type: 'mysql', + migrations: ['src/migrations/*.{ts,js}'], + synchronize: false, +} as DataSourceOptions; + +export const AppDataSource = new DataSource(options); + +export default AppDataSource; diff --git a/Fabric.Backend.Center/src/migrations/.gitkeep b/Fabric.Backend.Center/src/migrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Fabric.Backend.Guild/package.json b/Fabric.Backend.Guild/package.json index 265e7c0..e393a85 100644 --- a/Fabric.Backend.Guild/package.json +++ b/Fabric.Backend.Guild/package.json @@ -11,7 +11,10 @@ "lint:fix": "eslint 'src/**/*.ts' --fix", "format": "prettier --write 'src/**/*.ts'", "test:unit": "vitest run src/**/*.spec.ts --exclude src/*.integration.spec.ts --exclude dist/**", - "test:integration": "vitest run src/*.integration.spec.ts --exclude dist/**" + "test:integration": "vitest run src/*.integration.spec.ts --exclude dist/**", + "migration:generate": "node --require ts-node/register ./node_modules/typeorm/cli.js migration:generate src/migrations/AutoMigration -d src/data-source.ts", + "migration:run": "node --require ts-node/register ./node_modules/typeorm/cli.js migration:run -d src/data-source.ts", + "migration:revert": "node --require ts-node/register ./node_modules/typeorm/cli.js migration:revert -d src/data-source.ts" }, "dependencies": { "@nestjs/common": "^10.4.8", diff --git a/Fabric.Backend.Guild/src/data-source.ts b/Fabric.Backend.Guild/src/data-source.ts new file mode 100644 index 0000000..521bcdd --- /dev/null +++ b/Fabric.Backend.Guild/src/data-source.ts @@ -0,0 +1,16 @@ +import 'reflect-metadata'; +import { DataSource, DataSourceOptions } from 'typeorm'; +import { buildTypeOrmConfig } from './database.config'; + +const cfg = buildTypeOrmConfig(); + +const options: DataSourceOptions = { + ...(cfg as Record), + type: 'mysql', + migrations: ['src/migrations/*.{ts,js}'], + synchronize: false, +} as DataSourceOptions; + +export const AppDataSource = new DataSource(options); + +export default AppDataSource; diff --git a/Fabric.Backend.Guild/src/migrations/.gitkeep b/Fabric.Backend.Guild/src/migrations/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/TODO-backend-center-guild.md b/docs/TODO-backend-center-guild.md index 127a855..8be1c39 100644 --- a/docs/TODO-backend-center-guild.md +++ b/docs/TODO-backend-center-guild.md @@ -94,7 +94,7 @@ ## 6. 部署与运维 - [x] `docker-compose.prod.yml`(去掉 `DB_SYNC=true`) -- [ ] DB migration 机制(TypeORM migration) +- [x] DB migration 机制(TypeORM migration) - [ ] 结构化日志 + request id - [ ] 基础监控指标(QPS、延迟、错误率) - [ ] 备份与恢复流程文档