feat(db): add good_origin_goods junction table for merged origin goods
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "good_origin_goods" (
|
||||
"good_id" BIGINT NOT NULL,
|
||||
"origin_good_id" BIGINT NOT NULL,
|
||||
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "good_origin_goods_pkey" PRIMARY KEY ("good_id","origin_good_id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "good_origin_goods_origin_good_id_idx" ON "good_origin_goods"("origin_good_id");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "good_origin_goods" ADD CONSTRAINT "good_origin_goods_good_id_fkey" FOREIGN KEY ("good_id") REFERENCES "goods"("good_id") ON DELETE CASCADE ON UPDATE NO ACTION;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "good_origin_goods" ADD CONSTRAINT "good_origin_goods_origin_good_id_fkey" FOREIGN KEY ("origin_good_id") REFERENCES "origin_goods"("origin_good_id") ON DELETE CASCADE ON UPDATE NO ACTION;
|
||||
@@ -36,6 +36,7 @@ model OriginGood {
|
||||
goods Good[]
|
||||
detail OriginGoodDetail?
|
||||
variants OriginGoodVariant[]
|
||||
mergedIntoGoods GoodOriginGood[]
|
||||
|
||||
@@index([sdsCategoryId])
|
||||
@@index([source])
|
||||
@@ -215,6 +216,7 @@ model Good {
|
||||
tag Tag? @relation(fields: [tagId], references: [id], onDelete: SetNull, onUpdate: NoAction)
|
||||
position Position? @relation(fields: [positionId], references: [id], onDelete: SetNull, onUpdate: NoAction)
|
||||
goodTags GoodTag[]
|
||||
mergedOriginGoods GoodOriginGood[]
|
||||
|
||||
@@index([originGoodId])
|
||||
@@index([countryId])
|
||||
@@ -241,6 +243,21 @@ model GoodTag {
|
||||
@@map("good_tags")
|
||||
}
|
||||
|
||||
// ---------- Good-OriginGood Junction (merged secondary sources, M:N) ----------
|
||||
// Primary source stays on goods.origin_good_id and is NOT stored here.
|
||||
model GoodOriginGood {
|
||||
goodId BigInt @map("good_id")
|
||||
originGoodId BigInt @map("origin_good_id")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
|
||||
good Good @relation(fields: [goodId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
originGood OriginGood @relation(fields: [originGoodId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
|
||||
@@id([goodId, originGoodId])
|
||||
@@index([originGoodId])
|
||||
@@map("good_origin_goods")
|
||||
}
|
||||
|
||||
// ---------- Users (admin authentication) ----------
|
||||
enum Role {
|
||||
ADMIN
|
||||
|
||||
Reference in New Issue
Block a user