torn_api_codegen/openapi/
parameter.rs

1use std::borrow::Cow;
2
3use serde::Deserialize;
4
5use super::r#type::OpenApiType;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize)]
8#[serde(rename_all = "lowercase")]
9pub enum ParameterLocation {
10    Query,
11    Path,
12}
13
14#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
15#[serde(untagged)]
16pub enum OpenApiParameterDefault<'a> {
17    Int(i32),
18    Str(&'a str),
19}
20
21#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
22#[serde(rename_all = "camelCase")]
23pub struct OpenApiParameterSchema<'a> {
24    #[serde(rename = "$ref")]
25    pub ref_path: Option<&'a str>,
26    pub r#type: Option<&'a str>,
27    pub r#enum: Option<Vec<&'a str>>,
28    pub format: Option<&'a str>,
29    pub default: Option<OpenApiParameterDefault<'a>>,
30    pub maximum: Option<i32>,
31    pub minimum: Option<i32>,
32    pub items: Option<Box<OpenApiParameterSchema<'a>>>,
33    pub one_of: Option<Vec<OpenApiType<'a>>>,
34}
35
36#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
37pub struct OpenApiParameter<'a> {
38    pub name: &'a str,
39    pub description: Option<Cow<'a, str>>,
40    pub r#in: ParameterLocation,
41    pub required: bool,
42    #[serde(borrow)]
43    pub schema: OpenApiParameterSchema<'a>,
44}