use serde::Deserialize;
use crate::model_source::domain::ModelInfo;
#[derive(Deserialize)]
pub struct ModelInfoDto {
pub md5sum: String,
pub name: String,
#[serde(rename = "filename")]
pub file_name: String,
#[serde(rename = "filesize")]
pub file_size: String,
#[serde(rename = "ramrequired")]
pub ram_required: String,
pub description: String,
pub url: String,
#[serde(rename = "promptTemplate")]
pub prompt_template: Option<String>,
#[serde(rename = "systemPrompt")]
pub system_prompt: Option<String>,
#[serde(rename = "embeddingModel")]
pub embedding_model: Option<bool>
}
impl From<ModelInfoDto> for ModelInfo {
fn from(model_info_dto: ModelInfoDto) -> Self {
Self {
name: model_info_dto.name,
url: model_info_dto.url,
file_name: model_info_dto.file_name,
ram_required: model_info_dto.ram_required.parse::<i32>().ok(),
description: model_info_dto.description,
system_prompt: model_info_dto.system_prompt,
prompt_template: model_info_dto.prompt_template,
is_embedding_model: model_info_dto
.embedding_model
.unwrap_or(false)
}
}
}