use crate::{DateTimeUtc, Uuid}; use sea_orm::entity::prelude::*; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, DeriveEntityModel)] #[sea_orm(table_name = "ai_message")] pub struct Model { #[sea_orm(primary_key)] pub id: Uuid, pub conversation_id: Uuid, pub parent_message_id: Option, pub role: String, pub content: Json, pub model: Option, pub is_fork_origin: bool, pub stop_reason: Option, pub input_tokens: Option, pub output_tokens: Option, pub latency_ms: Option, pub metadata: Option, pub room_id: Option, /// Groups all versions of the same message (original + edits). /// For new messages, this equals the message id itself. pub version_group_id: Option, /// Sequential version number within the group (1 = original, 2 = first edit, etc.) pub version_number: i32, /// Whether this is the current active version in the group. pub is_latest: bool, pub created_at: DateTimeUtc, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation {} impl ActiveModelBehavior for ActiveModel {}