Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
63 changes: 45 additions & 18 deletions .generator/src/generator/templates/model_enum.j2
Original file line number Diff line number Diff line change
@@ -1,31 +1,20 @@
{%- if model["type"] == "integer" %}
use serde_repr::{Deserialize_repr, Serialize_repr};
{%- else %}
use serde::{Serialize, Deserialize};
{%- endif %}
{%- set dataType = model|simple_type(render_option=False) %}
use serde::{Serialize, Deserialize, Serializer, Deserializer};
{% if description is defined %}
{{ description | block_comment }}
{%- endif %}

#[non_exhaustive]
{%- if model["type"] == "integer" %}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize_repr, Deserialize_repr)]
#[repr({{model | simple_type(false, false)}})]
{%- else %}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
{%- endif %}
pub enum {{name}} {
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum {{ name }} {
{%- for index, value in enumerate(model.enum) %}
{%- if model["type"] == "integer" %}
{{ model["x-enum-varnames"][index] or value.upper() }} = {{value}},
{%- else %}
#[serde(rename = "{{value}}")]
{{ model["x-enum-varnames"][index] or value.upper() }},
{%- endif %}
{%- endfor %}
}

impl ToString for {{name}} {
{%- if not model["type"] == "integer" %}

impl ToString for {{ name }} {
fn to_string(&self) -> String {
match self {
{%- for index, value in enumerate(model.enum) %}
Expand All @@ -34,3 +23,41 @@ impl ToString for {{name}} {
}
}
}
{%- endif %}

impl Serialize for {{ name }} {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
{%- if model["type"] == "string"%}
_ => serializer.serialize_str(self.to_string().as_str()),
{%- else %}
{%- for index, value in enumerate(model.enum) %}
Self::{{ model["x-enum-varnames"][index] or value.upper() }} => serializer.serialize_{{ dataType }}({{ value }}),
{%- endfor %}
{%- endif %}
}
}
}

impl<'de> Deserialize<'de> for {{ name }} {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: {{ dataType }} = {{ dataType }}::deserialize(deserializer)?;
Ok(match s{%- if model["type"] == "string" %}.as_str(){% endif %} {
{%- for index, value in enumerate(model.enum) %}
{%- if model["type"] == "string" %}"{%- endif %}{{ value }}{%- if model["type"] == "string" %}"{%- endif %} => Self::{{ model["x-enum-varnames"][index] or value.upper() }},
{%- endfor %}
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
1 change: 0 additions & 1 deletion LICENSE-3rdparty.csv
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ schannel,https://github.com/steffengy/schannel-rs,MIT,"Steven Fackler <sfackler@
security-framework,https://github.com/kornelski/rust-security-framework,MIT OR Apache-2.0,"Steven Fackler <[email protected]>, Kornel <[email protected]>"
serde,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar <[email protected]>, David Tolnay <[email protected]>"
serde_json,https://github.com/serde-rs/json,MIT OR Apache-2.0,"Erick Tryzelaar <[email protected]>, David Tolnay <[email protected]>"
serde_repr,https://github.com/dtolnay/serde-repr,MIT OR Apache-2.0,David Tolnay <[email protected]>
serde_urlencoded,https://github.com/nox/serde_urlencoded,MIT OR Apache-2.0,Anthony Ramine <[email protected]>
serde_with,https://github.com/jonasbb/serde_with,MIT OR Apache-2.0,"Jonas Bushart, Marcin Kaźmierczak"
serde_with_macros,https://github.com/jonasbb/serde_with,MIT OR Apache-2.0,Jonas Bushart
Expand Down
40 changes: 34 additions & 6 deletions src/datadogV1/model/model_access_role.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AccessRole {
#[serde(rename = "st")]
STANDARD,
#[serde(rename = "adm")]
ADMIN,
#[serde(rename = "ro")]
READ_ONLY,
#[serde(rename = "ERROR")]
ERROR,
}

Expand All @@ -27,3 +23,35 @@ impl ToString for AccessRole {
}
}
}

impl Serialize for AccessRole {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
_ => serializer.serialize_str(self.to_string().as_str()),
}
}
}

impl<'de> Deserialize<'de> for AccessRole {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"st" => Self::STANDARD,
"adm" => Self::ADMIN,
"ro" => Self::READ_ONLY,
"ERROR" => Self::ERROR,
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
34 changes: 31 additions & 3 deletions src/datadogV1/model/model_alert_graph_widget_definition_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AlertGraphWidgetDefinitionType {
#[serde(rename = "alert_graph")]
ALERT_GRAPH,
}

Expand All @@ -18,3 +17,32 @@ impl ToString for AlertGraphWidgetDefinitionType {
}
}
}

impl Serialize for AlertGraphWidgetDefinitionType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
_ => serializer.serialize_str(self.to_string().as_str()),
}
}
}

impl<'de> Deserialize<'de> for AlertGraphWidgetDefinitionType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"alert_graph" => Self::ALERT_GRAPH,
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
34 changes: 31 additions & 3 deletions src/datadogV1/model/model_alert_value_widget_definition_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AlertValueWidgetDefinitionType {
#[serde(rename = "alert_value")]
ALERT_VALUE,
}

Expand All @@ -18,3 +17,32 @@ impl ToString for AlertValueWidgetDefinitionType {
}
}
}

impl Serialize for AlertValueWidgetDefinitionType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
_ => serializer.serialize_str(self.to_string().as_str()),
}
}
}

impl<'de> Deserialize<'de> for AlertValueWidgetDefinitionType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"alert_value" => Self::ALERT_VALUE,
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
38 changes: 33 additions & 5 deletions src/datadogV1/model/model_apm_stats_query_row_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum ApmStatsQueryRowType {
#[serde(rename = "service")]
SERVICE,
#[serde(rename = "resource")]
RESOURCE,
#[serde(rename = "span")]
SPAN,
}

Expand All @@ -24,3 +21,34 @@ impl ToString for ApmStatsQueryRowType {
}
}
}

impl Serialize for ApmStatsQueryRowType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
_ => serializer.serialize_str(self.to_string().as_str()),
}
}
}

impl<'de> Deserialize<'de> for ApmStatsQueryRowType {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"service" => Self::SERVICE,
"resource" => Self::RESOURCE,
"span" => Self::SPAN,
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
34 changes: 31 additions & 3 deletions src/datadogV1/model/model_aws_event_bridge_create_status.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AWSEventBridgeCreateStatus {
#[serde(rename = "created")]
CREATED,
}

Expand All @@ -18,3 +17,32 @@ impl ToString for AWSEventBridgeCreateStatus {
}
}
}

impl Serialize for AWSEventBridgeCreateStatus {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
_ => serializer.serialize_str(self.to_string().as_str()),
}
}
}

impl<'de> Deserialize<'de> for AWSEventBridgeCreateStatus {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"created" => Self::CREATED,
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
34 changes: 31 additions & 3 deletions src/datadogV1/model/model_aws_event_bridge_delete_status.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

use serde::{Deserialize, Serialize};
use serde::{Deserialize, Deserializer, Serialize, Serializer};

#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum AWSEventBridgeDeleteStatus {
#[serde(rename = "empty")]
EMPTY,
}

Expand All @@ -18,3 +17,32 @@ impl ToString for AWSEventBridgeDeleteStatus {
}
}
}

impl Serialize for AWSEventBridgeDeleteStatus {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
_ => serializer.serialize_str(self.to_string().as_str()),
}
}
}

impl<'de> Deserialize<'de> for AWSEventBridgeDeleteStatus {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = String::deserialize(deserializer)?;
Ok(match s.as_str() {
"empty" => Self::EMPTY,
_ => {
return Err(serde::de::Error::custom(format!(
"Invalid value for SyntheticsDeviceID: {}",
s
)))
}
})
}
}
Loading