use sea_orm::entity::prelude::*;
use serde::de::Error as DeError;
use serde::{Deserialize, Serialize};
use serde_json::Value as Json;
use crate::models::MSSwiftParams;
#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "training_jobs")]
pub struct Model {
#[sea_orm(primary_key, column_type = "Text", auto_increment = false)]
pub id: String,
pub namespace: String,
pub name: String,
pub owner_id: String,
pub model: String,
pub framework: String,
pub vram_request: Option<String>,
pub accelerators: Option<Vec<String>>,
pub cpu_request: Option<String>,
pub gpu_type: Option<String>,
pub gpu_count: Option<u32>,
pub params: Option<Json>,
pub status: Option<String>,
pub buffer: Option<String>,
pub adapter: Option<String>,
pub platform: Option<String>,
pub resource_name: Option<String>,
pub resource_namespace: Option<String>,
pub queue: Option<String>,
pub trainer_state: Option<String>,
pub resume: Option<bool>,
pub output_dir: Option<String>,
pub args: Option<String>,
pub adapter_config: Option<String>,
pub labels: Option<Json>,
pub updated_at: DateTimeWithTimeZone,
pub created_at: DateTimeWithTimeZone,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl Model {
pub fn ms_swift_params(&self) -> Result<MSSwiftParams, serde_json::Error> {
let json_val = self
.params
.as_ref()
.ok_or_else(|| serde_json::Error::custom("No params found in this training job."))?;
serde_json::from_value(json_val.clone())
}
}
impl ActiveModelBehavior for ActiveModel {}