This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
-- CreateSchema
|
||||
CREATE SCHEMA IF NOT EXISTS "public";
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "AdminUser" (
|
||||
"id" TEXT NOT NULL,
|
||||
"username" TEXT NOT NULL,
|
||||
"email" TEXT,
|
||||
"passwordHash" TEXT NOT NULL,
|
||||
"twoFactorSecret" TEXT,
|
||||
"is2FAEnabled" BOOLEAN NOT NULL DEFAULT false,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "AdminUser_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "GlobalNode" (
|
||||
"id" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"location" TEXT NOT NULL,
|
||||
"lat" DOUBLE PRECISION NOT NULL,
|
||||
"lon" DOUBLE PRECISION NOT NULL,
|
||||
"nodeType" TEXT NOT NULL DEFAULT 'installation',
|
||||
"application" TEXT NOT NULL,
|
||||
"stats" TEXT NOT NULL,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"projectOverview" TEXT,
|
||||
"energySavings" TEXT,
|
||||
"eventDate" TIMESTAMP(3),
|
||||
"mediaFileName" TEXT,
|
||||
"galleryJson" TEXT DEFAULT '[]',
|
||||
"videosJson" TEXT DEFAULT '[]',
|
||||
"specificDatasheetJson" TEXT DEFAULT '[]',
|
||||
"model3DPath" TEXT,
|
||||
"rendersJson" TEXT DEFAULT '[]',
|
||||
"model3DDimsJson" TEXT,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "GlobalNode_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Application" (
|
||||
"id" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"subtitle" TEXT NOT NULL,
|
||||
"category" TEXT NOT NULL,
|
||||
"shortDescription" TEXT NOT NULL DEFAULT 'Learn more about this FLUX RF technology application.',
|
||||
"heroDescription" TEXT NOT NULL,
|
||||
"sectionsJson" TEXT NOT NULL,
|
||||
"advantagesJson" TEXT NOT NULL,
|
||||
"datasheetJson" TEXT NOT NULL,
|
||||
"dashboardMetricsJson" TEXT DEFAULT '[]',
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Application_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "TimelineEvent" (
|
||||
"id" TEXT NOT NULL,
|
||||
"year" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"order" INTEGER NOT NULL DEFAULT 0,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "TimelineEvent_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "NewsArticle" (
|
||||
"id" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"excerpt" TEXT NOT NULL,
|
||||
"content" TEXT NOT NULL,
|
||||
"coverImage" TEXT,
|
||||
"category" TEXT NOT NULL DEFAULT 'News',
|
||||
"publishedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"order" INTEGER NOT NULL DEFAULT 0,
|
||||
"galleryJson" TEXT DEFAULT '[]',
|
||||
"linkedinUrl" TEXT,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "NewsArticle_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "HeritageSection" (
|
||||
"id" TEXT NOT NULL,
|
||||
"type" TEXT NOT NULL DEFAULT 'text',
|
||||
"title" TEXT,
|
||||
"content" TEXT,
|
||||
"mediaUrl" TEXT,
|
||||
"order" INTEGER NOT NULL DEFAULT 0,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "HeritageSection_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "SparePart" (
|
||||
"id" TEXT NOT NULL,
|
||||
"sku" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"mediaJson" TEXT DEFAULT '[]',
|
||||
"specsJson" TEXT DEFAULT '[]',
|
||||
"price" DOUBLE PRECISION,
|
||||
"showPrice" BOOLEAN NOT NULL DEFAULT false,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "SparePart_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "OperationsSignal" (
|
||||
"id" TEXT NOT NULL,
|
||||
"ticketId" TEXT NOT NULL,
|
||||
"ticketNumber" SERIAL NOT NULL,
|
||||
"type" TEXT NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
||||
"clientName" TEXT NOT NULL,
|
||||
"clientEmail" TEXT NOT NULL,
|
||||
"clientCompany" TEXT NOT NULL,
|
||||
"clientPhone" TEXT,
|
||||
"message" TEXT,
|
||||
"cartPayload" TEXT DEFAULT '[]',
|
||||
"attachedFiles" TEXT DEFAULT '[]',
|
||||
"aiAnalysis" TEXT,
|
||||
"emailSentTo" TEXT,
|
||||
"emailSentAt" TIMESTAMP(3),
|
||||
"emailError" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "OperationsSignal_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "NotificationRoute" (
|
||||
"id" TEXT NOT NULL,
|
||||
"routeType" TEXT NOT NULL,
|
||||
"emails" TEXT NOT NULL,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "NotificationRoute_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "PageContent" (
|
||||
"id" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"subtitle" TEXT,
|
||||
"description" TEXT,
|
||||
"translationsJson" TEXT DEFAULT '{}',
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "PageContent_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "AdminUser_username_key" ON "AdminUser"("username");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Application_slug_key" ON "Application"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "NewsArticle_slug_key" ON "NewsArticle"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "SparePart_sku_key" ON "SparePart"("sku");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "OperationsSignal_ticketId_key" ON "OperationsSignal"("ticketId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "OperationsSignal_type_idx" ON "OperationsSignal"("type");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "OperationsSignal_status_idx" ON "OperationsSignal"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "OperationsSignal_createdAt_idx" ON "OperationsSignal"("createdAt" DESC);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "NotificationRoute_routeType_key" ON "NotificationRoute"("routeType");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "PageContent_slug_key" ON "PageContent"("slug");
|
||||
|
||||
Reference in New Issue
Block a user