55 lines
2.3 KiB
MySQL
55 lines
2.3 KiB
MySQL
|
|
-- V3__runtime_management.sql
|
||
|
|
-- Runtime management: environments, apps, app versions, deployments
|
||
|
|
|
||
|
|
CREATE TABLE environments (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
slug VARCHAR(100) NOT NULL UNIQUE,
|
||
|
|
display_name VARCHAR(255) NOT NULL,
|
||
|
|
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE',
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
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,
|
||
|
|
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);
|
||
|
|
|
||
|
|
CREATE TABLE app_versions (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
app_id UUID NOT NULL REFERENCES apps(id) ON DELETE CASCADE,
|
||
|
|
version INTEGER NOT NULL,
|
||
|
|
jar_path VARCHAR(500) NOT NULL,
|
||
|
|
jar_checksum VARCHAR(64) NOT NULL,
|
||
|
|
jar_filename VARCHAR(255),
|
||
|
|
jar_size_bytes BIGINT,
|
||
|
|
uploaded_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
|
|
UNIQUE(app_id, version)
|
||
|
|
);
|
||
|
|
CREATE INDEX idx_app_versions_app_id ON app_versions(app_id);
|
||
|
|
|
||
|
|
CREATE TABLE deployments (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
app_id UUID NOT NULL REFERENCES apps(id) ON DELETE CASCADE,
|
||
|
|
app_version_id UUID NOT NULL REFERENCES app_versions(id),
|
||
|
|
environment_id UUID NOT NULL REFERENCES environments(id),
|
||
|
|
status VARCHAR(20) NOT NULL DEFAULT 'STARTING',
|
||
|
|
container_id VARCHAR(100),
|
||
|
|
container_name VARCHAR(255),
|
||
|
|
error_message TEXT,
|
||
|
|
deployed_at TIMESTAMPTZ,
|
||
|
|
stopped_at TIMESTAMPTZ,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
CREATE INDEX idx_deployments_app_id ON deployments(app_id);
|
||
|
|
CREATE INDEX idx_deployments_env_id ON deployments(environment_id);
|
||
|
|
|
||
|
|
-- Default environment (standalone mode always has at least one)
|
||
|
|
INSERT INTO environments (slug, display_name) VALUES ('default', 'Default');
|