bookforge/src/state/mod.rs

33 lines
888 B
Rust
Raw Normal View History

2026-01-26 01:05:10 +01:00
use sea_orm::{Database, DatabaseConnection};
use snafu::prelude::*;
2026-01-27 01:33:21 +01:00
use crate::{migrations::Migrator, state::config::AppConfig};
2026-01-26 01:05:10 +01:00
use error::*;
2026-01-27 01:33:21 +01:00
use sea_orm_migration::MigratorTrait;
2026-01-26 01:05:10 +01:00
pub mod config;
pub mod error;
#[derive(Clone, Debug)]
pub struct AppState {
pub config: AppConfig,
pub db: DatabaseConnection,
}
impl AppState {
pub async fn new() -> Result<Self, AppStateError> {
2026-01-27 01:33:21 +01:00
log::info!("Load configurations...");
2026-01-26 01:05:10 +01:00
let config: AppConfig = AppConfig::new().await.context(ConfigSnafu)?;
let db: DatabaseConnection =
Database::connect(format!("sqlite:{}?mode=rwc", &config.database_path))
.await
.context(SqliteSnafu)?;
2026-01-27 01:33:21 +01:00
log::info!("Database Loaded at : {}", config.database_path.clone());
Migrator::up(&db, None).await.context(MigrationSnafu)?;
2026-01-26 01:05:10 +01:00
Ok(Self { config, db })
}
}