use elif_core::{Container, container::test_implementations::*};
use elif_http::{Server, HttpConfig, ElifRouter};
use std::sync::Arc;
use axum::response::Json;
use serde_json::{json, Value};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = Arc::new(create_test_config());
let database = Arc::new(TestDatabase::new()) as Arc<dyn elif_core::DatabaseConnection>;
let container = Container::builder()
.config(config)
.database(database)
.build()?
.into();
let http_config = HttpConfig::default();
println!("🚀 Starting HTTP server with clean NestJS-like API...");
println!("📊 Health check available at: http://127.0.0.1:3000{}", http_config.health_check_path);
println!("🔧 Container services: database, config");
let router = ElifRouter::new()
.get("/hello", hello_handler)
.get("/status", status_handler);
let mut server = Server::with_container(container, http_config)?;
server.use_router(router);
server.listen("0.0.0.0:3000").await?;
Ok(())
}
async fn hello_handler() -> Json<Value> {
Json(json!({
"message": "Hello from Elif.rs!",
"framework": "NestJS-like API",
"powered_by": "Axum (hidden)"
}))
}
async fn status_handler() -> Json<Value> {
Json(json!({
"server": "running",
"api": "clean",
"complexity": "abstracted"
}))
}