yggdrasil/api/posts/
update.rs1#![allow(clippy::too_many_arguments)]
9
10use crate::api::error::ApiError;
11use leptos::prelude::*;
12
13#[cfg(feature = "server")]
14use super::helpers::get_current_admin_user;
15use super::types::CreatePostResponse;
16#[cfg(feature = "server")]
17use super::{service, types::write_response};
18
19#[server(UpdatePost, endpoint = "update_post", input = leptos::server_fn::codec::Json)]
24pub async fn update_post(
25 post_id: i32,
26 title: String,
27 slug: Option<String>,
28 summary: Option<String>,
29 content_md: String,
30 status: String,
31 tags: Vec<String>,
32 cover_image: Option<String>,
33) -> Result<CreatePostResponse, ApiError> {
34 let user = get_current_admin_user().await?;
35 let draft = service::PostDraft {
36 title,
37 slug,
38 summary,
39 content_md,
40 status,
41 tags,
42 cover_image,
43 };
44 write_response(
45 service::update(user.id, post_id, service::UpdatePost::Replace(draft)).await,
46 "更新成功",
47 )
48}