Миграция
data-source.ts - файл нужен для TypeORM CLI, чтобы он знал, как подключаться к базе и где искать entity.
123456789101112131415161718// src/data-source.tsimport { DataSource } from "typeorm";import { config } from "dotenv";config();export default new DataSource({type: "postgres",host: process.env.DB_HOST,port: parseInt(process.env.DB_PORT || "5432")username: process.env.DB_USERNAME,password: process.env.DB_PASSWORD || "",database: process.env.DB_NAME,entities: ["src/**/*.entity.ts"],migrations: ["src/migrations/*.ts"],synchronize: false,logging: true,});
Важно:
- entities: ["src/**/*.entity.ts"] - подхватит все entity автоматически
- synchronize: false - в проде должно быть false всегда!
synchronize: true vs false
- synchronize: true - Автоматом обновляет базу при изменении entity
- synchronize: false - Ты сам контролируешь изменения через миграции
Команды для миграций
12345678910{"scripts": {"typeorm": "ts-node ./node_modules/typeorm/cli.js","migration:show": "npm run typeorm -- migration:show -d src/data-source.ts","migration:generate": "npm run typeorm -- migration:generate -d src/data-source.ts","migration:run": "npm run typeorm -- migration:run -d src/data-source.ts","migration:revert": "npm run typeorm -- migration:revert -d src/data-source.ts","migration:create": "ts-node ./node_modules/typeorm/cli.js migration:create"}}
- npm run migration:show - Показывает статус всех миграций
- npm run migration:generate -- src/migrations/Name - Авто-генерация миграции (сравнивает entity с БД)
- npm run migration:create -- src/migrations/Name - Создать пустую миграцию (писать руками)
- npm run migration:run - Применить все невыполненные миграции
- npm run migration:revert - Откатить последнюю миграцию