init studio admin backend

This commit is contained in:
2026-07-01 17:30:04 +09:00
commit 4437d9980d
144 changed files with 44964 additions and 0 deletions
@@ -0,0 +1,136 @@
-- CreateEnum
CREATE TYPE "AppStatus" AS ENUM ('ACTIVE', 'READY', 'DISABLED');
-- CreateEnum
CREATE TYPE "ComponentType" AS ENUM ('ELECTRON', 'CONTAINER', 'STATIC_WEB', 'DATABASE', 'MIGRATION');
-- CreateEnum
CREATE TYPE "JobStatus" AS ENUM ('PENDING', 'RUNNING', 'SUCCEEDED', 'FAILED', 'CANCELED');
-- CreateTable
CREATE TABLE "apps" (
"id" UUID NOT NULL,
"key" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"namespace" TEXT,
"status" "AppStatus" NOT NULL DEFAULT 'READY',
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "apps_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "app_components" (
"id" UUID NOT NULL,
"app_id" UUID NOT NULL,
"name" TEXT NOT NULL,
"type" "ComponentType" NOT NULL,
"repository" TEXT,
"branch" TEXT,
"build_target" TEXT,
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "app_components_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "build_jobs" (
"id" UUID NOT NULL,
"component_id" UUID NOT NULL,
"branch" TEXT NOT NULL,
"commit_sha" TEXT,
"artifact" TEXT,
"image" TEXT,
"status" "JobStatus" NOT NULL DEFAULT 'PENDING',
"logs" TEXT,
"started_at" TIMESTAMPTZ(3),
"finished_at" TIMESTAMPTZ(3),
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "build_jobs_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "app_releases" (
"id" UUID NOT NULL,
"app_id" UUID NOT NULL,
"version" TEXT NOT NULL,
"branch" TEXT NOT NULL,
"commit_sha" TEXT,
"artifact" TEXT,
"image_tags" JSONB,
"status" "JobStatus" NOT NULL DEFAULT 'PENDING',
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "app_releases_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "deployment_jobs" (
"id" UUID NOT NULL,
"app_id" UUID NOT NULL,
"release_id" UUID,
"environment" TEXT NOT NULL,
"namespace" TEXT NOT NULL,
"status" "JobStatus" NOT NULL DEFAULT 'PENDING',
"requested_by" TEXT,
"logs" TEXT,
"started_at" TIMESTAMPTZ(3),
"finished_at" TIMESTAMPTZ(3),
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "deployment_jobs_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "notices" (
"id" UUID NOT NULL,
"scope" TEXT NOT NULL,
"title" TEXT NOT NULL,
"body" TEXT NOT NULL,
"audience" TEXT NOT NULL,
"is_active" BOOLEAN NOT NULL DEFAULT true,
"starts_at" TIMESTAMPTZ(3),
"ends_at" TIMESTAMPTZ(3),
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "notices_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "apps_key_key" ON "apps"("key");
-- CreateIndex
CREATE UNIQUE INDEX "app_components_app_id_name_key" ON "app_components"("app_id", "name");
-- CreateIndex
CREATE INDEX "build_jobs_component_id_created_at_idx" ON "build_jobs"("component_id", "created_at");
-- CreateIndex
CREATE UNIQUE INDEX "app_releases_app_id_version_key" ON "app_releases"("app_id", "version");
-- CreateIndex
CREATE INDEX "deployment_jobs_app_id_created_at_idx" ON "deployment_jobs"("app_id", "created_at");
-- CreateIndex
CREATE INDEX "notices_scope_is_active_idx" ON "notices"("scope", "is_active");
-- AddForeignKey
ALTER TABLE "app_components" ADD CONSTRAINT "app_components_app_id_fkey" FOREIGN KEY ("app_id") REFERENCES "apps"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "build_jobs" ADD CONSTRAINT "build_jobs_component_id_fkey" FOREIGN KEY ("component_id") REFERENCES "app_components"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "app_releases" ADD CONSTRAINT "app_releases_app_id_fkey" FOREIGN KEY ("app_id") REFERENCES "apps"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "deployment_jobs" ADD CONSTRAINT "deployment_jobs_app_id_fkey" FOREIGN KEY ("app_id") REFERENCES "apps"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "deployment_jobs" ADD CONSTRAINT "deployment_jobs_release_id_fkey" FOREIGN KEY ("release_id") REFERENCES "app_releases"("id") ON DELETE SET NULL ON UPDATE CASCADE;