51 lines
1.8 KiB
SQL
51 lines
1.8 KiB
SQL
/* For HarmonyTask base implementation. */
|
|
|
|
CREATE TABLE harmony_machines (
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
last_contact TIMESTAMP NOT NULL DEFAULT current_timestamp,
|
|
host_and_port varchar(300) NOT NULL,
|
|
cpu INTEGER NOT NULL,
|
|
ram BIGINT NOT NULL,
|
|
gpu FLOAT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE harmony_task (
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
initiated_by INTEGER,
|
|
update_time TIMESTAMP NOT NULL DEFAULT current_timestamp,
|
|
posted_time TIMESTAMP NOT NULL,
|
|
owner_id INTEGER REFERENCES harmony_machines (id) ON DELETE SET NULL,
|
|
added_by INTEGER NOT NULL,
|
|
previous_task INTEGER,
|
|
name varchar(16) NOT NULL
|
|
);
|
|
COMMENT ON COLUMN harmony_task.initiated_by IS 'The task ID whose completion occasioned this task.';
|
|
COMMENT ON COLUMN harmony_task.owner_id IS 'The foreign key to harmony_machines.';
|
|
COMMENT ON COLUMN harmony_task.name IS 'The name of the task type.';
|
|
COMMENT ON COLUMN harmony_task.owner_id IS 'may be null if between owners or not yet taken';
|
|
COMMENT ON COLUMN harmony_task.update_time IS 'When it was last modified. not a heartbeat';
|
|
|
|
CREATE TABLE harmony_task_history (
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
task_id INTEGER NOT NULL,
|
|
name VARCHAR(16) NOT NULL,
|
|
posted TIMESTAMP NOT NULL,
|
|
work_start TIMESTAMP NOT NULL,
|
|
work_end TIMESTAMP NOT NULL,
|
|
result BOOLEAN NOT NULL,
|
|
err varchar
|
|
);
|
|
COMMENT ON COLUMN harmony_task_history.result IS 'Use to detemine if this was a successful run.';
|
|
|
|
CREATE TABLE harmony_task_follow (
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
owner_id INTEGER NOT NULL REFERENCES harmony_machines (id) ON DELETE CASCADE,
|
|
to_type VARCHAR(16) NOT NULL,
|
|
from_type VARCHAR(16) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE harmony_task_impl (
|
|
id SERIAL PRIMARY KEY NOT NULL,
|
|
owner_id INTEGER NOT NULL REFERENCES harmony_machines (id) ON DELETE CASCADE,
|
|
name VARCHAR(16) NOT NULL
|
|
); |