kuma_client/models/
tag.rs1use crate::deserialize::DeserializeNumberLenient;
4use serde::{Deserialize, Serialize};
5use serde_with::{serde_as, skip_serializing_none};
6
7#[skip_serializing_none]
8#[serde_as]
9#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Hash, Eq)]
10pub struct TagDefinition {
11 #[serde(rename = "id")]
12 #[serde_as(as = "Option<DeserializeNumberLenient>")]
13 pub tag_id: Option<i32>,
14
15 #[serde(rename = "name")]
16 pub name: Option<String>,
17
18 #[serde(rename = "color")]
19 pub color: Option<String>,
20}
21
22#[skip_serializing_none]
23#[serde_as]
24#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Hash, Eq)]
25pub struct Tag {
26 #[serde(rename = "tag_id")]
27 #[serde_as(as = "Option<DeserializeNumberLenient>")]
28 pub tag_id: Option<i32>,
29
30 #[serde(rename = "name")]
31 pub name: Option<String>,
32
33 #[serde(rename = "color")]
34 pub color: Option<String>,
35
36 #[serde(rename = "value")]
37 pub value: Option<String>,
38}
39
40impl From<TagDefinition> for Tag {
41 fn from(value: TagDefinition) -> Self {
42 Tag {
43 name: value.name,
44 color: value.color,
45 tag_id: value.tag_id,
46 value: None,
47 }
48 }
49}
50
51impl From<Tag> for TagDefinition {
52 fn from(value: Tag) -> Self {
53 TagDefinition {
54 tag_id: value.tag_id,
55 name: value.name,
56 color: value.color,
57 }
58 }
59}
60
61#[cfg(feature = "private-api")]
62#[skip_serializing_none]
63#[serde_as]
64#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, Hash, Eq)]
65pub struct TagValue {
66 #[serde(rename = "name")]
67 pub name: String,
68
69 #[serde(rename = "value")]
70 pub value: Option<String>,
71}