124 lines
4.6 KiB
SQL
124 lines
4.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"phone" TEXT NOT NULL,
|
|
"role" TEXT NOT NULL,
|
|
"dealerId" TEXT,
|
|
"currentOtp" TEXT,
|
|
"otpExpiresAt" DATETIME,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "User_dealerId_fkey" FOREIGN KEY ("dealerId") REFERENCES "Dealer" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Dealer" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"district" TEXT,
|
|
"address" TEXT,
|
|
"phone" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "DealerAssignment" (
|
|
"salesRepId" TEXT NOT NULL,
|
|
"dealerId" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
PRIMARY KEY ("salesRepId", "dealerId"),
|
|
CONSTRAINT "DealerAssignment_salesRepId_fkey" FOREIGN KEY ("salesRepId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "DealerAssignment_dealerId_fkey" FOREIGN KEY ("dealerId") REFERENCES "Dealer" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Stock" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"chassisNumber" TEXT NOT NULL,
|
|
"engineNumber" TEXT NOT NULL,
|
|
"model" TEXT NOT NULL,
|
|
"color" TEXT NOT NULL,
|
|
"currentDealerId" TEXT NOT NULL,
|
|
"dateReceived" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"currentStage" TEXT NOT NULL DEFAULT 'received',
|
|
"paymentType" TEXT,
|
|
"leaseProviderType" TEXT,
|
|
"financeCompanyName" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Stock_currentDealerId_fkey" FOREIGN KEY ("currentDealerId") REFERENCES "Dealer" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "StageLog" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"stockId" TEXT NOT NULL,
|
|
"stage" TEXT NOT NULL,
|
|
"loggedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"actorId" TEXT,
|
|
CONSTRAINT "StageLog_stockId_fkey" FOREIGN KEY ("stockId") REFERENCES "Stock" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "StageLog_actorId_fkey" FOREIGN KEY ("actorId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "StockTransfer" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"stockId" TEXT NOT NULL,
|
|
"fromDealerId" TEXT NOT NULL,
|
|
"toDealerId" TEXT NOT NULL,
|
|
"actorId" TEXT NOT NULL,
|
|
"transferredAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "StockTransfer_stockId_fkey" FOREIGN KEY ("stockId") REFERENCES "Stock" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "StockTransfer_fromDealerId_fkey" FOREIGN KEY ("fromDealerId") REFERENCES "Dealer" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "StockTransfer_toDealerId_fkey" FOREIGN KEY ("toDealerId") REFERENCES "Dealer" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "StockTransfer_actorId_fkey" FOREIGN KEY ("actorId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Event" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"dealerId" TEXT NOT NULL,
|
|
"planType" TEXT NOT NULL,
|
|
"month" INTEGER,
|
|
"year" INTEGER,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
"expense" REAL NOT NULL,
|
|
"imageUrls" TEXT NOT NULL DEFAULT '[]',
|
|
"createdById" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Event_dealerId_fkey" FOREIGN KEY ("dealerId") REFERENCES "Dealer" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "Event_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServicePoint" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"district" TEXT NOT NULL,
|
|
"address" TEXT,
|
|
"phone" TEXT,
|
|
"notes" TEXT,
|
|
"createdById" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "ServicePoint_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_phone_key" ON "User"("phone");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Dealer_code_key" ON "Dealer"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Stock_chassisNumber_key" ON "Stock"("chassisNumber");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Stock_engineNumber_key" ON "Stock"("engineNumber");
|