feat(api): add get_post_by_id server function for editing
This commit is contained in:
parent
0a33a843f8
commit
6d28c2b4ce
@ -966,6 +966,36 @@ pub async fn update_post(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[server(GetPostById, "/api")]
|
||||||
|
pub async fn get_post_by_id(post_id: i32) -> Result<SinglePostResponse, ServerFnError> {
|
||||||
|
let _user = get_current_admin_user().await?;
|
||||||
|
|
||||||
|
let client = get_conn().await.map_err(|e| {
|
||||||
|
tracing::error!("DB connection failed: {:?}", e);
|
||||||
|
ServerFnError::new(format!("数据库连接失败: {}", e))
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let row = client
|
||||||
|
.query_opt(
|
||||||
|
"SELECT id, author_id, title, slug, summary, content_md, content_html, status, published_at, created_at, updated_at, cover_image
|
||||||
|
FROM posts
|
||||||
|
WHERE id = $1 AND deleted_at IS NULL",
|
||||||
|
&[&post_id],
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.map_err(|e| {
|
||||||
|
tracing::error!("query failed: {:?}", e);
|
||||||
|
ServerFnError::new(format!("查询失败: {}", e))
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let post = match row {
|
||||||
|
Some(row) => Some(row_to_post_list(&client, &row).await),
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(SinglePostResponse { post })
|
||||||
|
}
|
||||||
|
|
||||||
#[server(GetPostBySlug, "/api")]
|
#[server(GetPostBySlug, "/api")]
|
||||||
pub async fn get_post_by_slug(slug: String) -> Result<SinglePostResponse, ServerFnError> {
|
pub async fn get_post_by_slug(slug: String) -> Result<SinglePostResponse, ServerFnError> {
|
||||||
let client = get_conn().await.map_err(|e| {
|
let client = get_conn().await.map_err(|e| {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user