diff --git a/src/database/migrations/1722922766205-unique_name_item.ts b/src/database/migrations/1722922766205-unique_name_item.ts new file mode 100644 index 0000000..b9e0430 --- /dev/null +++ b/src/database/migrations/1722922766205-unique_name_item.ts @@ -0,0 +1,29 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class UniqueNameItem1722922766205 implements MigrationInterface { + name = 'UniqueNameItem1722922766205'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "item_bundlings" DROP CONSTRAINT "FK_a50e7abf2caba4d0394f3726b86"`, + ); + await queryRunner.query( + `ALTER TABLE "items" ADD CONSTRAINT "UQ_213736582899b3599acaade2cd1" UNIQUE ("name")`, + ); + await queryRunner.query( + `ALTER TABLE "item_bundlings" ADD CONSTRAINT "FK_a50e7abf2caba4d0394f3726b86" FOREIGN KEY ("item_bundling_id") REFERENCES "items"("id") ON DELETE CASCADE ON UPDATE CASCADE`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "item_bundlings" DROP CONSTRAINT "FK_a50e7abf2caba4d0394f3726b86"`, + ); + await queryRunner.query( + `ALTER TABLE "items" DROP CONSTRAINT "UQ_213736582899b3599acaade2cd1"`, + ); + await queryRunner.query( + `ALTER TABLE "item_bundlings" ADD CONSTRAINT "FK_a50e7abf2caba4d0394f3726b86" FOREIGN KEY ("item_bundling_id") REFERENCES "items"("id") ON DELETE CASCADE ON UPDATE CASCADE`, + ); + } +} 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 d22b338..a25633e 100644 --- a/src/modules/item-related/item/data/models/item.model.ts +++ b/src/modules/item-related/item/data/models/item.model.ts @@ -22,7 +22,7 @@ export class ItemModel extends BaseStatusModel implements ItemEntity { - @Column('varchar', { name: 'name' }) + @Column('varchar', { name: 'name', unique: true }) name: string; @Column('varchar', { name: 'image_url', nullable: true }) diff --git a/src/modules/item-related/item/domain/usecases/managers/create-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/create-item.manager.ts index aebe725..2b9d9e0 100644 --- a/src/modules/item-related/item/domain/usecases/managers/create-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/create-item.manager.ts @@ -33,7 +33,7 @@ export class CreateItemManager extends BaseCreateManager { } get uniqueColumns(): columnUniques[] { - return []; + return [{ column: 'name' }]; } get eventTopics(): EventTopics[] {