mxivideo/src-tauri/src/commands/resource_category.rs

106 lines
2.9 KiB
Rust

use serde::{Deserialize, Serialize};
use tauri::{command, AppHandle};
use crate::python_executor::execute_python_command;
#[derive(Debug, Serialize, Deserialize)]
pub struct CreateCategoryRequest {
pub title: String,
pub ai_prompt: String,
pub color: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct UpdateCategoryRequest {
pub title: Option<String>,
pub ai_prompt: Option<String>,
pub color: Option<String>,
pub is_active: Option<bool>,
}
/// 获取所有资源分类
#[command]
pub async fn get_all_resource_categories(app: AppHandle) -> Result<String, String> {
let args = vec![
"-m".to_string(),
"python_core.services.resource_category_manager".to_string(),
"get_all_categories".to_string(),
];
execute_python_command(app, &args, None).await
}
/// 根据ID获取资源分类
#[command]
pub async fn get_resource_category_by_id(app: AppHandle, category_id: String) -> Result<String, String> {
let args = vec![
"-m".to_string(),
"python_core.services.resource_category_manager".to_string(),
"get_category_by_id".to_string(),
category_id,
];
execute_python_command(app, &args, None).await
}
/// 创建新的资源分类
#[command]
pub async fn create_resource_category(app: AppHandle, request: CreateCategoryRequest) -> Result<String, String> {
let args = vec![
"-m".to_string(),
"python_core.services.resource_category_manager".to_string(),
"create_category".to_string(),
request.title,
request.ai_prompt,
request.color,
];
execute_python_command(app, &args, None).await
}
/// 更新资源分类
#[command]
pub async fn update_resource_category(
app: AppHandle,
category_id: String,
request: UpdateCategoryRequest,
) -> Result<String, String> {
let request_json = serde_json::to_string(&request)
.map_err(|e| format!("Failed to serialize request: {}", e))?;
let args = vec![
"-m".to_string(),
"python_core.services.resource_category_manager".to_string(),
"update_category".to_string(),
category_id,
request_json,
];
execute_python_command(app, &args, None).await
}
/// 删除资源分类
#[command]
pub async fn delete_resource_category(app: AppHandle, category_id: String) -> Result<String, String> {
let args = vec![
"-m".to_string(),
"python_core.services.resource_category_manager".to_string(),
"delete_category".to_string(),
category_id,
];
execute_python_command(app, &args, None).await
}
/// 搜索资源分类
#[command]
pub async fn search_resource_categories(app: AppHandle, keyword: String) -> Result<String, String> {
let args = vec![
"-m".to_string(),
"python_core.services.resource_category_manager".to_string(),
"search_categories".to_string(),
keyword,
];
execute_python_command(app, &args, None).await
}