use std::env;
use agent_ask::{create_app, AppState, Store};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let db_path = env::var("AGENT_ASK_DB").unwrap_or_else(|_| "./agent-ask.db".into());
let port: u16 = env::var("AGENT_ASK_PORT").ok()
.and_then(|s| s.parse().ok())
.unwrap_or(8787);
let store = Store::open(&db_path)?;
let app = create_app(AppState::new(store));
let addr = format!("0.0.0.0:{port}");
let listener = tokio::net::TcpListener::bind(&addr).await?;
println!("{{\"event\":\"listen\",\"port\":{port},\"db_path\":\"{db_path}\"}}");
axum::serve(listener, app).await?;
Ok(())
}