diff --git a/src/main.rs b/src/main.rs index 957e712..f7e2749 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,6 +28,8 @@ async fn rocket() -> _ { get_members, update_member_by_id, get_member_balance_by_id, - update_member_balance_by_id + update_member_balance_by_id, + get_member_image_preference_by_id, + update_member_image_preference_by_id ]) } diff --git a/src/models/member.rs b/src/models/member.rs index 6981fbe..71bfeb6 100644 --- a/src/models/member.rs +++ b/src/models/member.rs @@ -115,4 +115,10 @@ pub struct MultipleMembersStruct { #[derive(Deserialize, Serialize)] pub struct Balance { pub balance: i32 +} + +#[derive(Deserialize, Serialize)] +pub struct ImagePreference { + #[serde(rename = "imagePreference")] + pub image_preference: String } \ No newline at end of file diff --git a/src/webserver_member.rs b/src/webserver_member.rs index 554c241..38dcce1 100644 --- a/src/webserver_member.rs +++ b/src/webserver_member.rs @@ -182,7 +182,7 @@ pub async fn update_member_by_id(db: &State, minimal_member_ Ok(Json(member)) } - + #[get("/member//balance")] pub async fn get_member_balance_by_id(db: &State, member_id: i32) -> Result, ErrorResponder> { let db = db as &DatabaseConnection; @@ -234,4 +234,57 @@ pub async fn update_member_balance_by_id(db: &State, member_ }; Ok(Json(balance)) +} + +#[get("/member//imagePreference")] +pub async fn get_member_image_preference_by_id(db: &State, member_id: i32) -> Result, ErrorResponder> { + let db = db as &DatabaseConnection; + + // Fetch the member's info from the BD + let member: members::Model; + match Members::find_by_id(member_id).one(db).await? { + Some(m) => member = m, + None => return Err (ErrorResponder { message: format!("Could not find member with the spcified ID. ID: {}", member_id) }), + } + + // Extract the balance + let image_preference: ImagePreference = ImagePreference { + image_preference: member.image_preference.to_owned() + }; + + // Return the balance + Ok(Json(image_preference)) +} + +#[put("/member//imagePreference", data="")] +pub async fn update_member_image_preference_by_id(db: &State, member_id: i32, image_preference: Json) -> Result, ErrorResponder> { + let db = db as &DatabaseConnection; + + // Fetch the current member info from the DB + let current_member_info: members::Model; + match Members::find_by_id(member_id).one(db).await? { + Some(m) => current_member_info = m, + None => return Err (ErrorResponder { message: format!("Could not find member with the spcified ID. ID: {}", member_id) }), + } + + // Create a new DB thingie from the fetched info + let mut resulting_member: members::ActiveModel = current_member_info.clone().into(); + resulting_member.image_preference = ActiveValue::Set(image_preference.image_preference.clone()); + + // Update the DB entry for the user + resulting_member.update(db).await?; + + // Fetch the member's info back from the DB + let current_member_info: members::Model; + match Members::find_by_id(member_id).one(db).await? { + Some(m) => current_member_info = m, + None => return Err (ErrorResponder { message: format!("Could not find member with the spcified ID. ID: {}", member_id) }), + } + + // Turn it into the native model + let image_preference: ImagePreference = ImagePreference { + image_preference: current_member_info.image_preference + }; + + Ok(Json(image_preference)) } \ No newline at end of file diff --git a/test.db b/test.db index 6ff48be..1e97c86 100644 Binary files a/test.db and b/test.db differ