Files
iistwin/migrations/0083_delayed_status_changes.sql

19 lines
1.0 KiB
SQL

-- Отложенная смена статуса задачи (автоматизации, ctx.tasks.scheduleStatusChange).
-- Воркер каждые 5 секунд подбирает просроченные строки и переводит задачу
-- в target_status_id, только если она всё ещё в expected_status_id
-- (ручной переход в другой статус отменяет отложенное действие).
CREATE TABLE IF NOT EXISTS delayed_status_changes (
id SERIAL PRIMARY KEY,
organization_id INTEGER NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
task_id INTEGER NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
form_id INTEGER NOT NULL,
expected_status_id INTEGER NOT NULL,
target_status_id INTEGER NOT NULL,
run_at TIMESTAMPTZ NOT NULL,
executed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS delayed_status_changes_run_at_idx
ON delayed_status_changes (run_at) WHERE executed_at IS NULL;