Template API: create database schema
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "Template" (
|
||||
"id" TEXT NOT NULL,
|
||||
"language" TEXT NOT NULL,
|
||||
"deliveryCharge" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Template_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Banner" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"bannerTitle" TEXT NOT NULL,
|
||||
"bannerDesc" TEXT NOT NULL,
|
||||
"bannerImage" TEXT NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Banner_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Address" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"phoneNumber" TEXT NOT NULL,
|
||||
"shopLocation" TEXT NOT NULL,
|
||||
"shopEmail" TEXT NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Address_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Ingredient" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Ingredient_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "ingredientOptions" (
|
||||
"id" TEXT NOT NULL,
|
||||
"ingrImg" TEXT NOT NULL,
|
||||
"ingrTitle" TEXT NOT NULL,
|
||||
"ingrDes" TEXT NOT NULL,
|
||||
"ingredientId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "ingredientOptions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Instruction" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"instBanner" TEXT NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Instruction_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "InstructionOptions" (
|
||||
"id" TEXT NOT NULL,
|
||||
"hint" TEXT NOT NULL,
|
||||
"detail" TEXT NOT NULL,
|
||||
"instructionId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "InstructionOptions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "FAQ" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "FAQ_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "FAQOptions" (
|
||||
"id" TEXT NOT NULL,
|
||||
"index" INTEGER NOT NULL,
|
||||
"text" TEXT NOT NULL,
|
||||
"faqId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "FAQOptions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Tips" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"tipsBanner" TEXT NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Tips_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "TipsOption" (
|
||||
"id" TEXT NOT NULL,
|
||||
"index" INTEGER NOT NULL,
|
||||
"text" TEXT NOT NULL,
|
||||
"tipsId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "TipsOption_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "PriceCombo" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "PriceCombo_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "PriceOption" (
|
||||
"id" TEXT NOT NULL,
|
||||
"quantity" TEXT NOT NULL,
|
||||
"price" TEXT NOT NULL,
|
||||
"comboId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "PriceOption_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Product" (
|
||||
"id" TEXT NOT NULL,
|
||||
"isVisible" BOOLEAN NOT NULL,
|
||||
"price" TEXT NOT NULL,
|
||||
"discount" INTEGER NOT NULL,
|
||||
"productName" TEXT NOT NULL,
|
||||
"templateId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Product_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Banner_templateId_key" ON "Banner"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Address_templateId_key" ON "Address"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Ingredient_templateId_key" ON "Ingredient"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Instruction_templateId_key" ON "Instruction"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "FAQ_templateId_key" ON "FAQ"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Tips_templateId_key" ON "Tips"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "PriceCombo_templateId_key" ON "PriceCombo"("templateId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Product_templateId_key" ON "Product"("templateId");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Banner" ADD CONSTRAINT "Banner_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Address" ADD CONSTRAINT "Address_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Ingredient" ADD CONSTRAINT "Ingredient_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "ingredientOptions" ADD CONSTRAINT "ingredientOptions_ingredientId_fkey" FOREIGN KEY ("ingredientId") REFERENCES "Ingredient"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Instruction" ADD CONSTRAINT "Instruction_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "InstructionOptions" ADD CONSTRAINT "InstructionOptions_instructionId_fkey" FOREIGN KEY ("instructionId") REFERENCES "Instruction"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "FAQ" ADD CONSTRAINT "FAQ_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "FAQOptions" ADD CONSTRAINT "FAQOptions_faqId_fkey" FOREIGN KEY ("faqId") REFERENCES "FAQ"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Tips" ADD CONSTRAINT "Tips_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "TipsOption" ADD CONSTRAINT "TipsOption_tipsId_fkey" FOREIGN KEY ("tipsId") REFERENCES "Tips"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PriceCombo" ADD CONSTRAINT "PriceCombo_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PriceOption" ADD CONSTRAINT "PriceOption_comboId_fkey" FOREIGN KEY ("comboId") REFERENCES "PriceCombo"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Product" ADD CONSTRAINT "Product_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@@ -0,0 +1,139 @@
|
||||
model Template {
|
||||
id String @id @default(uuid())
|
||||
language String
|
||||
deliveryCharge String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
address Address?
|
||||
banner Banner?
|
||||
ingredient Ingredient?
|
||||
instruction Instruction?
|
||||
faq FAQ?
|
||||
tips Tips?
|
||||
priceCombo PriceCombo?
|
||||
product Product?
|
||||
}
|
||||
|
||||
// banner model
|
||||
model Banner {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
bannerTitle String
|
||||
bannerDesc String
|
||||
bannerImage String
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
}
|
||||
|
||||
// address model
|
||||
model Address {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
phoneNumber String
|
||||
shopLocation String
|
||||
shopEmail String
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
}
|
||||
|
||||
//ingredient model
|
||||
model Ingredient {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
options ingredientOptions[]
|
||||
}
|
||||
|
||||
//ingredient options model
|
||||
model ingredientOptions {
|
||||
id String @id @default(uuid())
|
||||
ingrImg String
|
||||
ingrTitle String
|
||||
ingrDes String
|
||||
ingredientId String
|
||||
ingredient Ingredient @relation(fields: [ingredientId], references: [id])
|
||||
}
|
||||
|
||||
//instruction model & instruction options
|
||||
model Instruction {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
instBanner String
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
options InstructionOptions[]
|
||||
}
|
||||
|
||||
model InstructionOptions {
|
||||
id String @id @default(uuid())
|
||||
hint String
|
||||
detail String
|
||||
instructionId String
|
||||
instruction Instruction @relation(fields: [instructionId], references: [id])
|
||||
}
|
||||
|
||||
//FAQ & FAQOptions model
|
||||
model FAQ {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
options FAQOptions[]
|
||||
}
|
||||
|
||||
model FAQOptions {
|
||||
id String @id @default(uuid())
|
||||
index Int
|
||||
text String
|
||||
|
||||
faqId String
|
||||
faq FAQ @relation(fields: [faqId], references: [id])
|
||||
}
|
||||
|
||||
//Tips & Tips options model
|
||||
model Tips {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
tipsBanner String
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
options TipsOption[]
|
||||
}
|
||||
|
||||
model TipsOption {
|
||||
id String @id @default(uuid())
|
||||
index Int
|
||||
text String
|
||||
|
||||
tipsId String
|
||||
tips Tips @relation(fields: [tipsId], references: [id])
|
||||
}
|
||||
|
||||
//PriceCombo & PriceComboOptions model
|
||||
model PriceCombo {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
options PriceOption[]
|
||||
}
|
||||
|
||||
model PriceOption {
|
||||
id String @id @default(uuid())
|
||||
quantity String
|
||||
price String
|
||||
comboId String
|
||||
combo PriceCombo @relation(fields: [comboId], references: [id])
|
||||
}
|
||||
|
||||
//product model
|
||||
model Product {
|
||||
id String @id @default(uuid())
|
||||
isVisible Boolean
|
||||
price String
|
||||
discount Int
|
||||
productName String
|
||||
templateId String @unique
|
||||
template Template @relation(fields: [templateId], references: [id])
|
||||
}
|
||||
Reference in New Issue
Block a user