bangumi_api/module/indice/
model.rs

1use serde::{Deserialize, Serialize};
2
3use crate::module::{
4    model::{Image, InfoBox, Stat},
5    revision::model::Creator,
6    subject::model::SubjectType,
7};
8
9/// 表示索引的详细信息结构体
10///
11/// 包含索引的基本属性、统计数据、创建者信息及状态标识,用于完整描述一个索引的全貌
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct Index {
14    /// 索引唯一标识符
15    pub id: u32,
16    /// 索引标题
17    pub title: String,
18    /// 索引描述(用于说明索引的主题、目的或内容简介)
19    pub desc: String,
20    /// 索引包含的条目总数(可选,可能为None表示未统计)
21    pub total: Option<u32>,
22    /// 索引的统计信息(如浏览量、收藏量等)
23    pub stat: Stat,
24    /// 创建时间
25    pub created_at: String,
26    /// 最后更新时间(格式同上,记录索引内容最后修改的时间)
27    pub updated_at: String,
28    /// 索引创建者信息
29    pub creator: Creator,
30    /// 是否被封禁(true表示索引因违规被隐藏或禁止访问)
31    pub ban: bool,
32    /// 是否包含成人内容(true表示索引含不适宜未成年人的内容)
33    pub nsfw: bool,
34}
35
36/// 用于更新索引基本信息的请求参数结构体
37///
38/// 包含可修改的索引基本属性,字段均为可选,仅提供需要更新的字段即可
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct IndexBasicInfo {
41    /// 可选,索引的新标题(若提供则更新标题)
42    pub title: Option<String>,
43    /// 可选,索引的新描述(若提供则更新描述)
44    pub description: Option<String>,
45}
46
47/// 用于向索引添加条目的请求参数结构体
48///
49/// 描述添加到索引中的条目信息,包括条目ID、排序权重和备注
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct IndexSubjectAddInfo {
52    /// 可选,要添加到索引的条目ID(必需参数,未提供则添加失败)
53    pub subject_id: Option<u32>,
54    /// 可选,该条目在索引中的排序权重(数值越小越靠前,默认可能按添加顺序)
55    pub sort: Option<u32>,
56    /// 可选,对该条目添加的备注说明(用于解释条目在索引中的意义)
57    pub comment: Option<String>,
58}
59
60/// 用于编辑索引中已有条目的请求参数结构体
61///
62/// 用于修改索引中已有条目的排序权重和备注信息,不支持修改条目ID
63#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct IndexSubjectEditInfo {
65    /// 可选,更新该条目在索引中的排序权重
66    pub sort: Option<u32>,
67    /// 可选,更新对该条目的备注说明
68    pub comment: Option<String>,
69}
70
71/// 索引中条目的基本信息
72///
73/// 包含索引基本属性
74#[derive(Debug, Clone, Serialize, Deserialize)]
75pub struct IndexSubject {
76    /// 条目的唯一标识符
77    pub id: u32,
78    /// 条目的类型(如动画、书籍等)
79    pub r#type: SubjectType,
80    /// 条目的原始名称(通常为外文原名)
81    pub name: String,
82    /// 条目的中文名称
83    pub name_cn: String,
84    /// 条目相关日期(如发布日期、首播日期等,可选)
85    pub date: Option<String>,
86    /// 条目的图片资源信息
87    pub images: Image,
88    /// 条目的信息框内容(结构化属性)
89    pub infobox: InfoBox,
90    // 条目添加到索引的时间
91    pub add_at: Option<String>,
92    // 条目在索引中的备注
93    pub comment: String,
94}