Implement portfolio admin management
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
CREATE TYPE "PortfolioSectionType" AS ENUM (
|
||||
'RICH_TEXT',
|
||||
'GALLERY',
|
||||
'STATS',
|
||||
'DELIVERABLES',
|
||||
'LINK'
|
||||
);
|
||||
|
||||
CREATE TYPE "PortfolioAssetKind" AS ENUM (
|
||||
'IMAGE',
|
||||
'DOCUMENT'
|
||||
);
|
||||
|
||||
CREATE TABLE "Category" (
|
||||
"id" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"nameAr" TEXT NOT NULL,
|
||||
"nameEn" TEXT NOT NULL,
|
||||
"nameDe" TEXT NOT NULL,
|
||||
"descriptionAr" TEXT NOT NULL,
|
||||
"descriptionEn" TEXT NOT NULL,
|
||||
"descriptionDe" TEXT NOT NULL,
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Category_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE TABLE "PortfolioProject" (
|
||||
"id" TEXT NOT NULL,
|
||||
"categoryId" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"titleAr" TEXT NOT NULL,
|
||||
"titleEn" TEXT NOT NULL,
|
||||
"titleDe" TEXT NOT NULL,
|
||||
"summaryAr" TEXT NOT NULL,
|
||||
"summaryEn" TEXT NOT NULL,
|
||||
"summaryDe" TEXT NOT NULL,
|
||||
"clientName" TEXT NOT NULL,
|
||||
"projectYear" INTEGER NOT NULL,
|
||||
"serviceLabelAr" TEXT NOT NULL,
|
||||
"serviceLabelEn" TEXT NOT NULL,
|
||||
"serviceLabelDe" TEXT NOT NULL,
|
||||
"previewUrl" TEXT,
|
||||
"coverImagePath" TEXT,
|
||||
"isFeatured" BOOLEAN NOT NULL DEFAULT false,
|
||||
"isPublished" BOOLEAN NOT NULL DEFAULT false,
|
||||
"publishedAt" TIMESTAMP(3),
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "PortfolioProject_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE TABLE "PortfolioSection" (
|
||||
"id" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
"type" "PortfolioSectionType" NOT NULL,
|
||||
"titleAr" TEXT NOT NULL,
|
||||
"titleEn" TEXT NOT NULL,
|
||||
"titleDe" TEXT NOT NULL,
|
||||
"bodyAr" TEXT NOT NULL,
|
||||
"bodyEn" TEXT NOT NULL,
|
||||
"bodyDe" TEXT NOT NULL,
|
||||
"imagePath" TEXT,
|
||||
"linkUrl" TEXT,
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "PortfolioSection_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE TABLE "PortfolioAsset" (
|
||||
"id" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
"kind" "PortfolioAssetKind" NOT NULL,
|
||||
"filePath" TEXT NOT NULL,
|
||||
"altAr" TEXT NOT NULL,
|
||||
"altEn" TEXT NOT NULL,
|
||||
"altDe" TEXT NOT NULL,
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "PortfolioAsset_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "Category_slug_key" ON "Category"("slug");
|
||||
CREATE UNIQUE INDEX "PortfolioProject_slug_key" ON "PortfolioProject"("slug");
|
||||
CREATE INDEX "PortfolioProject_categoryId_isPublished_sortOrder_idx" ON "PortfolioProject"("categoryId", "isPublished", "sortOrder");
|
||||
CREATE INDEX "PortfolioProject_isPublished_sortOrder_idx" ON "PortfolioProject"("isPublished", "sortOrder");
|
||||
CREATE INDEX "PortfolioSection_projectId_sortOrder_idx" ON "PortfolioSection"("projectId", "sortOrder");
|
||||
CREATE INDEX "PortfolioAsset_projectId_sortOrder_idx" ON "PortfolioAsset"("projectId", "sortOrder");
|
||||
|
||||
ALTER TABLE "PortfolioProject"
|
||||
ADD CONSTRAINT "PortfolioProject_categoryId_fkey"
|
||||
FOREIGN KEY ("categoryId") REFERENCES "Category"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "PortfolioSection"
|
||||
ADD CONSTRAINT "PortfolioSection_projectId_fkey"
|
||||
FOREIGN KEY ("projectId") REFERENCES "PortfolioProject"("id")
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "PortfolioAsset"
|
||||
ADD CONSTRAINT "PortfolioAsset_projectId_fkey"
|
||||
FOREIGN KEY ("projectId") REFERENCES "PortfolioProject"("id")
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user