42 lines
1.2 KiB
Rust
42 lines
1.2 KiB
Rust
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
|
|
}
|