From 5d8215293209bc17419e70bc1f8d5e2f53ad5322 Mon Sep 17 00:00:00 2001 From: Lumither Tao Date: Fri, 3 May 2024 23:43:19 +0800 Subject: [PATCH] feat(api) finish /api/get/post_list --- backend/src/api/get/get_post_list.rs | 30 ++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/backend/src/api/get/get_post_list.rs b/backend/src/api/get/get_post_list.rs index 3d4a3b0..9984cee 100644 --- a/backend/src/api/get/get_post_list.rs +++ b/backend/src/api/get/get_post_list.rs @@ -1,18 +1,32 @@ use axum::extract::State; use axum::Json; -use serde_json::Value; -use sqlx::PgPool; - -use crate::model::Post; +use chrono::NaiveDateTime; +use serde_json::{json, Map, Value}; +use sqlx::{PgPool, Row}; +use uuid::Uuid; pub async fn get_post_list( State(db_connection): State, - Json(_request): Json, ) -> Result, Json> { - let post_list: Vec = sqlx::query_as("select * from post") + let post_list = sqlx::query("select post_id, title, summary, last_update from post") .fetch_all(&db_connection) .await .unwrap(); - dbg!(&post_list); - Ok(Json::from(serde_json::to_value(post_list).unwrap())) + + let mut res = Map::new(); + for post in post_list { + let mut tmp = Map::new(); + let post_id: Uuid = post.get("post_id"); + let title: String = post.get("title"); + let summary: String = post.get("summary"); + let last_update: NaiveDateTime = post.get("last_update"); + + tmp.insert("title".to_string(), json!(title)); + tmp.insert("summary".to_string(), json!(summary)); + tmp.insert("last_update".to_string(), json!(last_update)); + + res.insert(post_id.to_string(), Value::from(tmp)); + } + + Ok(Json::from(Value::from(res))) }