TypeORM helper
entity/Task.ts
import { Entity, PrimaryColumn, Column } from 'typeorm'
@Entity()
export class Task {
@PrimaryColumn()
id: number
@Column({ length: 100 })
label: string
@Column({ default: false })
done: boolean
}
subscriber/TaskSubscriber.ts
import { EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'
import { Task } from '../entity/Task'
@EventSubscriber()
export class TaskSubscriber implements EntitySubscriberInterface<Task> {
listenTo() {
return Task
}
afterInsert(event: InsertEvent<Task>) {
console.log(event)
}
}
ormconfig.ts
import { ConnectionOptions } from 'typeorm'
import dotenv from 'dotenv'
dotenv.config()
const options: ConnectionOptions = {
type: 'mysql',
host: process.env.TYPEORM_HOST,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE,
port: Number(process.env.TYPEORM_PORT),
synchronize: false,
logging: false,
entities: ['entity/**/*.ts'],
migrations: ['migration/**/*.ts'],
cli: {
migrationsDir: 'migration'
}
}
// @ts-ignore
export = options
package.json
{
"scripts": {
"migration:generate": "typeorm migration:generate -n Task",
"typeormer": "typeormer"
}
}
tarminal
$ npm run migration:generate # created migration/xxx-Task.ts
$ npm run typeormer # created $orm.ts
index.ts
import 'reflect-metadata'
import { createConnection } from 'typeorm'
import ormconfig from './ormconfig'
import options from './$orm'
const connection = await createConnection({
...ormconfig,
...options
})
TypeORMer is licensed under a MIT License.