diff --git a/apps/desktop/src-tauri/src/data/repositories/comfyui_repository.rs b/apps/desktop/src-tauri/src/data/repositories/comfyui_repository.rs index 2bc90cc..20badd7 100644 --- a/apps/desktop/src-tauri/src/data/repositories/comfyui_repository.rs +++ b/apps/desktop/src-tauri/src/data/repositories/comfyui_repository.rs @@ -25,48 +25,58 @@ impl ComfyUIRepository { } /// 获取数据库连接 - fn get_connection(&self) -> Result> { - let conn = self.database.get_connection(); - conn.lock().map_err(|e| anyhow!("获取数据库连接失败: {}", e)) + fn get_connection(&self) -> Arc> { + self.database.get_connection() + } + + /// 执行数据库操作的辅助方法 + fn with_connection(&self, f: F) -> Result + where + F: FnOnce(&Connection) -> Result, + { + let conn = self.get_connection(); + let conn = conn.lock().map_err(|e| anyhow!("获取数据库连接失败: {}", e))?; + f(&*conn) } /// 初始化数据库表(现在通过主数据库的migration系统处理) pub fn initialize(&self) -> Result<()> { // ComfyUI表现在通过主数据库的migration系统创建 // 这里只需要确保连接可用 - let _conn = self.get_connection()?; - info!("ComfyUI 数据仓库初始化完成"); - Ok(()) + self.with_connection(|_conn| { + info!("ComfyUI 数据仓库初始化完成"); + Ok(()) + }) } // ==================== 工作流相关操作 ==================== /// 创建工作流 pub fn create_workflow(&self, workflow: &WorkflowModel) -> Result<()> { - let conn = self.get_connection()?; - - let workflow_data_json = serde_json::to_string(&workflow.workflow_data)?; - let tags_json = serde_json::to_string(&workflow.tags)?; - - conn.execute( - "INSERT INTO comfyui_workflows (id, name, description, workflow_data, version, created_at, updated_at, enabled, tags, category) - VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", - params![ - workflow.id, - workflow.name, - workflow.description, - workflow_data_json, - workflow.version, - workflow.created_at, - workflow.updated_at, - workflow.enabled, - tags_json, - workflow.category - ], - )?; - - debug!("创建工作流: {}", workflow.id); - Ok(()) + self.with_connection(|conn| { + let workflow_data_json = serde_json::to_string(&workflow.workflow_data)?; + let tags_json = serde_json::to_string(&workflow.tags)?; + + conn.execute( + "INSERT INTO comfyui_workflows (id, name, description, workflow_data, version, created_at, updated_at, enabled, tags, category) + VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", + params![ + workflow.id, + workflow.name, + workflow.description, + workflow_data_json, + workflow.version, + workflow.created_at, + workflow.updated_at, + workflow.enabled, + tags_json, + workflow.category + ], + )?; + + debug!("创建工作流: {}", workflow.id); + Ok(()) + }) } /// 获取工作流