- HealthState.crypto: HealthCrypto → PiiCrypto (erp-core) - create_patient: 加密 phone/allergy/medical_history + HMAC 索引 - update_patient: 同上,同步加密 - model_to_resp_decrypted: 解密所有 Tier 1 字段 - model_to_resp (列表): Tier 1 字段返回 None - list_patients 搜索: 新增 phone hash 精确搜索 - article handler: 适配新 list_articles 签名 - article 迁移: 添加 category_id 列 - error.rs: From<String> for HealthError - 集成测试: HealthCrypto → PiiCrypto::dev_default()
59 lines
2.1 KiB
Rust
59 lines
2.1 KiB
Rust
use sea_orm::entity::prelude::*;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
|
|
#[sea_orm(table_name = "article")]
|
|
pub struct Model {
|
|
#[sea_orm(primary_key, auto_increment = false)]
|
|
pub id: Uuid,
|
|
pub tenant_id: Uuid,
|
|
pub title: String,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub summary: Option<String>,
|
|
pub content: String,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub cover_image: Option<String>,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub category: Option<String>,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub category_id: Option<Uuid>,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub author: Option<String>,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub published_at: Option<DateTimeUtc>,
|
|
/// 状态: draft / pending_review / approved / rejected / published
|
|
pub status: String,
|
|
/// URL 友好标识
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub slug: Option<String>,
|
|
/// 内容类型: rich_text / markdown
|
|
pub content_type: String,
|
|
/// 审核人
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub reviewed_by: Option<Uuid>,
|
|
/// 审核时间
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub reviewed_at: Option<DateTimeUtc>,
|
|
/// 审核备注
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub review_note: Option<String>,
|
|
/// 浏览次数
|
|
pub view_count: i32,
|
|
/// 排序权重
|
|
pub sort_order: i32,
|
|
pub created_at: DateTimeUtc,
|
|
pub updated_at: DateTimeUtc,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub created_by: Option<Uuid>,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub updated_by: Option<Uuid>,
|
|
#[sea_orm(skip_serializing_if = "Option::is_none")]
|
|
pub deleted_at: Option<DateTimeUtc>,
|
|
pub version: i32,
|
|
}
|
|
|
|
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
|
pub enum Relation {}
|
|
|
|
impl ActiveModelBehavior for ActiveModel {}
|