-- CreateTable CREATE TABLE "Server" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, "titel" TEXT NOT NULL, "url" TEXT NOT NULL, "tokenId" TEXT NOT NULL, "tokenGeheimnis" TEXT NOT NULL, "tlsPruefen" BOOLEAN NOT NULL DEFAULT false, "fingerabdruck" TEXT, "sshAktiv" BOOLEAN NOT NULL DEFAULT false, "sshBenutzer" TEXT NOT NULL DEFAULT 'root', "sshPort" INTEGER NOT NULL DEFAULT 22, "sshPrivat" TEXT, "sshOeffentlich" TEXT, "sshHostSchluessel" JSONB, "templateVmidVon" INTEGER NOT NULL DEFAULT 9000, "templateVmidBis" INTEGER NOT NULL DEFAULT 9999, "gastVmidVon" INTEGER NOT NULL DEFAULT 100, "bauNetz" JSONB, "standards" JSONB, "faehigkeiten" JSONB, "erreichbar" BOOLEAN, "pveVersion" TEXT, "geprueftAm" TIMESTAMP(3), "erstelltAm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "geaendertAm" TIMESTAMP(3) NOT NULL, CONSTRAINT "Server_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "Server_name_key" ON "Server"("name"); -- Bereiche müssen sinnvoll sein: Proxmox erlaubt VMIDs von 100 bis 999999999. ALTER TABLE "Server" ADD CONSTRAINT "server_vmid_bereiche" CHECK ( "templateVmidVon" >= 100 AND "templateVmidVon" < "templateVmidBis" AND "templateVmidBis" <= 999999999 AND "gastVmidVon" >= 100 AND "gastVmidVon" <= 999999999 ), ADD CONSTRAINT "server_name_format" CHECK ("name" ~ '^[a-z0-9][a-z0-9-]{0,31}$'), ADD CONSTRAINT "server_ssh_port" CHECK ("sshPort" BETWEEN 1 AND 65535), -- Ohne TLS-Prüfung ist ein gepinnter Fingerprint Pflicht – sonst wäre jede Verbindung blind. ADD CONSTRAINT "server_tls_oder_pin" CHECK ("tlsPruefen" OR "fingerabdruck" IS NOT NULL);