orign 0.2.3

A globally distributed container orchestrator
Documentation
// src/entities/training_job.rs

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,
}

// The Relation enum is required, even if empty.
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}

impl Model {
    /// Attempt to parse `self.params` into MsSwiftParams (if present).
    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())
    }
}

// The ActiveModelBehavior is required, even if empty.
impl ActiveModelBehavior for ActiveModel {}