use std::process::Command;
#[tauri::command]
pub fn db_tables(path: String) -> Result<Vec<String>, String> {
let out = Command::new("sqlite3")
.arg(&path)
.arg(".tables")
.output()
.map_err(|e| format!("sqlite3: {e}"))?;
if !out.status.success() {
return Err(String::from_utf8_lossy(&out.stderr).to_string());
}
Ok(String::from_utf8_lossy(&out.stdout)
.split_whitespace()
.map(|s| s.to_string())
.collect())
}
#[tauri::command]
pub fn db_query(path: String, sql: String) -> Result<String, String> {
let out = Command::new("sqlite3")
.arg("-json")
.arg(&path)
.arg(&sql)
.output()
.map_err(|e| format!("sqlite3: {e}"))?;
if !out.status.success() {
return Err(String::from_utf8_lossy(&out.stderr).to_string());
}
let s = String::from_utf8_lossy(&out.stdout).to_string();
Ok(if s.trim().is_empty() { "[]".into() } else { s })
}