CREATE TABLE IF NOT EXISTS #request.tableName# (id SERIAL PRIMARY KEY, test_data TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
CREATE TABLE IF NOT EXISTS #request.logTableName# (
id SERIAL PRIMARY KEY,
action TEXT NOT NULL,
text TEXT,
request_id TEXT,
target_id INTEGER,
queued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
processed_at TIMESTAMP,
status TEXT DEFAULT 'queued',
error_reason TEXT
)
ALTER TABLE #request.logTableName# ADD COLUMN IF NOT EXISTS error_reason TEXT
UPDATE #request.logTableName#
SET processed_at = NOW(), status = 'done'
WHERE status = 'queued'
AND action IN ('create','update')
AND request_id IS NOT NULL
AND EXISTS (
SELECT 1 FROM #request.tableName#
WHERE test_data LIKE '%' || '[req:' || request_id || ']%'
)
UPDATE #request.logTableName#
SET processed_at = NOW(), status = 'done'
WHERE status = 'queued'
AND action = 'delete'
AND target_id IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM #request.tableName# WHERE id = target_id
)
UPDATE #request.logTableName#
SET status = 'failed', error_reason = 'target not found'
WHERE status = 'queued'
AND action = 'update'
AND target_id IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM #request.tableName# WHERE id = target_id
)
INSERT INTO #request.logTableName# (action, text, request_id, target_id, queued_at, status)
VALUES (
,
,
,
,
NOW(),
'queued'
)