use taskpile_backend::{db, routes}; use axum::{ routing::{delete, get, patch, post}, Router, }; use tower_http::cors::{Any, CorsLayer}; #[tokio::main] async fn main() -> anyhow::Result<()> { let database_url = "sqlite:taskpile.db?mode=rwc"; let pool = db::create_pool(database_url).await?; db::run_migrations(&pool).await?; let cors = CorsLayer::new() .allow_origin(Any) .allow_methods(Any) .allow_headers(Any); let app = Router::new() .route("/api/tasks", get(routes::tasks::list_tasks)) .route("/api/tasks", post(routes::tasks::create_task)) .route("/api/tasks/:id", patch(routes::tasks::update_task)) .route("/api/tasks/:id", delete(routes::tasks::delete_task)) .route("/api/graph", get(routes::graph::get_graph)) .layer(cors) .with_state(pool); let listener = tokio::net::TcpListener::bind("0.0.0.0:3001").await?; println!("Listening on http://0.0.0.0:3001"); axum::serve(listener, app).await?; Ok(()) }