5.0 KiB
5.0 KiB
Template.rs 更新总结
🎯 更新目标
参考 python_cli.rs 的实现模式,统一使用 execute_python_cli_command 来处理模板相关的命令。
🔄 主要变更
1. 统一响应结构
新增 TemplateResponse 结构体,与 python_cli.rs 中的 PythonCliResponse 保持一致:
#[derive(Debug, Serialize, Deserialize)]
pub struct TemplateResponse {
pub success: bool,
pub message: String,
pub data: Option<serde_json::Value>,
pub output: Option<String>,
pub error: Option<String>,
}
2. 统一命令执行函数
添加 execute_python_cli_command 函数,参考 python_cli.rs 的实现:
async fn execute_python_cli_command(
app: AppHandle,
command_args: Vec<String>,
) -> Result<TemplateResponse, String>
3. 新增请求结构体
为支持更丰富的参数,新增多个请求结构体:
TemplateListRequest- 模板列表查询参数TemplateGetRequest- 单个模板获取参数TemplateDeleteRequest- 模板删除参数TemplateSearchRequest- 模板搜索参数- 更新
BatchImportRequest- 添加用户ID等参数
4. 新版本命令函数
为每个原有命令添加新版本,使用CLI模式:
| 原函数 | 新函数 | 说明 |
|---|---|---|
batch_import_templates |
batch_import_templates_cli |
批量导入模板 |
get_templates |
get_templates_cli |
获取模板列表 |
get_template |
get_template_cli |
获取单个模板 |
delete_template |
delete_template_cli |
删除模板 |
5. 新增功能命令
添加新的CLI命令函数:
search_templates_cli- 搜索模板get_template_stats_cli- 获取模板统计get_popular_tags_cli- 获取热门标签get_templates_by_tag_cli- 按标签获取模板
📋 命令对比
批量导入模板
原版本
#[tauri::command]
pub async fn batch_import_templates(
app: tauri::AppHandle,
request: BatchImportRequest
) -> Result<String, String>
新版本
#[tauri::command]
pub async fn batch_import_templates_cli(
app: AppHandle,
request: BatchImportRequest,
) -> Result<TemplateResponse, String>
模板列表
原版本
#[tauri::command]
pub async fn get_templates(app: tauri::AppHandle) -> Result<String, String>
新版本
#[tauri::command]
pub async fn get_templates_cli(
app: AppHandle,
request: TemplateListRequest,
) -> Result<TemplateResponse, String>
🚀 使用示例
前端调用新版本API
// 批量导入模板
const importResult = await invoke('batch_import_templates_cli', {
request: {
source_folder: '/path/to/templates',
user_id: 'user123',
verbose: true,
json_output: true
}
});
// 获取模板列表
const templatesResult = await invoke('get_templates_cli', {
request: {
user_id: 'user123',
include_cloud: true,
limit: 50,
verbose: false,
json_output: true
}
});
// 搜索模板
const searchResult = await invoke('search_templates_cli', {
request: {
query: '商业宣传',
user_id: 'user123',
include_cloud: true,
limit: 20,
json_output: true
}
});
响应格式
interface TemplateResponse {
success: boolean;
message: string;
data?: any;
output?: string;
error?: string;
}
🔧 CLI命令映射
新版本函数直接调用 Python CLI 命令:
| Rust函数 | Python CLI命令 |
|---|---|
batch_import_templates_cli |
python -m python_core.cli template batch-import |
get_templates_cli |
python -m python_core.cli template list |
search_templates_cli |
python -m python_core.cli template search |
get_template_cli |
python -m python_core.cli template get |
delete_template_cli |
python -m python_core.cli template delete |
📈 优势
1. 统一性
- 与
python_cli.rs保持一致的架构 - 统一的响应格式和错误处理
- 一致的参数传递方式
2. 功能丰富
- 支持用户ID参数
- 支持详细的查询选项
- 新增搜索和统计功能
3. 向后兼容
- 保留原有函数,确保现有代码不受影响
- 渐进式迁移到新版本
4. 可维护性
- 统一的命令执行逻辑
- 清晰的参数结构
- 完善的类型定义
🔮 后续计划
- 逐步迁移 - 前端代码逐步迁移到新版本API
- 移除旧版本 - 确认迁移完成后移除旧版本函数
- 功能扩展 - 基于CLI模式添加更多模板管理功能
- 性能优化 - 优化命令执行和响应处理
📝 注意事项
- 函数命名 - 新版本函数添加
_cli后缀以区分 - 参数结构 - 使用结构体传递参数,支持可选字段
- 响应格式 - 统一使用
TemplateResponse结构 - 错误处理 - 保持与
python_cli.rs一致的错误处理方式
Template.rs 已成功更新为统一的CLI模式,提供了更丰富的功能和更好的一致性!🎉