diff --git a/apps/desktop/src-tauri/src/presentation/commands/comfyui_v2_commands.rs b/apps/desktop/src-tauri/src/presentation/commands/comfyui_v2_commands.rs index f3027ed..6bf9343 100644 --- a/apps/desktop/src-tauri/src/presentation/commands/comfyui_v2_commands.rs +++ b/apps/desktop/src-tauri/src/presentation/commands/comfyui_v2_commands.rs @@ -504,7 +504,7 @@ pub async fn comfyui_v2_create_workflow( Ok(convert_workflow_model(&workflow)) } -/// 获取工作流列表 +/// 获取工作流列表(实际查询模板表,因为模板和工作流是同一概念) #[tauri::command] pub async fn comfyui_v2_list_workflows( enabled_only: Option, @@ -513,16 +513,19 @@ pub async fn comfyui_v2_list_workflows( info!("Command: comfyui_v2_list_workflows"); let service_manager = get_service_manager(&state).await?; - let repository = service_manager.get_repository(); + let template_engine = service_manager.get_template_engine().await + .map_err(|e| format!("获取模板引擎失败: {}", e))?; - let workflows = repository.list_workflows(enabled_only.unwrap_or(true)) - .map_err(|e| format!("获取工作流列表失败: {}", e))?; + // 查询模板列表(模板和工作流是同一概念) + let templates = template_engine.list_templates(enabled_only.unwrap_or(true)).await + .map_err(|e| format!("获取模板列表失败: {}", e))?; - let responses = workflows.iter().map(convert_workflow_model).collect(); + // 将模板转换为工作流响应格式 + let responses = templates.iter().map(convert_template_to_workflow_response).collect(); Ok(responses) } -/// 获取单个工作流 +/// 获取单个工作流(实际查询模板表,因为模板和工作流是同一概念) #[tauri::command] pub async fn comfyui_v2_get_workflow( workflow_id: String, @@ -531,12 +534,19 @@ pub async fn comfyui_v2_get_workflow( info!("Command: comfyui_v2_get_workflow - {}", workflow_id); let service_manager = get_service_manager(&state).await?; - let repository = service_manager.get_repository(); + let template_engine = service_manager.get_template_engine().await + .map_err(|e| format!("获取模板引擎失败: {}", e))?; - match repository.get_workflow(&workflow_id) { - Ok(Some(workflow)) => Ok(convert_workflow_model(&workflow)), - Ok(None) => Err("工作流不存在".to_string()), - Err(e) => Err(format!("获取工作流失败: {}", e)), + // 查询模板(模板和工作流是同一概念) + match template_engine.load_template(&workflow_id).await { + Ok(template) => Ok(convert_template_to_workflow_response(&template)), + Err(e) => { + if e.to_string().contains("模板不存在") { + Err("工作流不存在".to_string()) + } else { + Err(format!("获取工作流失败: {}", e)) + } + } } } @@ -552,7 +562,7 @@ pub async fn comfyui_v2_update_workflow( Err("功能暂未实现".to_string()) } -/// 删除工作流 +/// 删除工作流(实际删除模板,因为模板和工作流是同一概念) #[tauri::command] pub async fn comfyui_v2_delete_workflow( workflow_id: String, @@ -561,9 +571,11 @@ pub async fn comfyui_v2_delete_workflow( info!("Command: comfyui_v2_delete_workflow - {}", workflow_id); let service_manager = get_service_manager(&state).await?; - let repository = service_manager.get_repository(); + let template_engine = service_manager.get_template_engine().await + .map_err(|e| format!("获取模板引擎失败: {}", e))?; - repository.delete_workflow(&workflow_id) + // 删除模板(模板和工作流是同一概念) + template_engine.delete_template(&workflow_id).await .map_err(|e| format!("删除工作流失败: {}", e))?; Ok("工作流删除成功".to_string()) @@ -610,3 +622,21 @@ fn convert_workflow_model(workflow: &WorkflowModel) -> WorkflowResponse { category: workflow.category.clone(), } } + +/// 转换模板模型为工作流响应(因为模板和工作流是同一概念) +fn convert_template_to_workflow_response(template: &crate::data::models::comfyui::TemplateModel) -> WorkflowResponse { + WorkflowResponse { + id: template.id.clone(), + name: template.name.clone(), + description: template.description.clone(), + workflow_data: template.template_data.workflow.iter() + .map(|(k, v)| (k.clone(), serde_json::to_value(v).unwrap_or(serde_json::Value::Null))) + .collect(), + version: template.version.clone(), + created_at: template.created_at.to_rfc3339(), + updated_at: template.updated_at.to_rfc3339(), + enabled: template.enabled, + tags: template.tags.clone(), + category: template.category.clone(), + } +}