-- CreateEnum CREATE TYPE "ErrorSeverity" AS ENUM ('INFO', 'WARNING', 'ERROR', 'CRITICAL'); -- CreateTable CREATE TABLE "enterprise_clients" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, "company_name" TEXT, "contact_email" TEXT NOT NULL, "contact_phone" TEXT, "notes" TEXT, "is_active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "enterprise_clients_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "enterprise_servers" ( "id" TEXT NOT NULL, "client_id" TEXT NOT NULL, "netcup_server_id" TEXT NOT NULL, "nickname" TEXT, "purpose" TEXT, "is_active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "portainer_url" TEXT, "portainer_username" TEXT, "portainer_password_enc" TEXT, CONSTRAINT "enterprise_servers_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "server_stats_snapshots" ( "id" TEXT NOT NULL, "server_id" TEXT NOT NULL, "client_id" TEXT NOT NULL, "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "cpu_percent" DOUBLE PRECISION, "memory_used_mb" DOUBLE PRECISION, "memory_total_mb" DOUBLE PRECISION, "disk_read_mbps" DOUBLE PRECISION, "disk_write_mbps" DOUBLE PRECISION, "network_in_mbps" DOUBLE PRECISION, "network_out_mbps" DOUBLE PRECISION, "containers_running" INTEGER, "containers_stopped" INTEGER, CONSTRAINT "server_stats_snapshots_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "error_detection_rules" ( "id" TEXT NOT NULL, "client_id" TEXT NOT NULL, "name" TEXT NOT NULL, "pattern" TEXT NOT NULL, "severity" "ErrorSeverity" NOT NULL DEFAULT 'WARNING', "is_active" BOOLEAN NOT NULL DEFAULT true, "description" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "error_detection_rules_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "detected_errors" ( "id" TEXT NOT NULL, "server_id" TEXT NOT NULL, "rule_id" TEXT NOT NULL, "container_id" TEXT, "container_name" TEXT, "log_line" TEXT NOT NULL, "context" TEXT, "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "acknowledged_at" TIMESTAMP(3), "acknowledged_by" TEXT, CONSTRAINT "detected_errors_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "security_verification_codes" ( "id" TEXT NOT NULL, "client_id" TEXT NOT NULL, "code" TEXT NOT NULL, "action" TEXT NOT NULL, "target_server_id" TEXT NOT NULL, "expires_at" TIMESTAMP(3) NOT NULL, "used_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "security_verification_codes_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "enterprise_servers_client_id_idx" ON "enterprise_servers"("client_id"); -- CreateIndex CREATE UNIQUE INDEX "enterprise_servers_client_id_netcup_server_id_key" ON "enterprise_servers"("client_id", "netcup_server_id"); -- CreateIndex CREATE INDEX "server_stats_snapshots_server_id_timestamp_idx" ON "server_stats_snapshots"("server_id", "timestamp"); -- CreateIndex CREATE INDEX "server_stats_snapshots_client_id_timestamp_idx" ON "server_stats_snapshots"("client_id", "timestamp"); -- CreateIndex CREATE INDEX "error_detection_rules_client_id_idx" ON "error_detection_rules"("client_id"); -- CreateIndex CREATE INDEX "detected_errors_server_id_timestamp_idx" ON "detected_errors"("server_id", "timestamp"); -- CreateIndex CREATE INDEX "detected_errors_rule_id_timestamp_idx" ON "detected_errors"("rule_id", "timestamp"); -- CreateIndex CREATE INDEX "security_verification_codes_client_id_code_idx" ON "security_verification_codes"("client_id", "code"); -- AddForeignKey ALTER TABLE "enterprise_servers" ADD CONSTRAINT "enterprise_servers_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "enterprise_clients"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "server_stats_snapshots" ADD CONSTRAINT "server_stats_snapshots_server_id_fkey" FOREIGN KEY ("server_id") REFERENCES "enterprise_servers"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "server_stats_snapshots" ADD CONSTRAINT "server_stats_snapshots_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "enterprise_clients"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "error_detection_rules" ADD CONSTRAINT "error_detection_rules_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "enterprise_clients"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "detected_errors" ADD CONSTRAINT "detected_errors_server_id_fkey" FOREIGN KEY ("server_id") REFERENCES "enterprise_servers"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "detected_errors" ADD CONSTRAINT "detected_errors_rule_id_fkey" FOREIGN KEY ("rule_id") REFERENCES "error_detection_rules"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "security_verification_codes" ADD CONSTRAINT "security_verification_codes_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "enterprise_clients"("id") ON DELETE CASCADE ON UPDATE CASCADE;