tdm_server_rust/entity/magazine.rs
1//! 杂志实体 (Magazine Entity)
2//!
3//! 漫画连载杂志信息,映射数据库 `magazine` 表。
4//!
5//! ## 业务场景
6//!
7//! 每条漫画可关联一个连载杂志,用于漫画列表页的筛选和展示。
8//! 杂志信息独立管理,通过 `mangamagazine` 关联表与漫画建立一对多关系。
9//!
10//! ## 典型用法
11//!
12//! - 漫画新增/更新时选择关联杂志
13//! - 漫画列表页按杂志名筛选
14//! - 杂志名在漫画卡片 VO 中作为 `magazineName` 输出
15
16use serde::{Deserialize, Serialize};
17
18/// 连载杂志信息
19///
20/// 记录漫画所连载的杂志名称及相关元数据。
21/// 每条记录对应 `magazine` 表中的一行。
22///
23/// ## 字段说明
24///
25/// | 字段 | 数据库列 | 说明 |
26/// |------|----------|------|
27/// | `id` | `Id` | 自增主键,新增时为 `None` |
28/// | `magazine_name` | `magazineName` | 杂志名称,如"周刊少年Jump" |
29/// | `r#type` | `type` | 杂志种类分类 |
30/// | `update_time` | `updateTime` | 最后更新时间 |
31/// | `price` | `price` | 每期售价(日元) |
32///
33/// ## 序列化
34///
35/// JSON 格式(camelCase),`r#type` 序列化为 `"type"`:
36///
37/// ```json
38/// {"id": 1, "magazineName": "周刊少年Jump", "type": 1, "price": 290}
39/// ```
40///
41/// 注意:Rust 中字段名为 `r#type` 因为 `type` 是保留字,
42/// 但 `#[serde(rename_all = "camelCase")]` 确保 JSON 输出为 `"type"`。
43///
44/// ## 对应 Java 类
45///
46/// Java `Magazine` 实体。
47#[derive(Debug, Clone, Serialize, Deserialize, Default)]
48#[serde(rename_all = "camelCase")]
49pub struct Magazine {
50 /// 杂志自增主键,新增时为 `None`
51 pub id: Option<i32>,
52 /// 杂志名称
53 pub magazine_name: Option<String>,
54 /// 杂志种类编号
55 pub r#type: Option<i16>,
56 /// 记录最后更新时间
57 pub update_time: Option<String>,
58 /// 每期售价(日元)
59 pub price: Option<i32>,
60}