fix: 修复MaterialRepository中get_project_by_id方法的占位符实现
问题修复: - 修复MaterialRepository.get_project_by_id总是返回None的问题 - 实现正确的项目查询逻辑,直接从projects表查询 - 解决AI分类后文件移动失败的根本原因 技术实现: - 在MaterialRepository中添加完整的项目查询实现 - 正确处理数据库查询和错误处理 - 支持项目不存在时返回None而不是错误 问题解决: - 现在AI分类完成后可以正确找到项目信息 - 文件移动到assets/分类目录功能将正常工作 - 消除了'项目不存在'的错误信息
This commit is contained in:
parent
7210c15ffd
commit
fbdd1bf1ea
|
|
@ -452,10 +452,44 @@ impl MaterialRepository {
|
|||
}
|
||||
|
||||
/// 根据项目ID获取项目信息
|
||||
pub async fn get_project_by_id(&self, _project_id: &str) -> Result<Option<crate::data::models::project::Project>> {
|
||||
// 这里需要引用项目仓库,暂时返回None
|
||||
// 在实际实现中,应该通过依赖注入获取项目仓库
|
||||
Ok(None)
|
||||
pub async fn get_project_by_id(&self, project_id: &str) -> Result<Option<crate::data::models::project::Project>> {
|
||||
use crate::data::models::project::Project;
|
||||
use chrono::{DateTime, Utc};
|
||||
|
||||
let conn = self.connection.lock().unwrap();
|
||||
|
||||
let mut stmt = conn.prepare(
|
||||
"SELECT id, name, path, description, created_at, updated_at, is_active
|
||||
FROM projects WHERE id = ?1"
|
||||
)?;
|
||||
|
||||
let result = stmt.query_row([project_id], |row| {
|
||||
let created_at_str: String = row.get(4)?;
|
||||
let updated_at_str: String = row.get(5)?;
|
||||
|
||||
let created_at = DateTime::parse_from_rfc3339(&created_at_str)
|
||||
.map_err(|_| rusqlite::Error::InvalidColumnType(4, "created_at".to_string(), rusqlite::types::Type::Text))?
|
||||
.with_timezone(&Utc);
|
||||
let updated_at = DateTime::parse_from_rfc3339(&updated_at_str)
|
||||
.map_err(|_| rusqlite::Error::InvalidColumnType(5, "updated_at".to_string(), rusqlite::types::Type::Text))?
|
||||
.with_timezone(&Utc);
|
||||
|
||||
Ok(Project {
|
||||
id: row.get(0)?,
|
||||
name: row.get(1)?,
|
||||
path: row.get(2)?,
|
||||
description: row.get(3)?,
|
||||
created_at,
|
||||
updated_at,
|
||||
is_active: row.get::<_, i32>(6)? != 0,
|
||||
})
|
||||
});
|
||||
|
||||
match result {
|
||||
Ok(project) => Ok(Some(project)),
|
||||
Err(rusqlite::Error::QueryReturnedNoRows) => Ok(None),
|
||||
Err(e) => Err(e.into()),
|
||||
}
|
||||
}
|
||||
|
||||
/// 根据片段ID获取片段信息
|
||||
|
|
|
|||
Loading…
Reference in New Issue