use memista::{AppState, Config, create_app};
use async_sqlite::{PoolBuilder, JournalMode};
use std::sync::Arc;
use actix_web::HttpServer;
#[actix_web::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Starting Memista server...");
let config = Config {
database_path: "memista_example.db".to_string(),
server_host: "127.0.0.1".to_string(),
server_port: 8084, log_level: "info".to_string(),
};
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);
println!("Server will be available at http://{}", bind_address);
println!("Starting server... Press Ctrl+C to stop.");
HttpServer::new(move || {
create_app(app_state.clone())
})
.bind(bind_address)?
.run()
.await?;
println!("Server stopped.");
Ok(())
}