mirror of https://github.com/coder/coder.git
76 lines
2.4 KiB
SQL
76 lines
2.4 KiB
SQL
CREATE TABLE workspace (
|
|
id uuid NOT NULL UNIQUE,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
owner_id text NOT NULL,
|
|
project_id uuid NOT NULL REFERENCES project (id),
|
|
name varchar(64) NOT NULL,
|
|
UNIQUE(owner_id, name)
|
|
);
|
|
|
|
CREATE TYPE workspace_transition AS ENUM (
|
|
'create',
|
|
'start',
|
|
'stop',
|
|
'delete'
|
|
);
|
|
|
|
-- Workspace transition represents a change in workspace state.
|
|
CREATE TABLE workspace_history (
|
|
id uuid NOT NULL UNIQUE,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
completed_at timestamptz,
|
|
workspace_id uuid NOT NULL REFERENCES workspace (id) ON DELETE CASCADE,
|
|
project_history_id uuid NOT NULL REFERENCES project_history (id) ON DELETE CASCADE,
|
|
name varchar(64) NOT NULL,
|
|
before_id uuid,
|
|
after_id uuid,
|
|
transition workspace_transition NOT NULL,
|
|
initiator varchar(255) NOT NULL,
|
|
-- State stored by the provisioner
|
|
provisioner_state bytea,
|
|
-- Job ID of the action
|
|
provision_job_id uuid NOT NULL,
|
|
UNIQUE(workspace_id, name)
|
|
);
|
|
|
|
-- Cloud resources produced by a provision job.
|
|
CREATE TABLE workspace_resource (
|
|
id uuid NOT NULL UNIQUE,
|
|
created_at timestamptz NOT NULL,
|
|
workspace_history_id uuid NOT NULL REFERENCES workspace_history (id) ON DELETE CASCADE,
|
|
-- Resource type produced by a provisioner.
|
|
-- eg. "google_compute_instance"
|
|
type varchar(256) NOT NULL,
|
|
-- Name of the resource.
|
|
-- eg. "kyle-dev-instance"
|
|
name varchar(64) NOT NULL,
|
|
-- Token for an agent to connect.
|
|
workspace_agent_token varchar(128) NOT NULL UNIQUE,
|
|
-- If an agent has been conencted for this resource,
|
|
-- the agent table is not null.
|
|
workspace_agent_id uuid,
|
|
|
|
UNIQUE(workspace_history_id, name)
|
|
);
|
|
|
|
CREATE TABLE workspace_agent (
|
|
id uuid NOT NULL UNIQUE,
|
|
workspace_resource_id uuid NOT NULL REFERENCES workspace_resource (id) ON DELETE CASCADE,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
-- Identifies instance architecture, cloud, etc.
|
|
instance_metadata jsonb NOT NULL,
|
|
-- Identifies resources.
|
|
resource_metadata jsonb NOT NULL
|
|
);
|
|
|
|
CREATE TABLE workspace_history_log (
|
|
id uuid NOT NULL UNIQUE,
|
|
workspace_history_id uuid NOT NULL REFERENCES workspace_history (id) ON DELETE CASCADE,
|
|
created_at timestamptz NOT NULL,
|
|
source log_source NOT NULL,
|
|
level log_level NOT NULL,
|
|
output varchar(1024) NOT NULL
|
|
); |