Files
creator-hub/internal/account/migrations/036_runtime_use_leases.sql
T

37 lines
1.5 KiB
SQL

ALTER TABLE runtime_instance
ADD COLUMN IF NOT EXISTS owner_id text NOT NULL DEFAULT 'control-plane',
ADD COLUMN IF NOT EXISTS purpose text NOT NULL DEFAULT 'session',
ADD COLUMN IF NOT EXISTS lease_token text NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS node_id text NOT NULL DEFAULT '';
ALTER TABLE runtime_instance
DROP CONSTRAINT IF EXISTS runtime_instance_purpose_check;
ALTER TABLE runtime_instance
ADD CONSTRAINT runtime_instance_purpose_check
CHECK (purpose IN ('session', 'task', 'listener'));
CREATE UNIQUE INDEX IF NOT EXISTS runtime_instance_active_lease_token_idx
ON runtime_instance (lease_token)
WHERE released_at IS NULL AND lease_token <> '';
CREATE TABLE IF NOT EXISTS runtime_use_lease (
token text PRIMARY KEY,
runtime_instance_id text NOT NULL REFERENCES runtime_instance(id),
owner_id text NOT NULL,
purpose text NOT NULL CHECK (purpose IN ('task', 'listener')),
task_id text REFERENCES operation_task(id),
lease_until timestamptz NOT NULL,
acquired_at timestamptz NOT NULL DEFAULT now(),
released_at timestamptz,
CHECK (length(token) BETWEEN 16 AND 128),
CHECK (length(owner_id) BETWEEN 1 AND 128)
);
CREATE INDEX IF NOT EXISTS runtime_use_lease_active_runtime_idx
ON runtime_use_lease (runtime_instance_id, lease_until)
WHERE released_at IS NULL;
CREATE UNIQUE INDEX IF NOT EXISTS runtime_use_lease_active_task_idx
ON runtime_use_lease (task_id)
WHERE released_at IS NULL AND task_id IS NOT NULL;