use crate::DeepSeekClient;
use crate::DeepSeekError;
use crate::api_get;
use serde::Deserialize;
#[derive(Debug, Clone, Eq, PartialEq, Deserialize)]
pub struct Models {
pub object: String,
pub data: Vec<ModelInfo>,
}
#[derive(Debug, Clone, Eq, PartialEq, Deserialize)]
pub struct ModelInfo {
pub id: String,
pub object: String,
pub owned_by: String,
}
impl Models {
pub async fn list(client: DeepSeekClient) -> Result<Self, DeepSeekError> {
api_get("/models", client).await
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::DEFAULT_BASE_URL;
fn get_client() -> DeepSeekClient {
DeepSeekClient::new(
std::env::var("DEEPSEEK_API").expect("DEEPSEEK_API is not set"),
DEFAULT_BASE_URL.clone(),
)
}
#[tokio::test]
async fn test_list_models() {
let client = get_client();
let models = Models::list(client).await.unwrap();
println!("{:#?}", models);
assert_eq!(models.object, "list");
assert!(!models.data.is_empty());
}
}