openai_oxide/types/
model.rs1use serde::Deserialize;
4
5#[derive(Debug, Clone, Deserialize)]
7pub struct Model {
8 pub id: String,
10
11 pub created: i64,
13
14 pub object: String,
16
17 pub owned_by: String,
19}
20
21#[derive(Debug, Clone, Deserialize)]
23pub struct ModelList {
24 pub object: String,
25 pub data: Vec<Model>,
26}
27
28#[derive(Debug, Clone, Deserialize)]
30pub struct ModelDeleted {
31 pub id: String,
32 pub deleted: bool,
33 pub object: String,
34}
35
36#[cfg(test)]
37mod tests {
38 use super::*;
39
40 #[test]
41 fn test_deserialize_model() {
42 let json = r#"{
43 "id": "gpt-4o",
44 "object": "model",
45 "created": 1687882411,
46 "owned_by": "openai"
47 }"#;
48 let model: Model = serde_json::from_str(json).unwrap();
49 assert_eq!(model.id, "gpt-4o");
50 assert_eq!(model.object, "model");
51 assert_eq!(model.owned_by, "openai");
52 }
53
54 #[test]
55 fn test_deserialize_model_list() {
56 let json = r#"{
57 "object": "list",
58 "data": [
59 {"id": "gpt-4o", "object": "model", "created": 1687882411, "owned_by": "openai"},
60 {"id": "gpt-3.5-turbo", "object": "model", "created": 1677610602, "owned_by": "openai"}
61 ]
62 }"#;
63 let list: ModelList = serde_json::from_str(json).unwrap();
64 assert_eq!(list.data.len(), 2);
65 assert_eq!(list.data[0].id, "gpt-4o");
66 }
67
68 #[test]
69 fn test_deserialize_model_deleted() {
70 let json = r#"{"id": "ft:gpt-4o:org:custom:id", "object": "model", "deleted": true}"#;
71 let deleted: ModelDeleted = serde_json::from_str(json).unwrap();
72 assert!(deleted.deleted);
73 assert_eq!(deleted.id, "ft:gpt-4o:org:custom:id");
74 }
75}