crud_api_endpoint/
input.rs

1use crate::ApiInputConfig;
2use serde::{Deserialize, Serialize};
3
4// Serializable ApiInput.
5// From and Into are in crud-api-derive/input.rs
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ApiInputSerde {
9  pub ident: String,
10  pub data: DataSerde,
11  pub no_input_file: bool,
12  pub heading: Option<String>,
13  pub prefix: Option<String>,
14  pub config: Vec<ApiInputConfig>,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub enum DataSerde {
19  Enum(Vec<ApiInputVariantSerde>),
20  Struct(Vec<ApiInputFieldSerde>),
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct ApiInputFieldSerde {
25  pub ident: Option<String>,
26  pub ty: String,
27  pub long: Option<String>,
28  pub short: Option<char>,
29  pub no_short: Option<bool>,
30  pub heading: Option<String>,
31  pub help: Option<String>,
32  pub long_help: Option<String>,
33  pub possible_values: Option<Vec<String>>,
34  pub required: Option<bool>,
35  pub num_args: Option<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct ApiInputVariantSerde {
40  pub ident: String,
41  pub fields: Vec<String>,
42  pub long: Option<String>,
43  pub short: Option<char>,
44  pub no_short: bool,
45  pub no_long: bool,
46  pub heading: Option<String>,
47  pub help: Option<String>,
48  pub long_help: Option<String>,
49}