Skip to main content

eoka_protocol/
response.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)]
4pub struct Response {
5    pub ok: bool,
6    #[serde(skip_serializing_if = "Option::is_none")]
7    pub data: Option<serde_json::Value>,
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub error: Option<String>,
10}
11
12impl Response {
13    pub fn ok(data: impl Into<serde_json::Value>) -> Self {
14        Self {
15            ok: true,
16            data: Some(data.into()),
17            error: None,
18        }
19    }
20
21    pub fn ok_text(msg: impl Into<String>) -> Self {
22        Self::ok(serde_json::Value::String(msg.into()))
23    }
24
25    pub fn err(msg: impl Into<String>) -> Self {
26        Self {
27            ok: false,
28            data: None,
29            error: Some(msg.into()),
30        }
31    }
32}