feat(order): Claim and Exchange entities (#7681)

This commit is contained in:
Carlos R. L. Rodrigues
2024-06-12 14:49:15 -03:00
committed by GitHub
parent 85d487d90b
commit 75811cd4b3
18 changed files with 877 additions and 56 deletions
@@ -157,6 +157,13 @@ export class Migration20240604100512 extends Migration {
CREATE TYPE return_status_enum AS ENUM (
'requested',
'received',
'partially_received',
'canceled'
);
CREATE TABLE IF NOT EXISTS "return" (
"id" TEXT NOT NULL,
"order_id" TEXT NOT NULL,
@@ -164,7 +171,7 @@ export class Migration20240604100512 extends Migration {
"exchange_id" TEXT NULL,
"order_version" INTEGER NOT NULL,
"display_id" SERIAL,
"status" text NOT NULL,
"status" return_status_enum NOT NULL DEFAULT 'requested',
"no_notification" boolean NULL,
"refund_amount" NUMERIC NULL,
"raw_refund_amount" JSONB NULL,
@@ -176,16 +183,6 @@ export class Migration20240604100512 extends Migration {
"canceled_at" timestamptz NULL,
CONSTRAINT "return_pkey" PRIMARY KEY ("id")
);
CREATE TYPE return_status_enum AS ENUM (
'requested',
'received',
'partially_received',
'canceled'
);
ALTER TABLE "return" ALTER COLUMN status DROP DEFAULT;
ALTER TABLE "return" ALTER COLUMN status TYPE return_status_enum USING (status::text::return_status_enum);
ALTER TABLE "return" ALTER COLUMN status SET DEFAULT 'requested';
CREATE INDEX IF NOT EXISTS "IDX_return_order_id" ON "return" (
order_id
@@ -206,6 +203,127 @@ export class Migration20240604100512 extends Migration {
display_id
)
WHERE deleted_at IS NOT NULL;
CREATE TABLE IF NOT EXISTS "order_exchange" (
"id" TEXT NOT NULL,
"order_id" TEXT NOT NULL,
"return_id" TEXT NULL,
"order_version" INTEGER NOT NULL,
"display_id" SERIAL,
"no_notification" BOOLEAN NULL,
"refund_amount" NUMERIC NULL,
"raw_refund_amount" JSONB NULL,
"allow_backorder" BOOLEAN NOT NULL DEFAULT FALSE,
"difference_due" NUMERIC NULL,
"raw_difference_due" JSONB NULL,
"metadata" JSONB NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
"deleted_at" timestamptz NULL,
"canceled_at" timestamptz NULL,
CONSTRAINT "order_exchange_pkey" PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "IDX_order_exchange_display_id" ON "order_exchange" ("display_id")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_exchange_deleted_at" ON "order_exchange" ("deleted_at")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_exchange_order_id" ON "order_exchange" ("order_id")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_exchange_return_id" ON "order_exchange" ("return_id")
WHERE return_id IS NOT NULL AND deleted_at IS NOT NULL;
CREATE TYPE order_claim_type_enum AS ENUM (
'refund',
'replace'
);
CREATE TABLE IF NOT EXISTS "order_claim" (
"id" TEXT NOT NULL,
"order_id" TEXT NOT NULL,
"return_id" TEXT NULL,
"order_version" INTEGER NOT NULL,
"display_id" SERIAL,
"type" order_claim_type_enum NOT NULL,
"no_notification" BOOLEAN NULL,
"refund_amount" NUMERIC NULL,
"raw_refund_amount" JSONB NULL,
"metadata" JSONB NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
"deleted_at" timestamptz NULL,
"canceled_at" timestamptz NULL,
CONSTRAINT "order_claim_pkey" PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "IDX_order_claim_display_id" ON "order_claim" ("display_id")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_claim_deleted_at" ON "order_claim" ("deleted_at")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_claim_order_id" ON "order_claim" ("order_id")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_claim_return_id" ON "order_claim" ("return_id")
WHERE return_id IS NOT NULL AND deleted_at IS NOT NULL;
CREATE TYPE claim_reason_enum AS ENUM (
'missing_item',
'wrong_item',
'production_failure',
'other'
);
CREATE TABLE IF NOT EXISTS "order_claim_item" (
"id" TEXT NOT NULL,
"claim_id" TEXT NOT NULL,
"item_id" TEXT NOT NULL,
"reason" claim_reason_enum NOT NULL,
"note" TEXT NULL,
"metadata" JSONB NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
"deleted_at" timestamptz NULL,
CONSTRAINT "order_claim_item_pkey" PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "IDX_order_claim_item_deleted_at" ON "order_claim_item" ("deleted_at")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_claim_item_claim_id" ON "order_claim_item" ("claim_id")
WHERE deleted_at IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_claim_item_item_id" ON "order_claim_item" ("item_id")
WHERE deleted_at IS NOT NULL;
CREATE TABLE IF NOT EXISTS "order_claim_item_image" (
"id" TEXT NOT NULL,
"claim_item_id" TEXT NOT NULL,
"url" TEXT NOT NULL,
"metadata" JSONB NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
"deleted_at" timestamptz NULL,
CONSTRAINT "order_claim_item_image_pkey" PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "IDX_order_claim_item_image_claim_item_id" ON "order_claim_item_image" ("claim_item_id")
WHERE "deleted_at" IS NOT NULL;
CREATE INDEX IF NOT EXISTS "IDX_order_claim_item_image_deleted_at" ON "order_claim_item_image" ("deleted_at")
WHERE "deleted_at" IS NOT NULL;
`
this.addSql(sql)
}