use std::sync::Arc;
use actix_web::HttpServer;
use memista::{AppState, Config, create_app};
use async_sqlite::{PoolBuilder, JournalMode};
use dotenv::dotenv;
use log::info;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
dotenv().ok();
let config = Config::from_env().expect("Failed to load configuration");
std::env::set_var("RUST_LOG", &config.log_level);
env_logger::init();
let db_pool = PoolBuilder::new()
.path(&config.database_path)
.journal_mode(JournalMode::Wal) .open()
.await
.expect("Failed to create database pool");
let app_state = Arc::new(AppState {
db_pool,
});
let bind_address = format!("{}:{}", config.server_host, config.server_port);
info!("Starting server on {}", bind_address);
HttpServer::new(move || {
create_app(app_state.clone())
})
.bind(bind_address)? .run() .await
}