From 5600b27cf4b3af06fc3e8372d6e396c028ae4d50 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Wed, 22 Jan 2025 16:22:43 +0700 Subject: [PATCH] update relations goods and request order --- src/entity/goods.ts | 7 ++--- src/entity/request_orders.ts | 52 +++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/src/entity/goods.ts b/src/entity/goods.ts index 04de721..da3fb8e 100644 --- a/src/entity/goods.ts +++ b/src/entity/goods.ts @@ -70,7 +70,7 @@ export class Goods { updated_by: string; @ManyToOne(() => AssetCategory, (category) => category.goods, { - nullable: true, + nullable: true, onDelete: 'SET NULL', }) @Index() @@ -85,9 +85,10 @@ export class Goods { @JoinColumn({ name: 'supplier_id' }) supplier: Supplier; + @ManyToOne(() => RequestOrder, (requestOrder) => requestOrder.goods, { - nullable: true, - onDelete: 'SET NULL', + nullable: true, + onDelete: 'CASCADE', }) @JoinColumn({ name: 'request_order_id' }) request_order: RequestOrder; diff --git a/src/entity/request_orders.ts b/src/entity/request_orders.ts index 707f2ad..e9c7644 100644 --- a/src/entity/request_orders.ts +++ b/src/entity/request_orders.ts @@ -5,19 +5,33 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, - OneToMany, + ManyToOne, + JoinColumn, } from 'typeorm'; import { Goods } from './goods'; +enum ApprovalStatus { + PENDING = 'PENDING', + APPROVED = 'APPROVED', + REJECTED = 'REJECTED', +} + +enum RequestOrderStatus { + DRAFT = 'DRAFT', + SUBMITTED = 'SUBMITTED', + APPROVED = 'APPROVED', + REJECTED = 'REJECTED', +} + @Entity('request_orders') export class RequestOrder { @PrimaryGeneratedColumn('uuid') - id: string; + id: string; @Column({ nullable: false, length: 128, - unique: true, + unique: true, }) order_number: string; @@ -48,10 +62,11 @@ export class RequestOrder { remarks: string | null; @Column({ - length: 64, + type: 'enum', + enum: RequestOrderStatus, nullable: false, }) - status: string; + status: RequestOrderStatus; @Column({ length: 2, @@ -73,12 +88,11 @@ export class RequestOrder { spv_approval_date: Date | null; @Column({ - type: 'varchar', - length: 16, - nullable: true, - default: 'PENDING', + type: 'enum', + enum: ApprovalStatus, + default: ApprovalStatus.PENDING, }) - spv_approval_status: 'PENDING' | 'APPROVED' | 'REJECTED'; + spv_approval_status: ApprovalStatus; // General Manager Approval @Column({ @@ -94,22 +108,22 @@ export class RequestOrder { gm_approval_date: Date | null; @Column({ - type: 'varchar', - length: 16, - nullable: true, - default: 'PENDING', + type: 'enum', + enum: ApprovalStatus, + default: ApprovalStatus.PENDING, }) - gm_approval_status: 'PENDING' | 'APPROVED' | 'REJECTED'; + gm_approval_status: ApprovalStatus; // Relation with Goods - @OneToMany(() => Goods, (goods) => goods.request_order) - goods: Goods[]; + @ManyToOne(() => Goods, (goods) => goods.request_order) + @JoinColumn({ name: 'goods_id' }) + goods: Goods; @CreateDateColumn() created_at: Date; - @UpdateDateColumn({ nullable: true }) - updated_at: Date | null; + @UpdateDateColumn() + updated_at: Date; @DeleteDateColumn({ nullable: true }) deleted_at: Date | null;