// 班级 — 老师创建,学生通过班级码加入 use sea_orm::entity::prelude::*; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)] #[sea_orm(table_name = "school_classes")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: Uuid, pub tenant_id: Uuid, /// 班级名称 pub name: String, /// 学校名称 #[serde(skip_serializing_if = "Option::is_none")] pub school_name: Option, /// 创建者(老师)ID pub teacher_id: Uuid, /// 6 位班级码(字母数字混合,62^6 ≈ 568 亿种组合) pub class_code: String, /// 成员数量(缓存字段) pub member_count: i32, /// 是否激活 pub is_active: bool, /// 班级码过期时间(学期结束自动失效) #[serde(skip_serializing_if = "Option::is_none")] pub expires_at: Option, pub created_at: DateTimeUtc, pub updated_at: DateTimeUtc, pub created_by: Uuid, pub updated_by: Uuid, #[serde(skip_serializing_if = "Option::is_none")] pub deleted_at: Option, pub version: i32, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { #[sea_orm(has_many = "super::class_member::Entity")] ClassMember, #[sea_orm(has_many = "super::topic_assignment::Entity")] TopicAssignment, #[sea_orm(has_many = "super::journal_entry::Entity")] JournalEntry, } impl Related for Entity { fn to() -> RelationDef { Relation::ClassMember.def() } } impl Related for Entity { fn to() -> RelationDef { Relation::TopicAssignment.def() } } impl Related for Entity { fn to() -> RelationDef { Relation::JournalEntry.def() } } impl ActiveModelBehavior for ActiveModel {}