nomadcode/services/core/queries/workspace_slots.sql
toki 74ba7ebd76 feat(core): 워크스페이스 슬롯 저장소를 추가한다
Milestone work item 생성 동기화에서 workspace slot 상태를 DB에 저장하고 available slot을 원자적으로 예약할 수 있어야 한다.

리뷰 루프 산출물을 archive하고, 현재 로드맵 우선순위를 Workbench Provider Slot Composition으로 조정한다.
2026-06-06 19:50:16 +09:00

30 lines
1.1 KiB
SQL

-- name: ListWorkspaceSlotsByProject :many
SELECT id, project_sync_setting_id, slot_index, state, path, created_at, updated_at
FROM workspace_slots
WHERE project_sync_setting_id = $1
ORDER BY slot_index;
-- name: UpsertWorkspaceSlot :one
INSERT INTO workspace_slots (project_sync_setting_id, slot_index, state, path)
VALUES ($1, $2, 'available', $3)
ON CONFLICT (project_sync_setting_id, slot_index)
DO UPDATE SET path = EXCLUDED.path, updated_at = now()
RETURNING id, project_sync_setting_id, slot_index, state, path, created_at, updated_at;
-- name: ReserveAvailableWorkspaceSlot :one
UPDATE workspace_slots
SET state = 'in_use', updated_at = now()
WHERE id = (
SELECT id FROM workspace_slots
WHERE project_sync_setting_id = $1 AND state = 'available'
ORDER BY slot_index
LIMIT 1
FOR UPDATE SKIP LOCKED
)
RETURNING id, project_sync_setting_id, slot_index, state, path, created_at, updated_at;
-- name: UpdateWorkspaceSlotState :one
UPDATE workspace_slots
SET state = $2, updated_at = now()
WHERE id = $1
RETURNING id, project_sync_setting_id, slot_index, state, path, created_at, updated_at;