From 87ecbcb113c579e81317d4c97a2c967b1d64d3a7 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 25 Aug 2026 08:09:31 +0900 Subject: [PATCH] fix: validate non-worker ticket assignments --- crates/workspace-server/src/store.rs | 90 +++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 9 deletions(-) diff --git a/crates/workspace-server/src/store.rs b/crates/workspace-server/src/store.rs index c49960af..faf84096 100644 --- a/crates/workspace-server/src/store.rs +++ b/crates/workspace-server/src/store.rs @@ -6459,6 +6459,25 @@ fn validate_workspace_resource_references(conn: &Connection) -> Result<()> { fn workspace_resource_reference_diagnostics(conn: &Connection) -> Result> { let mut diagnostics = Vec::new(); + let current_assignment_reference_sql = + if column_exists(conn, "ticket_current_worker_assignments", "role")? + && column_exists(conn, "ticket_worker_assignments", "role")? + { + "SELECT current.workspace_id || '/' || current.assignment_id \ + FROM ticket_current_worker_assignments AS current \ + WHERE NOT EXISTS (SELECT 1 FROM ticket_worker_assignments AS assignment \ + WHERE assignment.workspace_id = current.workspace_id \ + AND assignment.ticket_id = current.ticket_id \ + AND assignment.role = current.role \ + AND assignment.assignment_id = current.assignment_id) LIMIT 100" + } else { + "SELECT current.workspace_id || '/' || current.assignment_id \ + FROM ticket_current_worker_assignments AS current \ + WHERE NOT EXISTS (SELECT 1 FROM ticket_worker_assignments AS assignment \ + WHERE assignment.workspace_id = current.workspace_id \ + AND assignment.ticket_id = current.ticket_id \ + AND assignment.assignment_id = current.assignment_id) LIMIT 100" + }; for (table, repository_nullable) in [ ("workdir_registry", false), ("artifacts", true), @@ -6531,14 +6550,7 @@ fn workspace_resource_reference_diagnostics(conn: &Connection) -> Result