#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Ty {
Str,
Int,
Float,
Bool,
Any,
Unit,
List(Box<Ty>),
Map(Box<Ty>),
Optional(Box<Ty>),
Named(String),
Union(Vec<Ty>),
Literal(Vec<String>),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Field {
pub attr: String,
pub wire: String,
pub ty: Ty,
pub required: bool,
pub doc: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Model {
pub name: String,
pub doc: Option<String>,
pub fields: Vec<Field>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ParamLoc {
Query,
Path,
Header,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Param {
pub attr: String,
pub wire: String,
pub location: ParamLoc,
pub ty: Ty,
pub required: bool,
pub doc: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Method {
pub name: String,
pub operation_id: String,
pub http_method: String,
pub path: String,
pub doc: Option<String>,
pub params: Vec<Param>,
pub body: Option<Ty>,
pub ok: Ty,
pub ok_status: u16,
pub paginated: bool,
}
#[derive(Debug, Clone, Default)]
pub struct Sdk {
pub models: Vec<Model>,
pub aliases: Vec<(String, Ty)>,
pub methods: Vec<Method>,
pub notes: Vec<String>,
}