penisularhr / src / modules / audit-log / audit-log.entity.ts
audit-log.entity.ts
Raw
import { Column, Entity, ManyToOne } from 'typeorm';

import { AbstractEntity } from '../../common/abstract.entity';
import { OperateType } from '../../constants';
import { UseDto } from '../../decorators';
import { UserEntity } from '../user/user.entity';
import { AuditLogDto } from './dtos/audit-log.dto';

@Entity({ name: 'audit_logs' })
@UseDto(AuditLogDto)
export class AuditLogEntity extends AbstractEntity<AuditLogDto> {
  @Column({ type: 'enum', enum: OperateType })
  operateType!: OperateType;

  @Column()
  tableName!: string;

  @Column({ nullable: true })
  itemId!: Uuid;

  @Column({ type: 'text' })
  summaryChanges!: string;

  @Column({ type: 'text', nullable: true })
  oldValue!: string | null;

  @Column({ type: 'text', nullable: true })
  newValue!: string | null;

  @ManyToOne(() => UserEntity, (user) => user.auditLog)
  user!: UserEntity;
}