refactor(commands): update command layer to use database API

- Update config commands to query database for providers and settings
- Modify provider commands to pass database handle to services
- Update MCP commands to use database-backed operations
- Refactor prompt and skill commands to leverage database storage
- Simplify import/export commands with database integration
This commit is contained in:
YoVinchen
2025-11-22 23:27:27 +08:00
parent 2b34dc4ec9
commit 23a407544a
6 changed files with 82 additions and 111 deletions

View File

@@ -13,10 +13,7 @@ pub async fn get_skills(
service: State<'_, SkillServiceState>,
app_state: State<'_, AppState>,
) -> Result<Vec<Skill>, String> {
let repos = {
let config = app_state.config.read().map_err(|e| e.to_string())?;
config.skills.repos.clone()
};
let repos = app_state.db.get_skill_repos().map_err(|e| e.to_string())?;
service
.0
@@ -32,10 +29,7 @@ pub async fn install_skill(
app_state: State<'_, AppState>,
) -> Result<bool, String> {
// 先在不持有写锁的情况下收集仓库与技能信息
let repos = {
let config = app_state.config.read().map_err(|e| e.to_string())?;
config.skills.repos.clone()
};
let repos = app_state.db.get_skill_repos().map_err(|e| e.to_string())?;
let skills = service
.0
@@ -85,19 +79,16 @@ pub async fn install_skill(
.map_err(|e| e.to_string())?;
}
{
let mut config = app_state.config.write().map_err(|e| e.to_string())?;
config.skills.skills.insert(
directory.clone(),
SkillState {
app_state
.db
.update_skill_state(
&directory,
&SkillState {
installed: true,
installed_at: Utc::now(),
},
);
}
app_state.save().map_err(|e| e.to_string())?;
)
.map_err(|e| e.to_string())?;
Ok(true)
}
@@ -113,13 +104,17 @@ pub fn uninstall_skill(
.uninstall_skill(directory.clone())
.map_err(|e| e.to_string())?;
{
let mut config = app_state.config.write().map_err(|e| e.to_string())?;
config.skills.skills.remove(&directory);
}
app_state.save().map_err(|e| e.to_string())?;
// Remove from database by setting installed = false
app_state
.db
.update_skill_state(
&directory,
&SkillState {
installed: false,
installed_at: Utc::now(),
},
)
.map_err(|e| e.to_string())?;
Ok(true)
}
@@ -129,28 +124,19 @@ pub fn get_skill_repos(
_service: State<'_, SkillServiceState>,
app_state: State<'_, AppState>,
) -> Result<Vec<SkillRepo>, String> {
let config = app_state.config.read().map_err(|e| e.to_string())?;
Ok(config.skills.repos.clone())
app_state.db.get_skill_repos().map_err(|e| e.to_string())
}
#[tauri::command]
pub fn add_skill_repo(
repo: SkillRepo,
service: State<'_, SkillServiceState>,
_service: State<'_, SkillServiceState>,
app_state: State<'_, AppState>,
) -> Result<bool, String> {
{
let mut config = app_state.config.write().map_err(|e| e.to_string())?;
service
.0
.add_repo(&mut config.skills, repo)
.map_err(|e| e.to_string())?;
}
app_state.save().map_err(|e| e.to_string())?;
app_state
.db
.save_skill_repo(&repo)
.map_err(|e| e.to_string())?;
Ok(true)
}
@@ -158,19 +144,12 @@ pub fn add_skill_repo(
pub fn remove_skill_repo(
owner: String,
name: String,
service: State<'_, SkillServiceState>,
_service: State<'_, SkillServiceState>,
app_state: State<'_, AppState>,
) -> Result<bool, String> {
{
let mut config = app_state.config.write().map_err(|e| e.to_string())?;
service
.0
.remove_repo(&mut config.skills, owner, name)
.map_err(|e| e.to_string())?;
}
app_state.save().map_err(|e| e.to_string())?;
app_state
.db
.delete_skill_repo(&owner, &name)
.map_err(|e| e.to_string())?;
Ok(true)
}