batch_mode_batch_schema/
batch_request_record.rs1crate::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 });
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 });
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}