1pub mod connection;
2pub mod migrations;
3pub mod queries;
4pub mod advanced_queries;
5
6use anyhow::Result;
7use std::path::Path;
8
9pub use connection::Database;
10
11pub fn initialize_database(db_path: &Path) -> Result<Database> {
12 println!("Initializing database at: {:?}", db_path);
13 let db = Database::new(db_path)?;
14 println!("Database connection created");
15
16 println!("Running migrations...");
18 migrations::run_migrations(&db.connection)?;
19 println!("Migrations completed");
20
21 Ok(db)
22}
23
24pub fn get_database_path() -> Result<std::path::PathBuf> {
25 let data_dir = dirs::data_dir()
26 .or_else(|| dirs::home_dir())
27 .ok_or_else(|| anyhow::anyhow!("Could not determine data directory"))?;
28
29 let vibe_dir = data_dir.join(".vibe");
30 std::fs::create_dir_all(&vibe_dir)?;
31
32 Ok(vibe_dir.join("data.db"))
33}