Complete project scaffold with working auth, REST API, Prisma/SQLite schema, Docker config, and React frontend for both Rack Planner and Service Mapper modules. Both server and client pass TypeScript strict mode with zero errors. Initial migration applied. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
104 lines
3.4 KiB
SQL
104 lines
3.4 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Rack" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"totalU" INTEGER NOT NULL DEFAULT 42,
|
|
"location" TEXT,
|
|
"displayOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Module" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"rackId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"uPosition" INTEGER NOT NULL,
|
|
"uSize" INTEGER NOT NULL DEFAULT 1,
|
|
"manufacturer" TEXT,
|
|
"model" TEXT,
|
|
"ipAddress" TEXT,
|
|
"notes" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Module_rackId_fkey" FOREIGN KEY ("rackId") REFERENCES "Rack" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Port" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"moduleId" TEXT NOT NULL,
|
|
"portNumber" INTEGER NOT NULL,
|
|
"label" TEXT,
|
|
"portType" TEXT NOT NULL DEFAULT 'ETHERNET',
|
|
"mode" TEXT NOT NULL DEFAULT 'ACCESS',
|
|
"nativeVlan" INTEGER,
|
|
"notes" TEXT,
|
|
CONSTRAINT "Port_moduleId_fkey" FOREIGN KEY ("moduleId") REFERENCES "Module" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Vlan" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"vlanId" INTEGER NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"color" TEXT
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PortVlan" (
|
|
"portId" TEXT NOT NULL,
|
|
"vlanId" TEXT NOT NULL,
|
|
"tagged" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
PRIMARY KEY ("portId", "vlanId"),
|
|
CONSTRAINT "PortVlan_portId_fkey" FOREIGN KEY ("portId") REFERENCES "Port" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "PortVlan_vlanId_fkey" FOREIGN KEY ("vlanId") REFERENCES "Vlan" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServiceMap" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServiceNode" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"mapId" TEXT NOT NULL,
|
|
"label" TEXT NOT NULL,
|
|
"nodeType" TEXT NOT NULL,
|
|
"positionX" REAL NOT NULL,
|
|
"positionY" REAL NOT NULL,
|
|
"metadata" TEXT,
|
|
"color" TEXT,
|
|
"icon" TEXT,
|
|
"moduleId" TEXT,
|
|
CONSTRAINT "ServiceNode_mapId_fkey" FOREIGN KEY ("mapId") REFERENCES "ServiceMap" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "ServiceNode_moduleId_fkey" FOREIGN KEY ("moduleId") REFERENCES "Module" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ServiceEdge" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"mapId" TEXT NOT NULL,
|
|
"sourceId" TEXT NOT NULL,
|
|
"targetId" TEXT NOT NULL,
|
|
"label" TEXT,
|
|
"edgeType" TEXT NOT NULL DEFAULT 'smoothstep',
|
|
"animated" BOOLEAN NOT NULL DEFAULT false,
|
|
"metadata" TEXT,
|
|
CONSTRAINT "ServiceEdge_mapId_fkey" FOREIGN KEY ("mapId") REFERENCES "ServiceMap" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "ServiceEdge_sourceId_fkey" FOREIGN KEY ("sourceId") REFERENCES "ServiceNode" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "ServiceEdge_targetId_fkey" FOREIGN KEY ("targetId") REFERENCES "ServiceNode" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Vlan_vlanId_key" ON "Vlan"("vlanId");
|