CREATE TABLE IF NOT EXISTS tasks ( id TEXT PRIMARY KEY NOT NULL, name TEXT NOT NULL, cron TEXT NOT NULL, timezone TEXT NOT NULL, enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)), timeout_secs INTEGER NOT NULL CHECK (timeout_secs > 0), concurrency_policy TEXT NOT NULL DEFAULT 'skip' CHECK (concurrency_policy = 'skip'), retry_max_attempts INTEGER NOT NULL DEFAULT 0 CHECK (retry_max_attempts >= 0), retry_delay_secs INTEGER NOT NULL DEFAULT 0 CHECK (retry_delay_secs >= 0), action_type TEXT NOT NULL CHECK (action_type IN ('script', 'http', 'process')), action_json TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS idx_tasks_updated_at ON tasks(updated_at DESC); CREATE INDEX IF NOT EXISTS idx_tasks_enabled ON tasks(enabled); CREATE INDEX IF NOT EXISTS idx_tasks_action_type ON tasks(action_type);