TypeORM cung cấp decorators tiện lợi cho timestamps và soft delete:
typescript
import {
CreateDateColumn, UpdateDateColumn, DeleteDateColumn,
PrimaryGeneratedColumn, Column, Entity,
} from 'typeorm';
@Entity()
export class BaseEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@CreateDateColumn() // Tự set khi INSERT
createdAt: Date;
@UpdateDateColumn() // Tự update khi UPDATE
updatedAt: Date;
@DeleteDateColumn() // Tự set khi softDelete(), NULL khi active
deletedAt: Date | null;
}Soft delete với TypeORM:
typescript
// Soft delete — set deletedAt
await this.repo.softDelete(id);
// Restore
await this.repo.restore(id);
// find() tự động filter deletedAt IS NULL
// Để include deleted:
await this.repo.find({ withDeleted: true });Pitfall: @DeleteDateColumn chỉ hoạt động khi dùng softDelete() và softRemove() — không phải delete() hay remove().