You've already forked agentic-coding-workflow
94 lines
2.3 KiB
SQL
94 lines
2.3 KiB
SQL
-- name: CreateWorktree :one
|
|
INSERT INTO workspace_worktrees (
|
|
id, workspace_id, branch, path, status, active_holder, acquired_at
|
|
) VALUES ($1,$2,$3,$4,$5,$6,$7)
|
|
RETURNING *;
|
|
|
|
-- name: GetWorktreeByID :one
|
|
SELECT * FROM workspace_worktrees WHERE id = $1;
|
|
|
|
-- name: GetWorktreeByIDForUpdate :one
|
|
SELECT * FROM workspace_worktrees WHERE id = $1
|
|
FOR UPDATE;
|
|
|
|
-- name: GetWorktreeByBranchForUpdate :one
|
|
SELECT * FROM workspace_worktrees
|
|
WHERE workspace_id = $1 AND branch = $2
|
|
FOR UPDATE;
|
|
|
|
-- name: ListWorktreesByWorkspace :many
|
|
SELECT * FROM workspace_worktrees
|
|
WHERE workspace_id = $1
|
|
ORDER BY created_at DESC;
|
|
|
|
-- name: SetWorktreeActive :one
|
|
UPDATE workspace_worktrees
|
|
SET status = 'active',
|
|
active_holder = $2,
|
|
acquired_at = now(),
|
|
last_used_at = now(),
|
|
prune_warning_at = NULL
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: SetWorktreeIdle :one
|
|
UPDATE workspace_worktrees
|
|
SET status = 'idle',
|
|
active_holder = NULL,
|
|
acquired_at = NULL,
|
|
last_used_at = now(),
|
|
prune_warning_at = NULL
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: SetWorktreePruning :one
|
|
UPDATE workspace_worktrees
|
|
SET status = 'pruning', last_used_at = now()
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: DeleteWorktree :exec
|
|
DELETE FROM workspace_worktrees WHERE id = $1;
|
|
|
|
-- name: ListWorktreesNeedingPruneWarning :many
|
|
SELECT * FROM workspace_worktrees
|
|
WHERE status = 'idle'
|
|
AND prune_warning_at IS NULL
|
|
AND last_used_at < $1
|
|
ORDER BY last_used_at ASC;
|
|
|
|
-- name: ListWorktreesNeedingPrune :many
|
|
SELECT * FROM workspace_worktrees
|
|
WHERE status = 'idle'
|
|
AND last_used_at < $1
|
|
ORDER BY last_used_at ASC;
|
|
|
|
-- name: MarkPruneWarning :exec
|
|
UPDATE workspace_worktrees
|
|
SET prune_warning_at = now()
|
|
WHERE id = $1 AND prune_warning_at IS NULL;
|
|
|
|
-- name: TryStartPrune :one
|
|
UPDATE workspace_worktrees
|
|
SET status = 'pruning'
|
|
WHERE id = $1 AND status = 'idle'
|
|
RETURNING *;
|
|
|
|
-- name: FinishPruneSuccess :exec
|
|
DELETE FROM workspace_worktrees WHERE id = $1;
|
|
|
|
-- name: FinishPruneRollback :exec
|
|
UPDATE workspace_worktrees
|
|
SET status = 'idle'
|
|
WHERE id = $1 AND status = 'pruning';
|
|
|
|
-- name: ReleaseWorktreesByHolder :many
|
|
UPDATE workspace_worktrees
|
|
SET status = 'idle',
|
|
active_holder = NULL,
|
|
acquired_at = NULL,
|
|
last_used_at = now(),
|
|
prune_warning_at = NULL
|
|
WHERE active_holder = $1 AND status = 'active'
|
|
RETURNING *;
|