yggdrasil/api/posts/
types.rs1use crate::models::post::{Post, PostListItem, PostStats, Tag};
4
5#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub struct CreatePostResponse {
8 pub success: bool,
10 pub message: String,
12 pub post_id: Option<i32>,
14 pub slug: Option<String>,
16}
17
18#[cfg_attr(not(feature = "server"), allow(dead_code))]
21impl CreatePostResponse {
22 pub fn err(message: impl Into<String>) -> Self {
24 Self {
25 success: false,
26 message: message.into(),
27 post_id: None,
28 slug: None,
29 }
30 }
31
32 pub fn ok(message: impl Into<String>, post_id: i32, slug: impl Into<String>) -> Self {
34 Self {
35 success: true,
36 message: message.into(),
37 post_id: Some(post_id),
38 slug: Some(slug.into()),
39 }
40 }
41
42 pub fn ok_msg(message: impl Into<String>) -> Self {
44 Self {
45 success: true,
46 message: message.into(),
47 post_id: None,
48 slug: None,
49 }
50 }
51}
52
53#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
55pub struct PostListResponse {
56 pub posts: Vec<PostListItem>,
58 pub total: i64,
60}
61
62#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
64pub struct TagListResponse {
65 pub tags: Vec<Tag>,
67}
68
69#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
71pub struct PostStatsResponse {
72 pub stats: PostStats,
74}
75
76#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
78pub struct SinglePostResponse {
79 pub post: Option<Post>,
81}
82
83#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
85pub struct RebuildResult {
86 pub rebuilt: u64,
88 pub failed: u64,
90 pub errors: Vec<String>,
92}