mod app;
mod base;
mod modules;
use std::process::ExitCode;
use slave_framework::database::Database;
use base::config::Config;
use base::state::AppState;
#[tokio::main]
async fn main() -> ExitCode {
match run().await {
Ok(()) => ExitCode::SUCCESS,
Err(err) => {
eprintln!("error: {err}");
ExitCode::FAILURE
}
}
}
async fn run() -> slave_framework::Result<()> {
slave_framework::env::load_dotenv()?;
slave_framework::logging::init()?;
let config = Config::from_env()?;
let database = Database::open(&config.database_path).await?;
let (host, port) = (config.host.clone(), config.port);
let router = app::router(AppState::new(config, database));
slave_framework::server::serve(router, &host, port).await
}