use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct OrgCustomProperty {
#[serde(rename = "property_name")]
pub property_name: String,
#[serde(rename = "value_type")]
pub value_type: ValueType,
#[serde(rename = "required", skip_serializing_if = "Option::is_none")]
pub required: Option<bool>,
#[serde(rename = "default_value", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub default_value: Option<Option<Box<models::OrgsCreateOrUpdateCustomPropertyRequestDefaultValue>>>,
#[serde(rename = "description", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub description: Option<Option<String>>,
#[serde(rename = "allowed_values", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub allowed_values: Option<Option<Vec<String>>>,
#[serde(rename = "values_editable_by", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub values_editable_by: Option<Option<ValuesEditableBy>>,
}
impl OrgCustomProperty {
pub fn new(property_name: String, value_type: ValueType) -> OrgCustomProperty {
OrgCustomProperty {
property_name,
value_type,
required: None,
default_value: None,
description: None,
allowed_values: None,
values_editable_by: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ValueType {
#[serde(rename = "string")]
String,
#[serde(rename = "single_select")]
SingleSelect,
}
impl Default for ValueType {
fn default() -> ValueType {
Self::String
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ValuesEditableBy {
#[serde(rename = "org_actors")]
Actors,
#[serde(rename = "org_and_repo_actors")]
AndRepoActors,
}
impl Default for ValuesEditableBy {
fn default() -> ValuesEditableBy {
Self::Actors
}
}