import { Column, Entity, JoinColumn, ManyToOne } from 'typeorm'; import { AbstractEntity } from '../../common/abstract.entity'; import { UseDto } from '../../decorators'; import { NumberTransformer } from '../../transformer/number-transformer'; import { EmployeeEntity } from '../employee/employee.entity'; import { IncentiveRecordDto } from './dtos/incentive-record.dto'; import { IncentiveSettingEntity } from './incentive-settings.entity'; @Entity({ name: 'incentive_records' }) @UseDto(IncentiveRecordDto) export class IncentiveRecordEntity extends AbstractEntity { @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) amount!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) quantity!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) threshold!: number; @Column({ type: 'timestamp' }) date!: Date; @ManyToOne( () => EmployeeEntity, (employeeEntity) => employeeEntity.incentiveRecord, { onUpdate: 'CASCADE', }, ) @JoinColumn({ name: 'employee_id', foreignKeyConstraintName: 'incentive_record_employee', }) employee!: EmployeeEntity; @ManyToOne( () => IncentiveSettingEntity, (incentiveSettingEntity) => incentiveSettingEntity.incentiveRecord, { onUpdate: 'CASCADE', }, ) @JoinColumn({ name: 'incentive_setting_id', foreignKeyConstraintName: 'incentiveSetting', }) incentiveSetting!: IncentiveSettingEntity; }