|
|
|
@@ -0,0 +1,581 @@
|
|
|
|
|
-- CreateSchema
|
|
|
|
|
CREATE SCHEMA IF NOT EXISTS "public";
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "ResourceType" AS ENUM ('SERVER', 'DOMAIN', 'WEBSITE', 'REPOSITORY', 'DATABASE', 'CONTAINER', 'EMAIL_ACCOUNT', 'PROJECT', 'TASK', 'NOTE', 'DOCUMENT', 'BACKUP', 'DEPLOYMENT', 'MONITOR', 'CREDENTIAL', 'AUTOMATION', 'AI_RUN');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "ResourceStatus" AS ENUM ('PENDING', 'ACTIVE', 'ERROR', 'OFFLINE', 'ARCHIVED', 'UNKNOWN');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "WorkspaceRole" AS ENUM ('OWNER', 'ADMIN', 'MEMBER', 'VIEWER');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "RiskLevel" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "ActorType" AS ENUM ('USER', 'SYSTEM', 'AGENT', 'MCP');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "JobStatus" AS ENUM ('PENDING', 'RUNNING', 'SUCCEEDED', 'FAILED', 'CANCELLED', 'DEAD');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "DeploymentStatus" AS ENUM ('QUEUED', 'RUNNING', 'SUCCEEDED', 'FAILED', 'CANCELLED');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "CredentialType" AS ENUM ('SSH_PASSWORD', 'SSH_KEY', 'API_TOKEN', 'DNS_PROVIDER', 'GIT_TOKEN');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "ServerAuthType" AS ENUM ('PASSWORD', 'SSH_KEY');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "TriggerType" AS ENUM ('MANUAL', 'CRON', 'EVENT', 'WEBHOOK');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "AiRunStatus" AS ENUM ('PLANNING', 'AWAITING_APPROVAL', 'RUNNING', 'SUCCEEDED', 'FAILED', 'REJECTED');
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "users" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"email" TEXT NOT NULL,
|
|
|
|
|
"passwordHash" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "workspaces" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"slug" TEXT NOT NULL,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "workspaces_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "workspace_members" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"userId" TEXT NOT NULL,
|
|
|
|
|
"role" "WorkspaceRole" NOT NULL DEFAULT 'MEMBER',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "workspace_members_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "resources" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"type" "ResourceType" NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"provider" TEXT,
|
|
|
|
|
"status" "ResourceStatus" NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "resources_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "resource_relations" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"sourceId" TEXT NOT NULL,
|
|
|
|
|
"targetId" TEXT NOT NULL,
|
|
|
|
|
"relationType" TEXT NOT NULL,
|
|
|
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "resource_relations_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "credentials" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"type" "CredentialType" NOT NULL,
|
|
|
|
|
"provider" TEXT,
|
|
|
|
|
"encryptedData" TEXT NOT NULL,
|
|
|
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"lastUsedAt" TIMESTAMP(3),
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "credentials_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "audit_logs" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"actorType" "ActorType" NOT NULL,
|
|
|
|
|
"actorId" TEXT,
|
|
|
|
|
"action" TEXT NOT NULL,
|
|
|
|
|
"resourceType" TEXT,
|
|
|
|
|
"resourceId" TEXT,
|
|
|
|
|
"riskLevel" "RiskLevel" NOT NULL DEFAULT 'LOW',
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'SUCCESS',
|
|
|
|
|
"requestId" TEXT,
|
|
|
|
|
"ip" TEXT,
|
|
|
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "audit_logs_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "events" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"eventType" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT,
|
|
|
|
|
"payload" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"correlationId" TEXT,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "events_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "jobs" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"type" TEXT NOT NULL,
|
|
|
|
|
"status" "JobStatus" NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
"payload" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"result" JSONB,
|
|
|
|
|
"error" TEXT,
|
|
|
|
|
"attempts" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"maxAttempts" INTEGER NOT NULL DEFAULT 3,
|
|
|
|
|
"runAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"startedAt" TIMESTAMP(3),
|
|
|
|
|
"finishedAt" TIMESTAMP(3),
|
|
|
|
|
"correlationId" TEXT,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "jobs_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "servers" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"host" TEXT NOT NULL,
|
|
|
|
|
"port" INTEGER NOT NULL DEFAULT 22,
|
|
|
|
|
"username" TEXT NOT NULL,
|
|
|
|
|
"authType" "ServerAuthType" NOT NULL DEFAULT 'SSH_KEY',
|
|
|
|
|
"provider" TEXT NOT NULL DEFAULT 'ssh',
|
|
|
|
|
"credentialId" TEXT,
|
|
|
|
|
"osInfo" TEXT,
|
|
|
|
|
"labels" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"lastSeenAt" TIMESTAMP(3),
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "servers_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "containers" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"serverId" TEXT NOT NULL,
|
|
|
|
|
"containerId" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"image" TEXT NOT NULL,
|
|
|
|
|
"state" TEXT NOT NULL,
|
|
|
|
|
"ports" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"labels" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "containers_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "websites" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"primaryDomain" TEXT,
|
|
|
|
|
"serverId" TEXT,
|
|
|
|
|
"repositoryUrl" TEXT,
|
|
|
|
|
"deployType" TEXT NOT NULL DEFAULT 'DOCKER',
|
|
|
|
|
"port" INTEGER NOT NULL DEFAULT 80,
|
|
|
|
|
"healthPath" TEXT NOT NULL DEFAULT '/',
|
|
|
|
|
"env" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "websites_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "domains" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"provider" TEXT NOT NULL DEFAULT 'MANUAL',
|
|
|
|
|
"credentialId" TEXT,
|
|
|
|
|
"expiresAt" TIMESTAMP(3),
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "domains_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "domain_records" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"domainId" TEXT NOT NULL,
|
|
|
|
|
"type" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"value" TEXT NOT NULL,
|
|
|
|
|
"ttl" INTEGER NOT NULL DEFAULT 300,
|
|
|
|
|
"proxied" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
|
"providerRecordId" TEXT,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "domain_records_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "deployments" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"websiteId" TEXT NOT NULL,
|
|
|
|
|
"status" "DeploymentStatus" NOT NULL DEFAULT 'QUEUED',
|
|
|
|
|
"trigger" TEXT NOT NULL DEFAULT 'MANUAL',
|
|
|
|
|
"progress" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"error" TEXT,
|
|
|
|
|
"commit" TEXT,
|
|
|
|
|
"config" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"finishedAt" TIMESTAMP(3),
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "deployments_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "deployment_logs" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"deploymentId" TEXT NOT NULL,
|
|
|
|
|
"seq" INTEGER NOT NULL,
|
|
|
|
|
"stream" TEXT NOT NULL DEFAULT 'stdout',
|
|
|
|
|
"line" TEXT NOT NULL,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "deployment_logs_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "monitors" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"websiteId" TEXT,
|
|
|
|
|
"serverId" TEXT,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"kind" TEXT NOT NULL DEFAULT 'HTTP',
|
|
|
|
|
"target" TEXT NOT NULL,
|
|
|
|
|
"intervalSec" INTEGER NOT NULL DEFAULT 60,
|
|
|
|
|
"timeoutMs" INTEGER NOT NULL DEFAULT 10000,
|
|
|
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"lastStatus" TEXT NOT NULL DEFAULT 'UNKNOWN',
|
|
|
|
|
"consecutiveFailures" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"lastCheckedAt" TIMESTAMP(3),
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "monitors_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "monitor_results" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"monitorId" TEXT NOT NULL,
|
|
|
|
|
"ok" BOOLEAN NOT NULL,
|
|
|
|
|
"status" TEXT,
|
|
|
|
|
"latencyMs" INTEGER,
|
|
|
|
|
"error" TEXT,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "monitor_results_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "automations" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"name" TEXT NOT NULL,
|
|
|
|
|
"enabled" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
|
"triggerType" "TriggerType" NOT NULL,
|
|
|
|
|
"triggerConfig" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"conditions" JSONB NOT NULL DEFAULT '[]',
|
|
|
|
|
"actions" JSONB NOT NULL DEFAULT '[]',
|
|
|
|
|
"lastTriggeredAt" TIMESTAMP(3),
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "automations_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "automation_runs" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"automationId" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'RUNNING',
|
|
|
|
|
"trigger" JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
"stepIndex" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"logs" JSONB NOT NULL DEFAULT '[]',
|
|
|
|
|
"error" TEXT,
|
|
|
|
|
"correlationId" TEXT,
|
|
|
|
|
"startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"finishedAt" TIMESTAMP(3),
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "automation_runs_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "ai_runs" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"workspaceId" TEXT NOT NULL,
|
|
|
|
|
"resourceId" TEXT NOT NULL,
|
|
|
|
|
"objective" TEXT NOT NULL,
|
|
|
|
|
"status" "AiRunStatus" NOT NULL DEFAULT 'PLANNING',
|
|
|
|
|
"riskLevel" "RiskLevel" NOT NULL DEFAULT 'LOW',
|
|
|
|
|
"plan" JSONB NOT NULL DEFAULT '[]',
|
|
|
|
|
"toolCalls" JSONB NOT NULL DEFAULT '[]',
|
|
|
|
|
"verification" JSONB,
|
|
|
|
|
"result" JSONB,
|
|
|
|
|
"error" TEXT,
|
|
|
|
|
"approvedBy" TEXT,
|
|
|
|
|
"approvedAt" TIMESTAMP(3),
|
|
|
|
|
"correlationId" TEXT,
|
|
|
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "ai_runs_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "workspaces_slug_key" ON "workspaces"("slug");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "workspace_members_userId_idx" ON "workspace_members"("userId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "workspace_members_workspaceId_userId_key" ON "workspace_members"("workspaceId", "userId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "resources_workspaceId_idx" ON "resources"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "resources_type_status_idx" ON "resources"("type", "status");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "resources_workspaceId_type_idx" ON "resources"("workspaceId", "type");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "resource_relations_sourceId_idx" ON "resource_relations"("sourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "resource_relations_targetId_idx" ON "resource_relations"("targetId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "resource_relations_workspaceId_idx" ON "resource_relations"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "resource_relations_sourceId_targetId_relationType_key" ON "resource_relations"("sourceId", "targetId", "relationType");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "credentials_resourceId_key" ON "credentials"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "credentials_workspaceId_idx" ON "credentials"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "audit_logs_workspaceId_createdAt_idx" ON "audit_logs"("workspaceId", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "audit_logs_resourceType_resourceId_idx" ON "audit_logs"("resourceType", "resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "events_eventType_createdAt_idx" ON "events"("eventType", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "events_workspaceId_createdAt_idx" ON "events"("workspaceId", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "jobs_status_runAt_idx" ON "jobs"("status", "runAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "jobs_workspaceId_idx" ON "jobs"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "servers_resourceId_key" ON "servers"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "servers_workspaceId_idx" ON "servers"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "containers_resourceId_key" ON "containers"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "containers_serverId_idx" ON "containers"("serverId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "containers_workspaceId_idx" ON "containers"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "websites_resourceId_key" ON "websites"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "websites_workspaceId_idx" ON "websites"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "domains_resourceId_key" ON "domains"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "domains_workspaceId_idx" ON "domains"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "domain_records_workspaceId_idx" ON "domain_records"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "domain_records_domainId_type_name_value_key" ON "domain_records"("domainId", "type", "name", "value");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "deployments_resourceId_key" ON "deployments"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "deployments_websiteId_createdAt_idx" ON "deployments"("websiteId", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "deployments_workspaceId_createdAt_idx" ON "deployments"("workspaceId", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "deployment_logs_deploymentId_seq_idx" ON "deployment_logs"("deploymentId", "seq");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "monitors_resourceId_key" ON "monitors"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "monitors_enabled_lastCheckedAt_idx" ON "monitors"("enabled", "lastCheckedAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "monitors_workspaceId_idx" ON "monitors"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "monitor_results_monitorId_createdAt_idx" ON "monitor_results"("monitorId", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "automations_resourceId_key" ON "automations"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "automations_workspaceId_idx" ON "automations"("workspaceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "automations_triggerType_enabled_idx" ON "automations"("triggerType", "enabled");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "automation_runs_automationId_startedAt_idx" ON "automation_runs"("automationId", "startedAt");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "ai_runs_resourceId_key" ON "ai_runs"("resourceId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "ai_runs_workspaceId_createdAt_idx" ON "ai_runs"("workspaceId", "createdAt");
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "workspace_members" ADD CONSTRAINT "workspace_members_workspaceId_fkey" FOREIGN KEY ("workspaceId") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "workspace_members" ADD CONSTRAINT "workspace_members_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "resources" ADD CONSTRAINT "resources_workspaceId_fkey" FOREIGN KEY ("workspaceId") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "resource_relations" ADD CONSTRAINT "resource_relations_sourceId_fkey" FOREIGN KEY ("sourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "resource_relations" ADD CONSTRAINT "resource_relations_targetId_fkey" FOREIGN KEY ("targetId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "credentials" ADD CONSTRAINT "credentials_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "servers" ADD CONSTRAINT "servers_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "containers" ADD CONSTRAINT "containers_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "containers" ADD CONSTRAINT "containers_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "websites" ADD CONSTRAINT "websites_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "websites" ADD CONSTRAINT "websites_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "domains" ADD CONSTRAINT "domains_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "domain_records" ADD CONSTRAINT "domain_records_domainId_fkey" FOREIGN KEY ("domainId") REFERENCES "domains"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "deployments" ADD CONSTRAINT "deployments_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "deployments" ADD CONSTRAINT "deployments_websiteId_fkey" FOREIGN KEY ("websiteId") REFERENCES "websites"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "deployment_logs" ADD CONSTRAINT "deployment_logs_deploymentId_fkey" FOREIGN KEY ("deploymentId") REFERENCES "deployments"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "monitors" ADD CONSTRAINT "monitors_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "monitors" ADD CONSTRAINT "monitors_websiteId_fkey" FOREIGN KEY ("websiteId") REFERENCES "websites"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "monitors" ADD CONSTRAINT "monitors_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "monitor_results" ADD CONSTRAINT "monitor_results_monitorId_fkey" FOREIGN KEY ("monitorId") REFERENCES "monitors"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "automations" ADD CONSTRAINT "automations_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "automation_runs" ADD CONSTRAINT "automation_runs_automationId_fkey" FOREIGN KEY ("automationId") REFERENCES "automations"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "ai_runs" ADD CONSTRAINT "ai_runs_resourceId_fkey" FOREIGN KEY ("resourceId") REFERENCES "resources"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|