26 lines
743 B
TypeScript
Executable File
26 lines
743 B
TypeScript
Executable File
import { Index, PrimaryKey, Property, Filter, OptionalProps } from '@mikro-orm/core';
|
|
import { ulid } from 'ulid';
|
|
|
|
@Filter({ name: 'notDeleted', cond: { deletedAt: null }, default: true })
|
|
@Index({ properties: ['deletedAt'] })
|
|
@Index({ properties: ['createdAt'] })
|
|
export abstract class BaseEntity {
|
|
[OptionalProps]?: 'id' | 'createdAt' | 'updatedAt' | 'deletedAt';
|
|
|
|
@PrimaryKey({ type: 'string', columnType: 'char(26)' })
|
|
id: string = ulid();
|
|
|
|
@Property({ defaultRaw: 'now()', columnType: 'timestamptz' })
|
|
createdAt: Date = new Date();
|
|
|
|
@Property({
|
|
onUpdate: () => new Date(),
|
|
defaultRaw: 'now()',
|
|
columnType: 'timestamptz',
|
|
})
|
|
updatedAt: Date = new Date();
|
|
|
|
@Property({ nullable: true })
|
|
deletedAt?: Date;
|
|
}
|