use actix_cors::Cors; use actix_web::{web, App, HttpServer}; use std::sync::{Arc, Mutex}; mod auth; mod db; mod handlers; mod models; #[actix_web::main] async fn main() -> std::io::Result<()> { env_logger::init(); let db = Arc::new(Mutex::new( db::init_db().expect("Failed to initialize the database"), )); HttpServer::new(move || { App::new() .wrap( Cors::default() .allow_any_origin() .allow_any_header() .allow_any_method(), ) .app_data(web::Data::new(db.clone())) .route("/login", web::post().to(handlers::login)) // Public: Login .route( "/forms/{id}/submissions", web::post().to(handlers::submit_form), // Public: Submit form ) .route("/forms", web::post().to(handlers::create_form)) // Protected .route("/forms", web::get().to(handlers::get_forms)) // Protected .route( "/forms/{id}/submissions", web::get().to(handlers::get_submissions), // Protected ) }) .bind("127.0.0.1:8080")? .run() .await }