diff --git a/src/database/migrations/1729582398827-item-queue-on-delete.ts b/src/database/migrations/1729582398827-item-queue-on-delete.ts new file mode 100644 index 0000000..09fe090 --- /dev/null +++ b/src/database/migrations/1729582398827-item-queue-on-delete.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class ItemQueueOnDelete1729582398827 implements MigrationInterface { + name = 'ItemQueueOnDelete1729582398827'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "items" DROP CONSTRAINT "FK_2cbbeb03e176addcf60d65f7c9c"`, + ); + + await queryRunner.query( + `ALTER TABLE "items" ADD CONSTRAINT "FK_2cbbeb03e176addcf60d65f7c9c" FOREIGN KEY ("item_queue_id") REFERENCES "item_queues"("id") ON DELETE SET NULL ON UPDATE CASCADE`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "items" DROP CONSTRAINT "FK_2cbbeb03e176addcf60d65f7c9c"`, + ); + + await queryRunner.query( + `ALTER TABLE "items" ADD CONSTRAINT "FK_2cbbeb03e176addcf60d65f7c9c" FOREIGN KEY ("item_queue_id") REFERENCES "item_queues"("id") ON DELETE CASCADE ON UPDATE CASCADE`, + ); + } +} diff --git a/src/modules/item-related/item-queue/data/models/item-queue.model.ts b/src/modules/item-related/item-queue/data/models/item-queue.model.ts index 293a849..61e7d39 100644 --- a/src/modules/item-related/item-queue/data/models/item-queue.model.ts +++ b/src/modules/item-related/item-queue/data/models/item-queue.model.ts @@ -21,7 +21,6 @@ export class ItemQueueModel item_type: ItemType; @OneToMany(() => ItemModel, (model) => model.item_queue, { - onDelete: 'CASCADE', onUpdate: 'CASCADE', }) items: ItemModel[]; diff --git a/src/modules/item-related/item-queue/domain/usecases/managers/delete-item-queue.manager.ts b/src/modules/item-related/item-queue/domain/usecases/managers/delete-item-queue.manager.ts index db63c0c..360aa89 100644 --- a/src/modules/item-related/item-queue/domain/usecases/managers/delete-item-queue.manager.ts +++ b/src/modules/item-related/item-queue/domain/usecases/managers/delete-item-queue.manager.ts @@ -26,13 +26,7 @@ export class DeleteItemQueueManager extends BaseDeleteManager { } get validateRelations(): validateRelations[] { - return [ - { - relation: 'items', - message: - 'Gagal! tidak dapat mengubah tipe item karena sudah berelasi dengan item', - }, - ]; + return []; } get entityTarget(): any { diff --git a/src/modules/item-related/item/data/models/item.model.ts b/src/modules/item-related/item/data/models/item.model.ts index 14df792..52f5f9f 100644 --- a/src/modules/item-related/item/data/models/item.model.ts +++ b/src/modules/item-related/item/data/models/item.model.ts @@ -88,7 +88,7 @@ export class ItemModel @ManyToOne(() => ItemQueueModel, (model) => model.items, { onUpdate: 'CASCADE', - onDelete: 'CASCADE', + onDelete: 'SET NULL', }) @JoinColumn({ name: 'item_queue_id' }) item_queue: ItemQueueModel;