1use anyhow::Result;
2use std::path::PathBuf;
3
4const DATA_DIR_NAME: &str = "restflow";
5const DB_FILE_NAME: &str = "restflow.db";
6
7pub fn ensure_data_dir() -> Result<PathBuf> {
9 let base = dirs::data_dir()
10 .or_else(dirs::home_dir)
11 .ok_or_else(|| anyhow::anyhow!("Failed to determine system data directory"))?;
12 let data_dir = base.join(DATA_DIR_NAME);
13 std::fs::create_dir_all(&data_dir)?;
14 Ok(data_dir)
15}
16
17pub fn ensure_database_path() -> Result<PathBuf> {
19 Ok(ensure_data_dir()?.join(DB_FILE_NAME))
20}
21
22pub fn ensure_database_path_string() -> Result<String> {
24 Ok(ensure_database_path()?.to_string_lossy().into_owned())
25}