You've already forked agentic-coding-workflow
a2b6d5382e
- workspace.ResetStuckSyncStatuses now returns affected IDs so app.New can record one workspace.sync_aborted_on_restart audit per reset row - worktree_prune audit metadata gains workspace_id and path alongside existing branch - updated fakeRepo + integration test for new ResetStuckSyncStatuses signature - add TestWorktreePrune_AuditMetadataContainsWorkspaceIDAndPath
65 lines
1.8 KiB
SQL
65 lines
1.8 KiB
SQL
-- name: CreateWorkspace :one
|
|
INSERT INTO workspaces (
|
|
id, project_id, slug, name, description,
|
|
git_remote_url, default_branch, main_path, sync_status
|
|
) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9)
|
|
RETURNING *;
|
|
|
|
-- name: GetWorkspaceByID :one
|
|
SELECT * FROM workspaces WHERE id = $1;
|
|
|
|
-- name: GetWorkspaceBySlug :one
|
|
SELECT w.* FROM workspaces w
|
|
JOIN projects p ON p.id = w.project_id
|
|
WHERE p.slug = $1 AND w.slug = $2;
|
|
|
|
-- name: ListWorkspacesByProject :many
|
|
SELECT * FROM workspaces WHERE project_id = $1
|
|
ORDER BY created_at DESC;
|
|
|
|
-- name: UpdateWorkspaceCore :one
|
|
UPDATE workspaces
|
|
SET name = $2, description = $3, default_branch = $4, updated_at = now()
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: UpdateWorkspaceSyncStatus :one
|
|
UPDATE workspaces
|
|
SET sync_status = $2,
|
|
last_synced_at = $3,
|
|
last_sync_error = $4,
|
|
updated_at = now()
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: DeleteWorkspace :exec
|
|
DELETE FROM workspaces WHERE id = $1;
|
|
|
|
-- name: ResetStuckSyncStatuses :many
|
|
UPDATE workspaces
|
|
SET sync_status = 'error',
|
|
last_sync_error = 'process_restarted_during_' || sync_status,
|
|
updated_at = now()
|
|
WHERE sync_status IN ('cloning', 'syncing')
|
|
RETURNING id, last_sync_error;
|
|
|
|
-- name: ListFetchTargets :many
|
|
SELECT w.id, p.owner_id, w.name, w.main_path
|
|
FROM workspaces w
|
|
JOIN projects p ON p.id = w.project_id
|
|
WHERE w.archived_at IS NULL
|
|
AND w.sync_status IN ('idle','error')
|
|
ORDER BY w.id;
|
|
|
|
-- name: MarkSyncingCAS :execrows
|
|
UPDATE workspaces SET sync_status='syncing', updated_at=now()
|
|
WHERE id=$1 AND sync_status IN ('idle','error');
|
|
|
|
-- name: MarkFetchResult :exec
|
|
UPDATE workspaces
|
|
SET sync_status = CASE WHEN $2::bool THEN 'idle' ELSE 'error' END,
|
|
last_synced_at = CASE WHEN $2::bool THEN now() ELSE last_synced_at END,
|
|
last_sync_error = $3,
|
|
updated_at = now()
|
|
WHERE id = $1;
|