yggdrasil/api/posts/
create.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(CreatePost, endpoint = "create_post", input = leptos::server_fn::codec::Json)]
24pub async fn create_post(
25 title: String,
26 slug: Option<String>,
27 summary: Option<String>,
28 content_md: String,
29 status: String,
30 tags: Vec<String>,
31 cover_image: Option<String>,
32) -> Result<CreatePostResponse, ApiError> {
33 let user = get_current_admin_user().await?;
34 let draft = service::PostDraft {
35 title,
36 slug,
37 summary,
38 content_md,
39 status,
40 tags,
41 cover_image,
42 };
43 write_response(service::create(user.id, draft, None).await, "创建成功")
44}