restflow_core/
paths.rs

1use anyhow::Result;
2use std::path::PathBuf;
3
4const DATA_DIR_NAME: &str = "restflow";
5const DB_FILE_NAME: &str = "restflow.db";
6
7/// Ensure the RestFlow data directory exists and return its path.
8pub 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
17/// Ensure the RestFlow database path can be used and return it.
18pub fn ensure_database_path() -> Result<PathBuf> {
19    Ok(ensure_data_dir()?.join(DB_FILE_NAME))
20}
21
22/// Convenience helper returning the database path as a UTF-8 string.
23pub fn ensure_database_path_string() -> Result<String> {
24    Ok(ensure_database_path()?.to_string_lossy().into_owned())
25}