1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4use crate::AwpVersion;
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct AwpResponse {
13 pub id: Uuid,
14 pub version: AwpVersion,
15 pub status: String,
16 pub payload: serde_json::Value,
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22 use crate::CURRENT_VERSION;
23
24 #[test]
25 fn test_serde_round_trip() {
26 let resp = AwpResponse {
27 id: Uuid::now_v7(),
28 version: CURRENT_VERSION,
29 status: "ok".to_string(),
30 payload: serde_json::json!({"result": 42}),
31 };
32 let json = serde_json::to_string(&resp).unwrap();
33 let deserialized: AwpResponse = serde_json::from_str(&json).unwrap();
34 assert_eq!(resp, deserialized);
35 }
36}