Skip to content

Commit

Permalink
feat: add put question
Browse files Browse the repository at this point in the history
  • Loading branch information
zrll12 committed Aug 17, 2024
1 parent 7a0e917 commit 1803a50
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/controller/question/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ mod modify;

pub fn get_question_routers() -> Router {
Router::new()
.route("/", get(page::get_page).post(modify::new_question))
.route("/", get(page::get_page).post(modify::new_question).put(modify::modify_question))
.route("/:question", get(question::get_question))
}
20 changes: 20 additions & 0 deletions src/controller/question/modify.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,31 @@ pub async fn new_question(Json(question): Json<NewQuestionRequest>) -> String {
id.to_string()
}

pub async fn modify_question(Json(question): Json<ModifyQuestionRequest>) -> String {
let content = serde_json::to_value(question.content).unwrap();
let values = question.values.map(|values|
values.iter().map(|v| serde_json::to_value(v).unwrap()).collect());
let condition = question.condition.map(|c| serde_json::to_string(&c).unwrap());

let id = save_question(content, question.r#type, values, condition, question.required, Some(question.id.clone())).await;
id.to_string()
}

#[derive(serde::Deserialize, Serialize)]
pub struct NewQuestionRequest {
pub content: ValueWithTitle,
pub r#type: QuestionType,
pub values: Option<Vec<ValueWithTitle>>,
pub condition: Option<Vec<Condition>>,
pub required: bool,
}

#[derive(serde::Deserialize, Serialize)]
pub struct ModifyQuestionRequest {
pub id: String,
pub content: ValueWithTitle,
pub r#type: QuestionType,
pub values: Option<Vec<ValueWithTitle>>,
pub condition: Option<Vec<Condition>>,
pub required: bool,
}

0 comments on commit 1803a50

Please sign in to comment.