Implement all image preference functions
This commit is contained in:
parent
ac9d7b9946
commit
053fc6a545
@ -28,6 +28,8 @@ async fn rocket() -> _ {
|
|||||||
get_members,
|
get_members,
|
||||||
update_member_by_id,
|
update_member_by_id,
|
||||||
get_member_balance_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
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|||||||
@ -115,4 +115,10 @@ pub struct MultipleMembersStruct {
|
|||||||
#[derive(Deserialize, Serialize)]
|
#[derive(Deserialize, Serialize)]
|
||||||
pub struct Balance {
|
pub struct Balance {
|
||||||
pub balance: i32
|
pub balance: i32
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Serialize)]
|
||||||
|
pub struct ImagePreference {
|
||||||
|
#[serde(rename = "imagePreference")]
|
||||||
|
pub image_preference: String
|
||||||
}
|
}
|
||||||
@ -182,7 +182,7 @@ pub async fn update_member_by_id(db: &State<DatabaseConnection>, minimal_member_
|
|||||||
|
|
||||||
Ok(Json(member))
|
Ok(Json(member))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/member/<member_id>/balance")]
|
#[get("/member/<member_id>/balance")]
|
||||||
pub async fn get_member_balance_by_id(db: &State<DatabaseConnection>, member_id: i32) -> Result<Json<Balance>, ErrorResponder> {
|
pub async fn get_member_balance_by_id(db: &State<DatabaseConnection>, member_id: i32) -> Result<Json<Balance>, ErrorResponder> {
|
||||||
let db = db as &DatabaseConnection;
|
let db = db as &DatabaseConnection;
|
||||||
@ -234,4 +234,57 @@ pub async fn update_member_balance_by_id(db: &State<DatabaseConnection>, member_
|
|||||||
};
|
};
|
||||||
|
|
||||||
Ok(Json(balance))
|
Ok(Json(balance))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[get("/member/<member_id>/imagePreference")]
|
||||||
|
pub async fn get_member_image_preference_by_id(db: &State<DatabaseConnection>, member_id: i32) -> Result<Json<ImagePreference>, 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/<member_id>/imagePreference", data="<image_preference>")]
|
||||||
|
pub async fn update_member_image_preference_by_id(db: &State<DatabaseConnection>, member_id: i32, image_preference: Json<ImagePreference>) -> Result<Json<ImagePreference>, 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))
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user