use crate::{experiment::KeyValue, modelversion::ModelVersion};
use builder_pattern::Builder;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Builder)]
pub struct RegisterModel {
#[into]
pub name: String,
#[default(vec![])]
pub tags: Vec<KeyValue>,
#[into]
pub description: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Builder)]
pub struct RegisteredModel {
pub name: String,
pub creation_timestamp: u64,
pub last_updated_timestamp: u64,
#[serde(default)]
pub description: String,
#[serde(default)]
pub latest_versions: Vec<ModelVersion>,
#[serde(default)]
pub tags: Vec<KeyValue>,
#[serde(default)]
pub aliases: Vec<RegisteredModelAlias>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Builder)]
pub struct RegisteredModelAlias {
pub alias: String,
pub version: String,
}