72 lines
1.9 KiB
TypeScript
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[];
|
|
}
|