203 lines
6.0 KiB
SQL
203 lines
6.0 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "DeviceChangeType" AS ENUM ('CREATED', 'UPDATED', 'DELETED');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"nwkennung" TEXT NOT NULL,
|
|
"email" TEXT,
|
|
"arbeitsname" TEXT,
|
|
"firstName" TEXT,
|
|
"lastName" TEXT,
|
|
"passwordHash" TEXT,
|
|
"groupId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("nwkennung")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Role" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Role_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserRole" (
|
|
"userId" TEXT NOT NULL,
|
|
"roleId" TEXT NOT NULL,
|
|
"assignedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "UserRole_pkey" PRIMARY KEY ("userId","roleId")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserGroup" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "UserGroup_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "DeviceGroup" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "DeviceGroup_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Location" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Location_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Device" (
|
|
"inventoryNumber" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"manufacturer" TEXT NOT NULL,
|
|
"model" TEXT NOT NULL,
|
|
"serialNumber" TEXT,
|
|
"productNumber" TEXT,
|
|
"comment" TEXT,
|
|
"ipv4Address" TEXT,
|
|
"ipv6Address" TEXT,
|
|
"macAddress" TEXT,
|
|
"username" TEXT,
|
|
"passwordHash" TEXT,
|
|
"groupId" TEXT,
|
|
"locationId" TEXT,
|
|
"loanedTo" TEXT,
|
|
"loanedFrom" TIMESTAMP(3),
|
|
"loanedUntil" TIMESTAMP(3),
|
|
"loanComment" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"createdById" TEXT,
|
|
"updatedById" TEXT,
|
|
"parentDeviceId" TEXT,
|
|
|
|
CONSTRAINT "Device_pkey" PRIMARY KEY ("inventoryNumber")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Tag" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Tag_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "DeviceHistory" (
|
|
"id" TEXT NOT NULL,
|
|
"deviceId" TEXT,
|
|
"changeType" "DeviceChangeType" NOT NULL,
|
|
"snapshot" JSONB NOT NULL,
|
|
"changedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"changedById" TEXT,
|
|
|
|
CONSTRAINT "DeviceHistory_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "_DeviceToTag" (
|
|
"A" TEXT NOT NULL,
|
|
"B" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "_DeviceToTag_AB_pkey" PRIMARY KEY ("A","B")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_groupId_idx" ON "User"("groupId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Role_name_key" ON "Role"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserGroup_name_key" ON "UserGroup"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "DeviceGroup_name_key" ON "DeviceGroup"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Location_name_key" ON "Location"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Device_ipv4Address_key" ON "Device"("ipv4Address");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Device_ipv6Address_key" ON "Device"("ipv6Address");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Device_macAddress_key" ON "Device"("macAddress");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Device_username_key" ON "Device"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Device_passwordHash_key" ON "Device"("passwordHash");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Device_inventoryNumber_idx" ON "Device"("inventoryNumber");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Device_groupId_idx" ON "Device"("groupId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Device_locationId_idx" ON "Device"("locationId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Device_parentDeviceId_idx" ON "Device"("parentDeviceId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "_DeviceToTag_B_index" ON "_DeviceToTag"("B");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "UserGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserRole" ADD CONSTRAINT "UserRole_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "Role"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserRole" ADD CONSTRAINT "UserRole_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("nwkennung") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Device" ADD CONSTRAINT "Device_parentDeviceId_fkey" FOREIGN KEY ("parentDeviceId") REFERENCES "Device"("inventoryNumber") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Device" ADD CONSTRAINT "Device_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("nwkennung") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Device" ADD CONSTRAINT "Device_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES "User"("nwkennung") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Device" ADD CONSTRAINT "Device_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "DeviceGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Device" ADD CONSTRAINT "Device_locationId_fkey" FOREIGN KEY ("locationId") REFERENCES "Location"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "DeviceHistory" ADD CONSTRAINT "DeviceHistory_changedById_fkey" FOREIGN KEY ("changedById") REFERENCES "User"("nwkennung") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "DeviceHistory" ADD CONSTRAINT "DeviceHistory_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "Device"("inventoryNumber") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_DeviceToTag" ADD CONSTRAINT "_DeviceToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Device"("inventoryNumber") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "_DeviceToTag" ADD CONSTRAINT "_DeviceToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|