import { Column, Entity, OneToMany } from 'typeorm'; import { AbstractEntity } from '../../common/abstract.entity'; import { IncentiveName, IncentivePeriod, IncentiveType } from '../../constants'; import { UseDto } from '../../decorators'; import { NumberTransformer } from '../../transformer/number-transformer'; import { IncentiveSettingDto } from './dtos/incentive-settings.dto'; import { IncentiveRecordEntity } from './incentive-record.entity'; @Entity({ name: 'incentive_settings' }) @UseDto(IncentiveSettingDto) export class IncentiveSettingEntity extends AbstractEntity<IncentiveSettingDto> { @Column({ type: 'enum', enum: IncentiveName }) name!: IncentiveName; @Column({ type: 'boolean', default: true }) isActive!: boolean; @Column({ nullable: true }) unit?: string; @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(), }) threshold!: number; @Column({ type: 'enum', enum: IncentiveType, default: IncentiveType.FIXED_AMOUNT, }) type!: IncentiveType; @Column({ type: 'enum', enum: IncentivePeriod, }) period!: IncentivePeriod; @OneToMany( () => IncentiveRecordEntity, (incentiveRecordEntity) => incentiveRecordEntity.incentiveSetting, ) incentiveRecord!: IncentiveRecordEntity[]; }