Migrations

Geração e execução de migrations TypeORM no Koala Nest.

Migrations ficam em src/infra/database/migrations/ e são gerenciadas pelos scripts do projeto gerado.

bash
bun run migration:generate # gera migration a partir das entidades
bun run migration:run      # aplica migrations pendentes
bun run migration:revert   # reverte a última migration

O script generate-migration.ts encapsula a CLI do TypeORM:

typescript
const isAutoName = !process.argv[2];
const timestamp = String(Date.now());
const name = process.argv[2] ?? `Migration-${timestamp}`;

const migrationPath = path.join('src/infra/database/migrations', name);
const command = [
  './node_modules/typeorm/cli.js',
  'migration:generate',
  migrationPath,
  '-d',
  './src/infra/database/migrations/migration-datasource.ts',
];

if (isAutoName) {
  command.push('-t', timestamp);
}

const result = spawnSync(process.execPath, command, {
  stdio: 'inherit',
  cwd: process.cwd(),
});

process.exit(result.status ?? 1);
bash
# nome automático com timestamp
bun run migration:generate

# nome explícito
bun run migration:generate AddProductTable

Migrations usam um datasource dedicado em migration-datasource.ts, separado do factory de runtime:

typescript
export default new DataSource({
  type: 'postgres',
  url: process.env.DATABASE_URL,
  entities: [path.join(root, 'src/domain/entities/**/*.{js,ts}')],
  migrations: [path.join(root, 'src/infra/database/migrations/[0-9]*.{js,ts}')],
  migrationsTableName: 'migrations',
  migrationsTransactionMode: 'all',
});

Entidades são descobertas por glob — basta criar o arquivo em src/domain/entities/. O dataSourceFactory de runtime, porém, lista entidades explicitamente no array entities.

  1. Altere ou crie entidades em src/domain/entities/.
  2. Registre novas entidades no dataSourceFactory (runtime).
  3. Execute bun run migration:generate.
  4. Revise o arquivo gerado em src/infra/database/migrations/.
  5. Aplique com bun run migration:run.

O template Person inclui uma migration inicial consolidada:

  • 1781281330533-Init.ts — schema completo (person, person_address, person_contact, users) e usuário demo

Serve como referência de nomenclatura e estrutura. Novas alterações de schema devem gerar migrations incrementais com migration:generate.

Koala Nest

Facilitador para criar APIs NestJS com arquitetura DDD. Código copiado para o seu repositório — legível, adaptável e sob seu controle.

Creator

igordrangel.com.br

Design, back-end e estratégia de produto.

Comandos rápidos

CLI global e scripts no projeto gerado

  • bun install -g @koalarx/nest
  • kl-nest new
  • kl-nest add cache
  • bun run migration:run # template CRUD
  • kl-nest --help
© 2026 Koala NestFeito para desenvolvedores NestJS e fluxos assistidos por IA.