diff --git a/backend/Cargo.lock b/backend/Cargo.lock index d12ae40..194ebb2 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -19,6 +19,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "actix-cors" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0346d8c1f762b41b458ed3145eea914966bb9ad20b9be0d6d463b20d45586370" +dependencies = [ + "actix-utils", + "actix-web", + "derive_more", + "futures-util", + "log", + "once_cell", + "smallvec", +] + [[package]] name = "actix-files" version = "0.6.6" @@ -464,6 +479,19 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -511,8 +539,11 @@ dependencies = [ name = "formies_be" version = "0.1.0" dependencies = [ + "actix-cors", "actix-files", "actix-web", + "env_logger", + "log", "rusqlite", "serde", "serde_json", @@ -547,6 +578,7 @@ dependencies = [ "futures-task", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -620,6 +652,12 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "http" version = "0.2.12" @@ -649,6 +687,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "icu_collections" version = "1.5.0" @@ -804,6 +848,17 @@ dependencies = [ "hashbrown 0.15.2", ] +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys", +] + [[package]] name = "itoa" version = "1.0.14" @@ -837,6 +892,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" dependencies = [ + "cc", "pkg-config", "vcpkg", ] @@ -1274,6 +1330,15 @@ dependencies = [ "syn", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "time" version = "0.3.37" @@ -1439,6 +1504,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + [[package]] name = "windows-sys" version = "0.52.0" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 46bbf1b..900be72 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -5,8 +5,11 @@ edition = "2021" [dependencies] actix-web = "4.0" -rusqlite = "0.29" +rusqlite = { version = "0.29", features = ["bundled"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" uuid = { version = "1.0", features = ["v4"] } -actix-files = "0.6" \ No newline at end of file +actix-files = "0.6" +actix-cors = "0.6" +env_logger = "0.10" # Check for the latest version +log = "0.4" \ No newline at end of file diff --git a/backend/src/form_data.db b/backend/form_data.db similarity index 90% rename from backend/src/form_data.db rename to backend/form_data.db index 8e70a8c..663f658 100644 Binary files a/backend/src/form_data.db and b/backend/form_data.db differ diff --git a/backend/src/handlers.rs b/backend/src/handlers.rs index 6ade7d2..805c99d 100644 --- a/backend/src/handlers.rs +++ b/backend/src/handlers.rs @@ -10,6 +10,7 @@ pub async fn create_form( db: web::Data>>, form: web::Json
, ) -> impl Responder { + println!("Received form: {:?}", form); let conn = db.lock().unwrap(); // Lock the Mutex to access the database let form_id = Uuid::new_v4().to_string(); let form_json = serde_json::to_string(&form.fields).unwrap(); @@ -34,7 +35,7 @@ pub async fn get_forms(db: web::Data>>) -> impl Responder let forms_iter = stmt .query_map([], |row| { - let id: String = row.get(0)?; + let id: Option = row.get(0)?; let name: String = row.get(1)?; let fields: String = row.get(2)?; let fields = serde_json::from_str(&fields).unwrap(); diff --git a/backend/src/main.rs b/backend/src/main.rs index 720366e..341c4cc 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -1,4 +1,5 @@ -use actix_files as fs; +use actix_cors::Cors; +// use actix_files as fs; use actix_web::{web, App, HttpServer}; use std::sync::{Arc, Mutex}; @@ -9,6 +10,8 @@ mod models; #[actix_web::main] async fn main() -> std::io::Result<()> { // Initialize the database connection + env_logger::init(); + let db = Arc::new(Mutex::new( db::init_db().expect("Failed to initialize the database"), )); @@ -16,8 +19,14 @@ async fn main() -> std::io::Result<()> { // Start the Actix-Web server HttpServer::new(move || { App::new() + .wrap( + Cors::default() + .allow_any_origin() + .allow_any_header() + .allow_any_method(), + ) .app_data(web::Data::new(db.clone())) - .service(fs::Files::new("/", "./frontend/public").index_file("index.html")) + // .service(fs::Files::new("/", "./frontend/public").index_file("index.html")) .route("/forms", web::post().to(handlers::create_form)) .route("/forms", web::get().to(handlers::get_forms)) .route( diff --git a/backend/src/models.rs b/backend/src/models.rs index 9a63d43..6678636 100644 --- a/backend/src/models.rs +++ b/backend/src/models.rs @@ -1,8 +1,8 @@ use serde::{Deserialize, Serialize}; -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct Form { - pub id: String, + pub id: Option, pub name: String, pub fields: serde_json::Value, // JSON array of form fields }