torn_api_codegen/openapi/
schema.rs

1use indexmap::IndexMap;
2use serde::Deserialize;
3
4use super::{parameter::OpenApiParameter, path::OpenApiPath, r#type::OpenApiType};
5
6#[derive(Debug, Clone, Deserialize)]
7pub struct Components<'a> {
8    #[serde(borrow)]
9    pub schemas: IndexMap<&'a str, OpenApiType<'a>>,
10    #[serde(borrow)]
11    pub parameters: IndexMap<&'a str, OpenApiParameter<'a>>,
12}
13
14#[derive(Debug, Clone, Deserialize)]
15pub struct OpenApiSchema<'a> {
16    #[serde(borrow)]
17    pub paths: IndexMap<&'a str, OpenApiPath<'a>>,
18    #[serde(borrow)]
19    pub components: Components<'a>,
20}
21
22impl OpenApiSchema<'_> {
23    pub fn read() -> Result<Self, serde_json::Error> {
24        let s = include_str!("../../openapi.json");
25
26        serde_json::from_str(s)
27    }
28}
29
30#[cfg(test)]
31mod test {
32    use super::*;
33
34    #[test]
35    fn read() {
36        OpenApiSchema::read().unwrap();
37    }
38}