diff --git a/openapitools.json b/openapitools.json index 077c2db..f29b197 100644 --- a/openapitools.json +++ b/openapitools.json @@ -2,6 +2,6 @@ "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", "spaces": 2, "generator-cli": { - "version": "7.21.0" + "version": "7.24.0" } } diff --git a/templates/Cargo.mustache b/templates/Cargo.mustache index 553781c..68a6c2c 100644 --- a/templates/Cargo.mustache +++ b/templates/Cargo.mustache @@ -45,6 +45,9 @@ url = "^2.5" {{#hasUUIDs}} uuid = { version = "^1.8", features = ["serde", "v4"] } {{/hasUUIDs}} +{{#usesChronoTypes}} +chrono = { version = "^0.4", features = ["serde"] } +{{/usesChronoTypes}} {{#hyper}} {{#hyper0x}} hyper = { version = "~0.14", features = ["full"] } diff --git a/templates/model.mustache b/templates/model.mustache index ab1630e..4c6c410 100644 --- a/templates/model.mustache +++ b/templates/model.mustache @@ -5,7 +5,9 @@ use serde::{Deserialize, Serialize}; {{#model}} {{^isEnum}}{{#vendorExtensions.x-rust-has-byte-array}} use serde_with::serde_as; -{{/vendorExtensions.x-rust-has-byte-array}}{{/isEnum}} +{{/vendorExtensions.x-rust-has-byte-array}}{{#vendorExtensions.x-rust-has-integer-property-enum}} +use serde_repr::{Serialize_repr,Deserialize_repr}; +{{/vendorExtensions.x-rust-has-integer-property-enum}}{{/isEnum}} {{#isEnum}} {{#isInteger}} use serde_repr::{Serialize_repr,Deserialize_repr}; @@ -194,6 +196,31 @@ impl Default for {{classname}} { {{!-- for properties that are of enum type --}} {{#vars}} {{#isEnum}} +{{#isInteger}} +/// {{{description}}} +#[repr(i64)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize_repr, Deserialize_repr)] +pub enum {{{enumName}}} { +{{#allowableValues}} +{{#enumVars}} + {{{name}}} = {{{value}}}, +{{/enumVars}} +{{/allowableValues}} +} + +impl std::fmt::Display for {{{enumName}}} { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", match self { + {{#allowableValues}} + {{#enumVars}} + Self::{{{name}}} => "{{{value}}}", + {{/enumVars}} + {{/allowableValues}} + }) + } +} +{{/isInteger}} +{{^isInteger}} /// {{{description}}} #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] pub enum {{{enumName}}} { @@ -204,6 +231,7 @@ pub enum {{{enumName}}} { {{/enumVars}} {{/allowableValues}} } +{{/isInteger}} impl Default for {{{enumName}}} { fn default() -> {{{enumName}}} {