#[allow(unused_imports)] pub mod models; pub mod request; use actix_cors::Cors; use actix_web::middleware::Logger; use actix_web::HttpServer; use actix_web::App; use actix_web::http; use actix_web::web; use request::{*, login, register, gamenights}; use tracing_actix_web::TracingLogger; use gamenight_database::*; #[actix_web::main] async fn main() -> std::io::Result<()> { let url = "postgres://root:root@127.0.0.1/gamenight"; let pool = get_connection_pool(url); let mut conn = pool.get_conn(); run_migration(&mut conn); env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); HttpServer::new(move || { let cors = Cors::default() .allowed_origin("0.0.0.0") .allowed_origin_fn(|_origin, _req_head| { true }) .allowed_methods(vec!["GET", "POST"]) .allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT]) .allowed_header(http::header::CONTENT_TYPE) .max_age(3600); App::new() .wrap(cors) .wrap(Logger::default()) .wrap(TracingLogger::default()) .app_data(web::Data::new(pool.clone())) .service(login) .service(refresh) .service(register) .service(gamenights) .service(gamenight_post) .service(gamenight_get) .service(get_user) .service(get_user_unauthenticated) .service(post_join_gamenight) .service(post_leave_gamenight) .service(get_get_participants) .service(get_games) .service(post_game) }) .bind(("::1", 8080))? .run() .await }