From 470379e631ca17ee486a28c50ec828344c61d727 Mon Sep 17 00:00:00 2001 From: Rares Stefan Date: Tue, 29 Aug 2023 18:26:58 +0100 Subject: [PATCH] fix(medusa, admin-ui): Add `deleted_at` to Return Reason unique constraint (#4834) * Update return reason create to upsert * Create strange-wombats-invite.md * Revert upsert, make value index only apply on non-deleted entities --- .changeset/strange-wombats-invite.md | 7 +++++ .../return-reasons/create-reason-modal.tsx | 31 ++++++++----------- ...692870898423-update_return_reason_index.ts | 21 +++++++++++++ packages/medusa/src/models/return-reason.ts | 2 +- 4 files changed, 42 insertions(+), 19 deletions(-) create mode 100644 .changeset/strange-wombats-invite.md create mode 100644 packages/medusa/src/migrations/1692870898423-update_return_reason_index.ts diff --git a/.changeset/strange-wombats-invite.md b/.changeset/strange-wombats-invite.md new file mode 100644 index 0000000000..8663622f0a --- /dev/null +++ b/.changeset/strange-wombats-invite.md @@ -0,0 +1,7 @@ +--- +"@medusajs/medusa": patch +"@medusajs/admin-ui": patch +"@medusajs/admin": patch +--- + +fix(medusa, admin-ui): Allow soft-deleted return reason restoration diff --git a/packages/admin-ui/ui/src/domain/settings/return-reasons/create-reason-modal.tsx b/packages/admin-ui/ui/src/domain/settings/return-reasons/create-reason-modal.tsx index 47007ff2e6..dc67c9a392 100644 --- a/packages/admin-ui/ui/src/domain/settings/return-reasons/create-reason-modal.tsx +++ b/packages/admin-ui/ui/src/domain/settings/return-reasons/create-reason-modal.tsx @@ -36,27 +36,22 @@ const CreateReturnReasonModal = ({ }, }) const notification = useNotification() - const { mutate, isLoading } = useAdminCreateReturnReason() + const { mutateAsync, isLoading } = useAdminCreateReturnReason() - const onCreate = (data: CreateReturnReasonFormData) => { - mutate( - { + const onCreate = async (data: CreateReturnReasonFormData) => { + try { + await mutateAsync({ ...data, description: data.description || undefined, - }, - { - onSuccess: () => { - notification("Success", "Created a new return reason", "success") - }, - onError: () => { - notification( - "Error", - "Cant create a Return reason with an existing code", - "error" - ) - }, - } - ) + }) + notification("Success", "Created a new return reason", "success") + } catch { + notification( + "Error", + "Cannot create a return reason with an existing value", + "error" + ) + } handleClose() } diff --git a/packages/medusa/src/migrations/1692870898423-update_return_reason_index.ts b/packages/medusa/src/migrations/1692870898423-update_return_reason_index.ts new file mode 100644 index 0000000000..699e44db82 --- /dev/null +++ b/packages/medusa/src/migrations/1692870898423-update_return_reason_index.ts @@ -0,0 +1,21 @@ +import { MigrationInterface, QueryRunner } from "typeorm" + +export class UpdateReturnReasonIndex1692870898423 + implements MigrationInterface +{ + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `DROP INDEX IF EXISTS "IDX_00605f9d662c06b81c1b60ce24";` + ) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_return_reason_value" ON "return_reason" ("value") WHERE deleted_at IS NULL;` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX IF EXISTS "IDX_return_reason_value";`) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_00605f9d662c06b81c1b60ce24" ON "return_reason" ("value") ` + ) + } +} diff --git a/packages/medusa/src/models/return-reason.ts b/packages/medusa/src/models/return-reason.ts index e95d1e977c..28590cd45d 100644 --- a/packages/medusa/src/models/return-reason.ts +++ b/packages/medusa/src/models/return-reason.ts @@ -14,7 +14,7 @@ import { generateEntityId } from "../utils/generate-entity-id" @Entity() export class ReturnReason extends SoftDeletableEntity { - @Index({ unique: true }) + @Index({ unique: true, where: "deleted_at IS NULL" }) @Column() value: string