From 308c4fb9c5c95a6e516555fa88755bf7898bd939 Mon Sep 17 00:00:00 2001
From: Chris Cochrun <chris@cochrun.xyz>
Date: Tue, 25 Jun 2024 06:51:22 -0500
Subject: [PATCH] setup for api posting to db

---
 src/api/camp_form.rs   |  6 ++++++
 src/api/errors.rs      | 25 +++++++++++++++++++++++++
 src/api/health_form.rs |  2 +-
 src/api/mod.rs         |  1 +
 4 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 src/api/errors.rs

diff --git a/src/api/camp_form.rs b/src/api/camp_form.rs
index 8cb2a7e..405aec9 100644
--- a/src/api/camp_form.rs
+++ b/src/api/camp_form.rs
@@ -6,6 +6,8 @@ use lettre::{
     Message, SmtpTransport, Transport,
 };
 
+use super::errors::ApiError;
+
 #[derive(Debug, MultipartForm, Default)]
 struct CampForm {
     #[multipart(rename = "first-name")]
@@ -310,3 +312,7 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
         }
     }
 }
+
+async fn store_camp_form(form: CampForm) -> Result<(), ApiError> {
+    Ok(())
+}
diff --git a/src/api/errors.rs b/src/api/errors.rs
new file mode 100644
index 0000000..106d97a
--- /dev/null
+++ b/src/api/errors.rs
@@ -0,0 +1,25 @@
+use serde::Serialize;
+
+#[derive(Debug)]
+pub enum ApiErrorType {
+    DbError,
+    NotFoundError,
+}
+
+impl Default for ApiErrorType {
+    fn default() -> ApiErrorType {
+        ApiErrorType::NotFoundError
+    }
+}
+
+#[derive(Debug, Default)]
+pub struct ApiError {
+    pub message: Option<String>,
+    pub cause: Option<String>,
+    pub error_type: ApiErrorType,
+}
+
+#[derive(Serialize)]
+pub struct ApiErrorResponse {
+    pub error: String,
+}
diff --git a/src/api/health_form.rs b/src/api/health_form.rs
index 19ea367..1c95e02 100644
--- a/src/api/health_form.rs
+++ b/src/api/health_form.rs
@@ -505,6 +505,6 @@ pub async fn health_form(MultipartForm(form): MultipartForm<HealthForm>) -> Http
     // HttpResponse::Ok().body("hi")
 }
 
-async fn post_health_form(_form: HealthForm) -> bool {
+async fn store_health_form(_form: HealthForm) -> bool {
     todo!()
 }
diff --git a/src/api/mod.rs b/src/api/mod.rs
index e291cc9..f9c19bf 100644
--- a/src/api/mod.rs
+++ b/src/api/mod.rs
@@ -1,5 +1,6 @@
 pub mod camp_form;
 pub mod church_form;
+pub mod errors;
 pub mod health_form;
 pub mod local_trip_form;
 pub mod mt_form;