onepanel/db/sql/20200502184729_workspaces.sql

28 lines
1.1 KiB
SQL

-- +goose Up
CREATE TABLE workspaces
(
id serial PRIMARY KEY,
uid varchar(30) NOT NULL CHECK(uid <> ''),
name varchar(30) NOT NULL CHECK(name <> ''),
namespace varchar(30) NOT NULL,
phase varchar(50) NOT NULL,
parameters jsonb NOT NULL,
workspace_template_id integer NOT NULL REFERENCES workspace_templates ON DELETE CASCADE,
workspace_template_version integer NOT NULL,
started_at timestamp,
paused_at timestamp,
terminated_at timestamp,
-- auditing info
created_at timestamp NOT NULL DEFAULT (NOW() at time zone 'utc'),
modified_at timestamp
);
CREATE UNIQUE INDEX workspaces_name_namespace_key ON workspaces (name, namespace) WHERE phase <> 'Terminated';
CREATE UNIQUE INDEX workspaces_uid_namespace_key ON workspaces (uid, namespace) WHERE phase <> 'Terminated';
-- +goose Down
DROP TABLE workspaces;