19 lines
1.0 KiB
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;
|