extern crate diesel; use create_rust_app::AppConfig; use poem::endpoint::{StaticFilesEndpoint}; use poem::{ listener::TcpListener, middleware::{AddData, CookieJarManager, Tracing}, EndpointExt, Route, Server, }; mod mail; mod models; mod schema; mod services; #[tokio::main] async fn main() -> Result<(), std::io::Error> { #[cfg(debug_assertions)] create_rust_app::setup_development().await; tracing_subscriber::fmt::init(); let data = create_rust_app::setup(); simple_logger::init_with_env().unwrap(); let mut api_routes = Route::new(); api_routes = api_routes.nest("/todos", services::todo::api()); let mut app = Route::new(); #[cfg(debug_assertions)] { /* Development-only routes */ } app = app.nest("/api", api_routes); app = app.at("*", poem::get(create_rust_app::render_views)); Server::new(TcpListener::bind("0.0.0.0:3000")) .run( app.with(AddData::new(data.mailer)) .with(AddData::new(data.database)) .with(AddData::new(AppConfig { app_url: std::env::var("APP_URL").unwrap(), }) .with(CookieJarManager::new()) .with(Tracing) .catch_error(create_rust_app::not_found), ) .await }