103 lines
2.7 KiB
TypeScript
103 lines
2.7 KiB
TypeScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
CreateDateColumn,
|
|
ManyToOne,
|
|
JoinColumn,
|
|
ManyToMany,
|
|
JoinTable,
|
|
Unique,
|
|
} from 'typeorm';
|
|
import { ShopDrawing } from './shop-drawing.entity';
|
|
import { ContractDrawing } from './contract-drawing.entity';
|
|
import { Attachment } from '../../../common/file-storage/entities/attachment.entity';
|
|
import { User } from '../../user/entities/user.entity';
|
|
|
|
@Entity('shop_drawing_revisions')
|
|
@Unique(['shopDrawingId', 'isCurrent'])
|
|
export class ShopDrawingRevision {
|
|
@PrimaryGeneratedColumn()
|
|
id!: number; // เติม !
|
|
|
|
@Column({ name: 'shop_drawing_id' })
|
|
shopDrawingId!: number; // เติม !
|
|
|
|
@Column({ name: 'revision_number' })
|
|
revisionNumber!: number; // เติม !
|
|
|
|
@Column({ name: 'title', length: 255 })
|
|
title!: string; // เติม !
|
|
|
|
@Column({ name: 'legacy_drawing_number', length: 100, nullable: true })
|
|
legacyDrawingNumber?: string;
|
|
|
|
@Column({ name: 'revision_label', length: 10, nullable: true })
|
|
revisionLabel?: string; // nullable ใช้ ?
|
|
|
|
@Column({ name: 'revision_date', type: 'date', nullable: true })
|
|
revisionDate?: Date; // nullable ใช้ ?
|
|
|
|
@Column({ type: 'text', nullable: true })
|
|
description?: string; // nullable ใช้ ?
|
|
|
|
@CreateDateColumn({ name: 'created_at' })
|
|
createdAt!: Date; // เติม !
|
|
|
|
@Column({
|
|
name: 'is_current',
|
|
type: 'boolean',
|
|
nullable: true,
|
|
default: null,
|
|
})
|
|
isCurrent?: boolean | null;
|
|
|
|
@Column({ name: 'created_by', nullable: true })
|
|
createdBy?: number;
|
|
|
|
@Column({ name: 'updated_by', nullable: true })
|
|
updatedBy?: number;
|
|
|
|
// Relations
|
|
@ManyToOne(() => ShopDrawing, (shopDrawing) => shopDrawing.revisions, {
|
|
onDelete: 'CASCADE',
|
|
})
|
|
@JoinColumn({ name: 'shop_drawing_id' })
|
|
shopDrawing!: ShopDrawing; // เติม !
|
|
|
|
@ManyToOne(() => User)
|
|
@JoinColumn({ name: 'created_by' })
|
|
creator?: User;
|
|
|
|
@ManyToOne(() => User)
|
|
@JoinColumn({ name: 'updated_by' })
|
|
updater?: User;
|
|
|
|
// References to Contract Drawings (M:N)
|
|
@ManyToMany(() => ContractDrawing)
|
|
@JoinTable({
|
|
name: 'shop_drawing_revision_contract_refs',
|
|
joinColumn: {
|
|
name: 'shop_drawing_revision_id',
|
|
referencedColumnName: 'id',
|
|
},
|
|
inverseJoinColumn: {
|
|
name: 'contract_drawing_id',
|
|
referencedColumnName: 'id',
|
|
},
|
|
})
|
|
contractDrawings!: ContractDrawing[]; // เติม !
|
|
|
|
// Attachments (M:N)
|
|
@ManyToMany(() => Attachment)
|
|
@JoinTable({
|
|
name: 'shop_drawing_revision_attachments',
|
|
joinColumn: {
|
|
name: 'shop_drawing_revision_id',
|
|
referencedColumnName: 'id',
|
|
},
|
|
inverseJoinColumn: { name: 'attachment_id', referencedColumnName: 'id' },
|
|
})
|
|
attachments!: Attachment[]; // เติม ! (ตัวที่ error)
|
|
}
|