Skip to main content

tdm_server_rust/entity/
author.rs

1//! 作者实体 (Author Entity)
2//!
3//! 漫画原作/作画作者信息,映射数据库 `authortb` 表。
4//!
5//! ## 数据表映射
6//!
7//! [`Author`] 对应 `authortb` 表的行记录,通过 `mangaauthor` 关联表与漫画建立多对多关系。
8//! 每个漫画最多关联两个作者:原作 (type=1) 和作画 (type=2)。
9//!
10//! ## 典型用法
11//!
12//! - 漫画新增时,若作者不存在于档案,自动创建 `Author` 记录
13//! - 漫画更新时,通过 `AuthorRepository` 校验作者是否在档案中
14//! - 作为 `MangaCardVo` 和 `MangaDetailVo` 的子字段序列化输出
15
16use serde::{Deserialize, Serialize};
17
18/// 作者信息
19///
20/// 记录漫画的原作或作画作者。每个作者在 `authortb` 中只有一条记录,
21/// 通过 `mangaauthor` 关联表与多个漫画建立联系。
22///
23/// ## 字段说明
24///
25/// | 字段 | 数据库列 | 说明 |
26/// |------|----------|------|
27/// | `id` | `Id` | 自增主键,新增时为 `None`,插入后由数据库生成 |
28/// | `author_name` | `authorName` | 作者名,用于漫画列表展示和 RSS 输出 |
29///
30/// ## 序列化
31///
32/// JSON 格式(camelCase):`{"id": 1, "authorName": "作者名"}`
33///
34/// ## 对应 Java 类
35///
36/// Java `Author` 类,字段名和序列化格式完全一致。
37#[derive(Debug, Clone, Serialize, Deserialize, Default)]
38#[serde(rename_all = "camelCase")]
39pub struct Author {
40    /// 作者自增主键,插入前为 `None`
41    pub id: Option<i32>,
42    /// 作者名(原作或作画)
43    pub author_name: Option<String>,
44}