use silmataivas::app_with_state; use sqlx::SqlitePool; use std::env; use std::net::SocketAddr; use std::sync::Arc; use tokio::fs; #[tokio::main] async fn main() { // Set up database path let db_path = env::var("DATABASE_URL").unwrap_or_else(|_| "sqlite://./data/silmataivas.db".to_string()); // Ensure data directory exists let _ = fs::create_dir_all("./data").await; // Connect to SQLite let pool = SqlitePool::connect(&db_path) .await .expect("Failed to connect to DB"); let app = app_with_state(Arc::new(pool)); let addr = SocketAddr::from(([0, 0, 0, 0], 4000)); let listener = tokio::net::TcpListener::bind(addr) .await .expect("Failed to bind address"); println!("Listening on {}", listener.local_addr().unwrap()); axum::serve(listener, app).await.unwrap(); }