77 lines
2.1 KiB
SQL
77 lines
2.1 KiB
SQL
SET ROLE tinkerbell;
|
|
|
|
CREATE TABLE IF NOT EXISTS hardware (
|
|
id UUID UNIQUE
|
|
, inserted_at TIMESTAMPTZ
|
|
, deleted_at TIMESTAMPTZ
|
|
, data JSONB
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_id ON hardware (id);
|
|
CREATE INDEX IF NOT EXISTS idx_deleted_at ON hardware (deleted_at NULLS FIRST);
|
|
CREATE INDEX IF NOT EXISTS idxgin_type ON hardware USING GIN (data JSONB_PATH_OPS);
|
|
|
|
CREATE TABLE IF NOT EXISTS template (
|
|
id UUID UNIQUE NOT NULL
|
|
, name VARCHAR(200) NOT NULL
|
|
, created_at TIMESTAMPTZ
|
|
, updated_at TIMESTAMPTZ
|
|
, deleted_at TIMESTAMPTZ
|
|
, data BYTEA
|
|
|
|
CONSTRAINT CK_name CHECK (name ~ '^[a-zA-Z0-9_-]*$')
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tid ON template (id);
|
|
CREATE INDEX IF NOT EXISTS idx_tdeleted_at ON template (deleted_at NULLS FIRST);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow (
|
|
id UUID UNIQUE NOT NULL
|
|
, template UUID NOT NULL
|
|
, devices JSONB NOT NULL
|
|
, created_at TIMESTAMPTZ
|
|
, updated_at TIMESTAMPTZ
|
|
, deleted_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_wid ON workflow (id);
|
|
CREATE INDEX IF NOT EXISTS idx_wdeleted_at ON workflow (deleted_at NULLS FIRST);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_state (
|
|
workflow_id UUID UNIQUE NOT NULL
|
|
, current_task_name VARCHAR(200)
|
|
, current_action_name VARCHAR(200)
|
|
, current_action_state SMALLINT
|
|
, current_worker VARCHAR(200)
|
|
, action_list JSONB
|
|
, current_action_index int
|
|
, total_number_of_actions INT
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_wfid ON workflow_state (workflow_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_event (
|
|
workflow_id UUID NOT NULL
|
|
, worker_id UUID NOT NULL
|
|
, task_name VARCHAR(200)
|
|
, action_name VARCHAR(200)
|
|
, execution_time int
|
|
, message VARCHAR(200)
|
|
, status SMALLINT
|
|
, created_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_event ON workflow_event (created_at);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_worker_map (
|
|
workflow_id UUID NOT NULL
|
|
, worker_id UUID NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_data (
|
|
workflow_id UUID NOT NULL
|
|
, version INT
|
|
, metadata JSONB
|
|
, data JSONB
|
|
);
|