feat: 统一数据库和migration系统

This commit is contained in:
杨明明 2025-08-08 18:39:55 +08:00
parent ba121dfb3b
commit e9be3199ea
1 changed files with 40 additions and 30 deletions

View File

@ -25,26 +25,35 @@ impl ComfyUIRepository {
}
/// 获取数据库连接
fn get_connection(&self) -> Result<std::sync::MutexGuard<Connection>> {
let conn = self.database.get_connection();
conn.lock().map_err(|e| anyhow!("获取数据库连接失败: {}", e))
fn get_connection(&self) -> Arc<std::sync::Mutex<Connection>> {
self.database.get_connection()
}
/// 执行数据库操作的辅助方法
fn with_connection<F, R>(&self, f: F) -> Result<R>
where
F: FnOnce(&Connection) -> Result<R>,
{
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()?;
self.with_connection(|_conn| {
info!("ComfyUI 数据仓库初始化完成");
Ok(())
})
}
// ==================== 工作流相关操作 ====================
/// 创建工作流
pub fn create_workflow(&self, workflow: &WorkflowModel) -> Result<()> {
let conn = self.get_connection()?;
self.with_connection(|conn| {
let workflow_data_json = serde_json::to_string(&workflow.workflow_data)?;
let tags_json = serde_json::to_string(&workflow.tags)?;
@ -67,6 +76,7 @@ impl ComfyUIRepository {
debug!("创建工作流: {}", workflow.id);
Ok(())
})
}
/// 获取工作流