Files
lcbp3/backend/src/modules/rfa/entities/rfa-revision.entity.ts
T
admin 15b447ceeb
Build and Deploy / deploy (push) Successful in 5m42s
260310:1705 20260310:1700 Refactor rfas
2026-03-10 17:05:30 +07:00

72 lines
1.9 KiB
TypeScript

// File: src/modules/rfa/entities/rfa-revision.entity.ts
import {
Column,
Entity,
JoinColumn,
ManyToOne,
OneToMany,
PrimaryColumn,
OneToOne,
} from 'typeorm';
import { CorrespondenceRevision } from '../../correspondence/entities/correspondence-revision.entity';
import { RfaApproveCode } from './rfa-approve-code.entity';
import { RfaItem } from './rfa-item.entity';
import { RfaStatusCode } from './rfa-status-code.entity';
import { RfaWorkflow } from './rfa-workflow.entity';
@Entity('rfa_revisions')
export class RfaRevision {
@PrimaryColumn()
id!: number;
@OneToOne(() => CorrespondenceRevision, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'id' })
correspondenceRevision!: CorrespondenceRevision;
@Column({ name: 'rfa_status_code_id' })
rfaStatusCodeId!: number;
@Column({ name: 'rfa_approve_code_id', nullable: true })
rfaApproveCodeId?: number;
@Column({ name: 'approved_date', type: 'date', nullable: true })
approvedDate?: Date;
// --- JSON & Schema Section ---
@Column({ type: 'json', nullable: true })
details?: any;
// ✅ [New] จำเป็นสำหรับ Data Migration (T2.5.5)
@Column({ name: 'schema_version', default: 1 })
schemaVersion!: number;
// ✅ Virtual Column
@Column({
name: 'v_ref_drawing_count',
type: 'int',
generatedType: 'VIRTUAL',
asExpression: "JSON_UNQUOTE(JSON_EXTRACT(details, '$.drawingCount'))",
nullable: true,
})
vRefDrawingCount?: number;
// --- Relations ---
@ManyToOne(() => RfaStatusCode)
@JoinColumn({ name: 'rfa_status_code_id' })
statusCode!: RfaStatusCode;
@ManyToOne(() => RfaApproveCode)
@JoinColumn({ name: 'rfa_approve_code_id' })
approveCode?: RfaApproveCode;
@OneToMany(() => RfaItem, (item) => item.rfaRevision, { cascade: true })
items!: RfaItem[];
@OneToMany(() => RfaWorkflow, (workflow) => workflow.rfaRevision, {
cascade: true,
})
workflows!: RfaWorkflow[];
}