batch_mode_batch_schema/
batch_request_record.rs

1// ---------------- [ File: src/batch_request_record.rs ]
2crate::ix!();
3
4#[derive(Debug, Deserialize)]
5pub struct BatchRequestRecord {
6    id:        BatchRequestId,
7    custom_id: CustomRequestId,
8    prompt:    Option<String>,
9    messages:  Option<Vec<String>>,
10}
11
12impl BatchRequestRecord {
13    pub fn id(&self) -> &BatchRequestId {
14        &self.id
15    }
16
17    pub fn custom_id(&self) -> &CustomRequestId {
18        &self.custom_id
19    }
20
21    pub fn prompt(&self) -> Option<&str> {
22        self.prompt.as_deref()
23    }
24
25    pub fn messages(&self) -> Option<&[String]> {
26        self.messages.as_deref()
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33    use serde_json::json;
34
35    #[test]
36    fn test_batch_request_record_deserialization_full() {
37        let json_data = json!({
38            "id": "batch_req_123",
39            "custom_id": "custom_456",
40            "prompt": "Test prompt",
41            "messages": ["Message 1", "Message 2"]
42        });
43
44        let record: BatchRequestRecord = serde_json::from_value(json_data).unwrap();
45
46        assert_eq!(record.id().as_str(), "batch_req_123");
47        assert_eq!(record.custom_id().as_str(), "custom_456");
48        assert_eq!(record.prompt(), Some("Test prompt"));
49        assert_eq!(record.messages().unwrap(), &["Message 1".to_string(), "Message 2".to_string()]);
50    }
51
52    #[test]
53    fn test_batch_request_record_deserialization_partial() {
54        let json_data = json!({
55            "id": "batch_req_789",
56            "custom_id": "custom_012"
57            // 'prompt' and 'messages' are missing
58        });
59
60        let record: BatchRequestRecord = serde_json::from_value(json_data).unwrap();
61
62        assert_eq!(record.id().as_str(), "batch_req_789");
63        assert_eq!(record.custom_id().as_str(), "custom_012");
64        assert!(record.prompt().is_none());
65        assert!(record.messages().is_none());
66    }
67
68    #[test]
69    fn test_batch_request_record_missing_required_fields() {
70        let json_data = json!({
71            "custom_id": "custom_345"
72            // 'id' is missing
73        });
74
75        let result: Result<BatchRequestRecord, _> = serde_json::from_value(json_data);
76        assert!(result.is_err(), "Deserialization should fail if required fields are missing");
77    }
78}