use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "session_records")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub session_id: String,
#[sea_orm(primary_key, auto_increment = false)]
pub user_id: String,
pub dataset_id: Option<String>,
pub status: String,
pub started_at: DateTimeUtc,
pub last_activity_at: DateTimeUtc,
pub ended_at: Option<DateTimeUtc>,
pub tokens_in: i32,
pub tokens_out: i32,
pub cost_usd: f64,
pub error_count: i32,
pub last_model: Option<String>,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl ActiveModelBehavior for ActiveModel {}
impl Model {
pub fn to_dict(&self) -> serde_json::Value {
serde_json::json!({
"session_id": self.session_id,
"user_id": self.user_id,
"dataset_id": self.dataset_id,
"status": self.status,
"started_at": self.started_at.to_rfc3339(),
"last_activity_at": self.last_activity_at.to_rfc3339(),
"ended_at": self.ended_at.map(|t| t.to_rfc3339()),
"tokens_in": self.tokens_in,
"tokens_out": self.tokens_out,
"cost_usd": self.cost_usd,
"error_count": self.error_count,
"last_model": self.last_model,
})
}
}