use std::fmt;
use serde::{Serialize, Deserialize};
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LabelList {
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<Vec<Label>>,
}
impl fmt::Display for LabelList {
fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
let json = serde_json::to_string_pretty(&self)
.unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
write!(f, "{}", json)
}
}
impl LabelList {
pub fn new() -> Self {
Self { ..Default::default() }
}
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LabelInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<Vec<Label>>,
}
impl fmt::Display for LabelInfo {
fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
let json = serde_json::to_string_pretty(&self)
.unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
write!(f, "{}", json)
}
}
impl LabelInfo {
pub fn new() -> Self {
Self { ..Default::default() }
}
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Label {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub revision_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fields: Option<serde_json::Map<String, serde_json::Value>>,
}
impl fmt::Display for Label {
fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
let json = serde_json::to_string_pretty(&self)
.unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
write!(f, "{}", json)
}
}
impl Label {
pub fn new() -> Self {
Self { ..Default::default() }
}
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[doc(hidden)]
pub struct ModifyLabelsRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub label_modifications: Option<Vec<LabelModification>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
}
impl ModifyLabelsRequest {
pub fn new() -> Self {
Self { ..Default::default() }
}
pub fn from( label_modifications: &[LabelModification] ) -> Self {
Self {
label_modifications: Some( label_modifications.to_vec() ),
..Default::default()
}
}
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LabelModification {
#[serde(skip_serializing_if = "Option::is_none")]
pub label_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub field_modifications: Option<Vec<FieldModification>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub remove_label: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
}
impl fmt::Display for LabelModification {
fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
let json = serde_json::to_string_pretty(&self)
.unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
write!(f, "{}", json)
}
}
impl LabelModification {
pub fn new() -> Self {
Self { ..Default::default() }
}
pub fn from<T: AsRef<str>> ( id: T, field_modifications: &[FieldModification] ) -> Self {
Self {
label_id: Some( id.as_ref().to_string() ),
field_modifications: Some( field_modifications.to_vec() ),
..Default::default()
}
}
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FieldModification {
#[serde(skip_serializing_if = "Option::is_none")]
pub field_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub set_date_values: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub set_text_values: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub set_selection_values: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub set_integer_values: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub set_user_values: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unset_values: Option<bool>,
}
impl fmt::Display for FieldModification {
fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
let json = serde_json::to_string_pretty(&self)
.unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
write!(f, "{}", json)
}
}
impl FieldModification {
pub fn new() -> Self {
Self { ..Default::default() }
}
}