- Configurando TypeORM
- Exemplo de migration de criação
- Commandos de typeorm para migrations
- Configurando Models
yarn add typeorm pg reflect-metadata
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "docker",
"database": "gostack_gobarber",
"entities": [
"./src/models/*.ts"
],
"migrations": [
"./src/database/migrations/*.ts"
],
"cli": {
"migrationsDir": "./src/database/migrations"
}
}
import { createConnection } from 'typeorm'
createConnection();
...
"scripts" : {
...
"typeorm": "ts-node-dev ./node_modules/typeorm/cli.js",
...
}
...
yarn typeorm migration:create -n CreateAppointments
import { MigrationInterface, QueryRunner, Table } from "typeorm";
export class CreateAppointments1608663619421 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: 'appointments',
columns: [
{
name: 'id',
type: 'varchar',
isPrimary: true,
generationStrategy: 'uuid',
},
{
name: 'provider',
type: 'varchar',
isNullable: false,
},
{
name: 'date',
type: 'timestamp with time zone',
isNullable: false,
}
]
})
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.dropTable('appointments');
}
}
1. Executar migrations:
yarn typeorm migration:run
2. Reverter ultima migrations:
yarn typeorm migration:revert
3. Mostrar log de migrations:
yarn typeorm migration:show
{
...
"strictPropertyInitialization": false, /* Enable strict checking of property initialization in classes. */
...
"experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
"emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
...
}