From 4cb15c9beaaad402ba3fd0cf1af7994e6f592ec7 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Sat, 4 Apr 2026 17:32:51 +0200 Subject: [PATCH] feat: add database migrations for environments, apps, deployments --- .../db/migration/V007__create_environments.sql | 13 +++++++++++++ .../db/migration/V008__create_apps.sql | 17 +++++++++++++++++ .../db/migration/V009__create_deployments.sql | 16 ++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/main/resources/db/migration/V007__create_environments.sql create mode 100644 src/main/resources/db/migration/V008__create_apps.sql create mode 100644 src/main/resources/db/migration/V009__create_deployments.sql diff --git a/src/main/resources/db/migration/V007__create_environments.sql b/src/main/resources/db/migration/V007__create_environments.sql new file mode 100644 index 0000000..e965630 --- /dev/null +++ b/src/main/resources/db/migration/V007__create_environments.sql @@ -0,0 +1,13 @@ +CREATE TABLE environments ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE, + slug VARCHAR(100) NOT NULL, + display_name VARCHAR(255) NOT NULL, + bootstrap_token TEXT NOT NULL, + status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + UNIQUE(tenant_id, slug) +); + +CREATE INDEX idx_environments_tenant_id ON environments(tenant_id); diff --git a/src/main/resources/db/migration/V008__create_apps.sql b/src/main/resources/db/migration/V008__create_apps.sql new file mode 100644 index 0000000..24c1e4c --- /dev/null +++ b/src/main/resources/db/migration/V008__create_apps.sql @@ -0,0 +1,17 @@ +CREATE TABLE apps ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + environment_id UUID NOT NULL REFERENCES environments(id) ON DELETE CASCADE, + slug VARCHAR(100) NOT NULL, + display_name VARCHAR(255) NOT NULL, + jar_storage_path VARCHAR(500), + jar_checksum VARCHAR(64), + jar_original_filename VARCHAR(255), + jar_size_bytes BIGINT, + current_deployment_id UUID, + previous_deployment_id UUID, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + UNIQUE(environment_id, slug) +); + +CREATE INDEX idx_apps_environment_id ON apps(environment_id); diff --git a/src/main/resources/db/migration/V009__create_deployments.sql b/src/main/resources/db/migration/V009__create_deployments.sql new file mode 100644 index 0000000..bf9898e --- /dev/null +++ b/src/main/resources/db/migration/V009__create_deployments.sql @@ -0,0 +1,16 @@ +CREATE TABLE deployments ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + app_id UUID NOT NULL REFERENCES apps(id) ON DELETE CASCADE, + version INTEGER NOT NULL, + image_ref VARCHAR(500) NOT NULL, + desired_status VARCHAR(20) NOT NULL DEFAULT 'RUNNING', + observed_status VARCHAR(20) NOT NULL DEFAULT 'BUILDING', + orchestrator_metadata JSONB DEFAULT '{}', + error_message TEXT, + deployed_at TIMESTAMPTZ, + stopped_at TIMESTAMPTZ, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + UNIQUE(app_id, version) +); + +CREATE INDEX idx_deployments_app_id ON deployments(app_id);