fix: 修复素材导入时model_id为null的数据库问题
- 在materials表初始创建时添加model_id列,避免依赖迁移 - 在初始索引创建中添加model_id索引 - 添加调试日志跟踪model_id在导入过程中的传递 - 确保素材导入时选择的模特ID能正确保存到数据库 - 解决素材导入+选择模特后数据库结果model_id=null的问题
This commit is contained in:
parent
5686af3199
commit
259ff992ae
|
|
@ -133,6 +133,9 @@ impl MaterialService {
|
||||||
// 确定素材类型
|
// 确定素材类型
|
||||||
let material_type = MaterialType::from_extension(extension);
|
let material_type = MaterialType::from_extension(extension);
|
||||||
|
|
||||||
|
// 添加调试日志
|
||||||
|
println!("Creating material with model_id: {:?}", model_id);
|
||||||
|
|
||||||
// 创建素材对象(带模特绑定)
|
// 创建素材对象(带模特绑定)
|
||||||
let material = Material::new_with_model(
|
let material = Material::new_with_model(
|
||||||
project_id.to_string(),
|
project_id.to_string(),
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,10 @@ impl MaterialRepository {
|
||||||
/// 创建素材
|
/// 创建素材
|
||||||
pub fn create(&self, material: &Material) -> Result<()> {
|
pub fn create(&self, material: &Material) -> Result<()> {
|
||||||
let conn = self.connection.lock().unwrap();
|
let conn = self.connection.lock().unwrap();
|
||||||
|
|
||||||
|
// 添加调试日志
|
||||||
|
println!("Creating material with model_id: {:?}", material.model_id);
|
||||||
|
|
||||||
let metadata_json = serde_json::to_string(&material.metadata)?;
|
let metadata_json = serde_json::to_string(&material.metadata)?;
|
||||||
let scene_detection_json = material.scene_detection.as_ref()
|
let scene_detection_json = material.scene_detection.as_ref()
|
||||||
.map(|sd| serde_json::to_string(sd))
|
.map(|sd| serde_json::to_string(sd))
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,7 @@ impl Database {
|
||||||
"CREATE TABLE IF NOT EXISTS materials (
|
"CREATE TABLE IF NOT EXISTS materials (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
project_id TEXT NOT NULL,
|
project_id TEXT NOT NULL,
|
||||||
|
model_id TEXT,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
original_path TEXT NOT NULL,
|
original_path TEXT NOT NULL,
|
||||||
file_size INTEGER NOT NULL,
|
file_size INTEGER NOT NULL,
|
||||||
|
|
@ -402,6 +403,11 @@ impl Database {
|
||||||
[],
|
[],
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
conn.execute(
|
||||||
|
"CREATE INDEX IF NOT EXISTS idx_materials_model_id ON materials (model_id)",
|
||||||
|
[],
|
||||||
|
)?;
|
||||||
|
|
||||||
// 创建模板表索引
|
// 创建模板表索引
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"CREATE INDEX IF NOT EXISTS idx_templates_import_status ON templates (import_status)",
|
"CREATE INDEX IF NOT EXISTS idx_templates_import_status ON templates (import_status)",
|
||||||
|
|
@ -875,18 +881,29 @@ impl Database {
|
||||||
let has_model_id_column = conn.prepare("SELECT model_id FROM materials LIMIT 1").is_ok();
|
let has_model_id_column = conn.prepare("SELECT model_id FROM materials LIMIT 1").is_ok();
|
||||||
if !has_model_id_column {
|
if !has_model_id_column {
|
||||||
println!("Adding model_id column to materials table");
|
println!("Adding model_id column to materials table");
|
||||||
conn.execute(
|
match conn.execute(
|
||||||
"ALTER TABLE materials ADD COLUMN model_id TEXT",
|
"ALTER TABLE materials ADD COLUMN model_id TEXT",
|
||||||
[],
|
[],
|
||||||
)?;
|
) {
|
||||||
|
Ok(_) => {
|
||||||
|
println!("Successfully added model_id column to materials table");
|
||||||
|
|
||||||
// 创建模特关联索引
|
// 创建模特关联索引
|
||||||
conn.execute(
|
match conn.execute(
|
||||||
"CREATE INDEX IF NOT EXISTS idx_materials_model_id ON materials (model_id)",
|
"CREATE INDEX IF NOT EXISTS idx_materials_model_id ON materials (model_id)",
|
||||||
[],
|
[],
|
||||||
)?;
|
) {
|
||||||
|
Ok(_) => println!("Successfully created index on model_id column"),
|
||||||
println!("Added model_id column and index to materials table");
|
Err(e) => println!("Warning: Failed to create index on model_id column: {}", e),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
println!("Error adding model_id column to materials table: {}", e);
|
||||||
|
return Err(e.into());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!("model_id column already exists in materials table");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加片段匹配规则字段到轨道片段表
|
// 添加片段匹配规则字段到轨道片段表
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ pub async fn import_materials_async(
|
||||||
request: CreateMaterialRequest,
|
request: CreateMaterialRequest,
|
||||||
app_handle: tauri::AppHandle,
|
app_handle: tauri::AppHandle,
|
||||||
) -> Result<MaterialImportResult, String> {
|
) -> Result<MaterialImportResult, String> {
|
||||||
|
// 添加调试日志
|
||||||
|
println!("Import request received with model_id: {:?}", request.model_id);
|
||||||
// 获取数据库连接,避免持有MutexGuard
|
// 获取数据库连接,避免持有MutexGuard
|
||||||
let connection = {
|
let connection = {
|
||||||
let repository_guard = state.get_material_repository()
|
let repository_guard = state.get_material_repository()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue