Files
2026-06-22 08:55:57 +08:00

57 lines
1.9 KiB
SQL

-- name: InsertRun :one
INSERT INTO orchestrator_runs (
id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
RETURNING id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error,
created_at, updated_at, ended_at;
-- name: GetRun :one
SELECT id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error,
created_at, updated_at, ended_at
FROM orchestrator_runs
WHERE id = $1;
-- name: GetActiveRunByRequirement :one
SELECT id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error,
created_at, updated_at, ended_at
FROM orchestrator_runs
WHERE requirement_id = $1
AND status IN ('pending','running','paused')
ORDER BY created_at DESC
LIMIT 1;
-- name: ListRuns :many
SELECT id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error,
created_at, updated_at, ended_at
FROM orchestrator_runs
WHERE ($1::uuid IS NULL OR project_id = $1)
AND ($2::uuid IS NULL OR requirement_id = $2)
AND ($3::text = '' OR status = $3)
ORDER BY created_at DESC
LIMIT $4;
-- name: UpdateRunStatus :one
UPDATE orchestrator_runs
SET status = $2,
last_error = $3,
ended_at = CASE WHEN $2 IN ('succeeded','failed','canceled') THEN now() ELSE ended_at END,
updated_at = now()
WHERE id = $1
RETURNING id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error,
created_at, updated_at, ended_at;
-- name: UpdateRunPhase :one
UPDATE orchestrator_runs
SET current_phase = $2,
updated_at = now()
WHERE id = $1
RETURNING id, project_id, requirement_id, workspace_id, owner_id,
status, current_phase, config, last_error,
created_at, updated_at, ended_at;