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,48 +25,58 @@ 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()?;
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(())
})
}
/// 获取工作流