use std::process::ExitCode;
use ::{{ crate_name }}::app;
use ::{{ crate_name }}::base::config::Config;
use ::{{ crate_name }}::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 db = ::{{ crate_name }}::database(&config.database).await?;
tracing::info!("Database: {}", config.database.describe());
let (host, port) = (config.host.clone(), config.port);
let router = app::router(AppState::new(config, db)?);
slave_framework::server::serve(router, &host, port).await
}