Private
Public Access
1
0
Files
Kordophone/kordophoned/src/daemon/mod.rs

46 lines
1.3 KiB
Rust
Raw Normal View History

use directories::ProjectDirs;
use std::path::PathBuf;
use anyhow::Result;
use kordophone_db::{
database::Database,
settings::Settings,
models::Conversation,
};
2025-02-11 23:15:24 -08:00
pub struct Daemon {
pub version: String,
database: Database,
2025-02-11 23:15:24 -08:00
}
impl Daemon {
pub fn new() -> Result<Self> {
let database_path = Self::get_database_path();
log::info!("Database path: {}", database_path.display());
// Create the database directory if it doesn't exist
let database_dir = database_path.parent().unwrap();
std::fs::create_dir_all(database_dir)?;
let database = Database::new(&database_path.to_string_lossy())?;
Ok(Self { version: "0.1.0".to_string(), database })
}
pub fn get_version(&self) -> String {
self.version.clone()
}
pub fn get_conversations(&mut self) -> Vec<Conversation> {
self.database.with_repository(|r| r.all_conversations().unwrap())
}
fn get_database_path() -> PathBuf {
if let Some(proj_dirs) = ProjectDirs::from("com", "kordophone", "kordophone") {
let data_dir = proj_dirs.data_dir();
data_dir.join("database.db")
} else {
// Fallback to a local path if we can't get the system directories
PathBuf::from("database.db")
}
2025-02-11 23:15:24 -08:00
}
}