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

import { AbstractEntity } from '../../common/abstract.entity';
import { UseDto } from '../../decorators';
import { NumberTransformer } from '../../transformer/number-transformer';
import { ActivityRecordSettingEntity } from '../activity-record/activity-record-setting.entity';
import { BlockEntity } from '../block/block.entity';
import { VehicleRecordDto } from './dtos/vehicle-record.dto';
import { VehicleNameEntity } from './vehicle-name.entity';

@Entity({ name: 'vehicle_records' })
@UseDto(VehicleRecordDto)
export class VehicleRecordEntity extends AbstractEntity<VehicleRecordDto> {
  @Column({ type: 'timestamp' })
  date!: Date;

  @Column({
    type: 'decimal',
    precision: 6,
    scale: 2,
    transformer: new NumberTransformer(),
  })
  hour!: number;

  @ManyToOne(() => BlockEntity, (blockEntity) => blockEntity.vehicleRecord, {
    onUpdate: 'CASCADE',
  })
  @JoinColumn({
    name: 'block_id',
    foreignKeyConstraintName: 'vehicle_record_block',
  })
  block!: BlockEntity;

  @ManyToOne(
    () => VehicleNameEntity,
    (vehicleNameEntity) => vehicleNameEntity.vehicleRecord,
    {
      onUpdate: 'CASCADE',
    },
  )
  @JoinColumn({
    name: 'vehicle_name_id',
    foreignKeyConstraintName: 'vehicle_record_vehicle_name',
  })
  vehicleName!: VehicleNameEntity;

  @ManyToOne(
    () => ActivityRecordSettingEntity,
    (activityRecordSettingEntity) => activityRecordSettingEntity.otRecord,
    {
      onUpdate: 'CASCADE',
    },
  )
  @JoinColumn({
    name: 'activity_setting_id',
    foreignKeyConstraintName: 'vehicle_record_activity_setting',
  })
  activitySetting!: ActivityRecordSettingEntity;
}