(state: &AppState, cmd: &str, args: Value)
| 276 | } |
| 277 | |
| 278 | pub async fn dispatch(state: &AppState, cmd: &str, args: Value) -> Result<Value, DispatchError> { |
| 279 | match cmd { |
| 280 | "get_projects" => { |
| 281 | parse_args::<NoArgs>(args)?; |
| 282 | let conn = open_readonly(state)?; |
| 283 | json(db::get_projects(&conn).map_err(to_command)?) |
| 284 | } |
| 285 | "get_memories" => { |
| 286 | let a: GetMemoriesArgs = parse_args(args)?; |
| 287 | let conn = open_readonly(state)?; |
| 288 | json( |
| 289 | db::get_memories( |
| 290 | &conn, |
| 291 | a.project.as_deref(), |
| 292 | a.workspace_id, |
| 293 | a.status.as_deref(), |
| 294 | a.category.as_deref(), |
| 295 | a.search.as_deref(), |
| 296 | a.limit.unwrap_or(100), |
| 297 | a.offset.unwrap_or(0), |
| 298 | ) |
| 299 | .map_err(to_command)?, |
| 300 | ) |
| 301 | } |
| 302 | "get_memory_stats" => { |
| 303 | let a: ProjectWorkspaceArgs = parse_args(args)?; |
| 304 | let conn = open_readonly(state)?; |
| 305 | json( |
| 306 | db::get_memory_stats(&conn, a.project.as_deref(), a.workspace_id) |
| 307 | .map_err(to_command)?, |
| 308 | ) |
| 309 | } |
| 310 | "get_primers" => { |
| 311 | let a: ProjectArgs = parse_args(args)?; |
| 312 | let conn = open_readonly(state)?; |
| 313 | json(db::get_primers(&conn, a.project.as_deref()).map_err(to_command)?) |
| 314 | } |
| 315 | "get_primer_candidates" => { |
| 316 | let a: ProjectArgs = parse_args(args)?; |
| 317 | let conn = open_readonly(state)?; |
| 318 | json(db::get_primer_candidates(&conn, a.project.as_deref()).map_err(to_command)?) |
| 319 | } |
| 320 | "workspace_schema_ready" => { |
| 321 | parse_args::<NoArgs>(args)?; |
| 322 | let conn = open_readonly(state)?; |
| 323 | json(workspaces::workspace_schema_ready(&conn).map_err(to_command)?) |
| 324 | } |
| 325 | "list_workspaces" => { |
| 326 | parse_args::<NoArgs>(args)?; |
| 327 | let conn = open_readonly(state)?; |
| 328 | json(workspaces::list_workspaces(&conn).map_err(to_command)?) |
| 329 | } |
| 330 | "list_workspace_summaries" => { |
| 331 | parse_args::<NoArgs>(args)?; |
| 332 | let conn = open_readonly(state)?; |
| 333 | json(workspaces::list_workspace_summaries(&conn).map_err(to_command)?) |
| 334 | } |
| 335 | "create_workspace" => { |
no test coverage detected