24 lines
894 B
Rust
24 lines
894 B
Rust
use std::{fs::DirBuilder, path::PathBuf};
|
|
|
|
use tauri::{path::PathResolver, AppHandle, Manager, Runtime};
|
|
|
|
fn ensure_dir<R: Runtime>(resolver: &PathResolver<R>) -> anyhow::Result<PathBuf> {
|
|
let config_dir = resolver
|
|
.local_data_dir()
|
|
.map_err(|e| anyhow::anyhow!("Unable to get local data directory: {}", e))?;
|
|
if !config_dir.exists() {
|
|
let mut dir_creator = DirBuilder::new();
|
|
dir_creator
|
|
.recursive(true)
|
|
.create(&config_dir)
|
|
.map_err(|e| anyhow::anyhow!("Unable to create config directory: {}", e))?;
|
|
}
|
|
Ok(config_dir)
|
|
}
|
|
|
|
pub fn open_config_db<R: Runtime>(app_handle: &AppHandle<R>) -> anyhow::Result<sled::Db> {
|
|
let config_dir = ensure_dir(app_handle.path())?;
|
|
let db_path = config_dir.join("conf.db");
|
|
sled::open(&db_path).map_err(|e| anyhow::anyhow!("Unable to open config database: {}", e))
|
|
}
|