-- Migration: Worker Commands Table -- Purpose: Store commands for workers (decommission, etc.) -- Workers poll this table after each task to check for commands CREATE TABLE IF NOT EXISTS worker_commands ( id SERIAL PRIMARY KEY, worker_id TEXT NOT NULL, command TEXT NOT NULL, -- 'decommission', 'pause', 'resume' reason TEXT, issued_by TEXT, issued_at TIMESTAMPTZ DEFAULT NOW(), acknowledged_at TIMESTAMPTZ, executed_at TIMESTAMPTZ, status TEXT DEFAULT 'pending' -- 'pending', 'acknowledged', 'executed', 'cancelled' ); -- Index for worker lookups CREATE INDEX IF NOT EXISTS idx_worker_commands_worker_id ON worker_commands(worker_id); CREATE INDEX IF NOT EXISTS idx_worker_commands_pending ON worker_commands(worker_id, status) WHERE status = 'pending'; -- Add decommission_requested column to worker_registry for quick checks ALTER TABLE worker_registry ADD COLUMN IF NOT EXISTS decommission_requested BOOLEAN DEFAULT FALSE; ALTER TABLE worker_registry ADD COLUMN IF NOT EXISTS decommission_reason TEXT; ALTER TABLE worker_registry ADD COLUMN IF NOT EXISTS decommission_requested_at TIMESTAMPTZ; -- Comment COMMENT ON TABLE worker_commands IS 'Commands issued to workers (decommission after task, pause, etc.)';