fix: 统一模板和工作流概念,修复comfyui_v2_list_workflows查询问题
主要修改: 1. **统一模板和工作流概念** - 确认模板和工作流是同一概念,避免重复存储 - 修改comfyui_v2_list_workflows查询模板表而非工作流表 - 修改comfyui_v2_get_workflow查询模板引擎 - 修改comfyui_v2_delete_workflow删除模板记录 2. **修复数据查询问题** - 解决创建模板后comfyui_v2_list_workflows返回空数组的问题 - 添加convert_template_to_workflow_response转换函数 - 确保前端能够正确获取创建的模板数据 3. **保持API兼容性** - 保持现有的API接口不变 - 返回格式与WorkflowResponse保持一致 - 确保前端代码无需修改 这个修改解决了模板创建成功但列表查询为空的核心问题, 现在创建模板后可以通过comfyui_v2_list_workflows正确获取数据。
This commit is contained in:
parent
84081284f7
commit
ef8c6fd3e0
|
|
@ -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<bool>,
|
||||
|
|
@ -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(),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue