endpoint_libs/model/
endpoint.rs1use crate::model::{Field, Type};
2use serde::*;
3
4#[derive(Debug, Serialize, Deserialize, Default)]
6pub struct EndpointSchema {
7 pub name: String,
9
10 pub code: u32,
12
13 pub parameters: Vec<Field>,
15
16 pub returns: Vec<Field>,
18
19 #[serde(default)]
21 pub stream_response: Option<Type>,
22
23 #[serde(default)]
25 pub description: String,
26
27 #[serde(default)]
29 pub json_schema: serde_json::Value,
30}
31
32impl EndpointSchema {
33 pub fn new(
35 name: impl Into<String>,
36 code: u32,
37 parameters: Vec<Field>,
38 returns: Vec<Field>,
39 ) -> Self {
40 Self {
41 name: name.into(),
42 code,
43 parameters,
44 returns,
45 stream_response: None,
46 description: "".to_string(),
47 json_schema: Default::default(),
48 }
49 }
50
51 pub fn with_stream_response_type(mut self, stream_response: Type) -> Self {
53 self.stream_response = Some(stream_response);
54 self
55 }
56
57 pub fn with_description(mut self, desc: impl Into<String>) -> Self {
59 self.description = desc.into();
60 self
61 }
62}