// @generated by jacquard-lexicon. DO NOT EDIT. // // Lexicon: tools.ozone.queue.defs // // This file was automatically generated from Lexicon schemas. // Any manual changes will be overwritten on the next regeneration. //! Generated bindings for the `tools.ozone.queue` Lexicon namespace/module. pub mod assign_moderator; pub mod create_queue; pub mod delete_queue; pub mod get_assignments; pub mod list_queues; pub mod route_reports; pub mod unassign_moderator; pub mod update_queue; #[allow(unused_imports)] use alloc::collections::BTreeMap; #[allow(unused_imports)] use core::marker::PhantomData; use jacquard_common::{CowStr, BosStr, DefaultStr, FromStaticStr}; #[allow(unused_imports)] use jacquard_common::deps::codegen::unicode_segmentation::UnicodeSegmentation; use jacquard_common::deps::smol_str::SmolStr; use jacquard_common::types::string::{Did, Nsid, Datetime}; use jacquard_common::types::value::Data; use jacquard_derive::IntoStatic; use jacquard_lexicon::lexicon::LexiconDoc; use jacquard_lexicon::schema::LexiconSchema; #[allow(unused_imports)] use jacquard_lexicon::validation::{ConstraintError, ValidationPath}; use serde::{Serialize, Deserialize}; use crate::tools_ozone::team::Member; use crate::tools_ozone::queue; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)] #[serde(rename_all = "camelCase", bound(deserialize = "S: Deserialize<'de> + BosStr"))] pub struct AssignmentView { pub did: Did, #[serde(skip_serializing_if = "Option::is_none")] pub end_at: Option, pub id: i64, ///The moderator assigned to this queue #[serde(skip_serializing_if = "Option::is_none")] pub moderator: Option>, pub queue: queue::QueueView, pub start_at: Datetime, #[serde(flatten, default, skip_serializing_if = "Option::is_none")] pub extra_data: Option>>, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)] #[serde(rename_all = "camelCase", bound(deserialize = "S: Deserialize<'de> + BosStr"))] pub struct QueueStats { ///Number of closures whose last report action is not label, tag, or takedown. #[serde(skip_serializing_if = "Option::is_none")] pub acknowledged_count: Option, ///Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer. #[serde(skip_serializing_if = "Option::is_none")] pub action_rate: Option, ///Number of closures whose last report action is label, tag, or takedown. #[serde(skip_serializing_if = "Option::is_none")] pub actioned_count: Option, ///Sum of report assignment-to-close seconds. #[serde(skip_serializing_if = "Option::is_none")] pub aht_duration_sec: Option, ///Number of assigned closed-report samples in ahtDurationSec. #[serde(skip_serializing_if = "Option::is_none")] pub aht_sample_count: Option, ///Average handling time in seconds from report assignment to close. #[serde(skip_serializing_if = "Option::is_none")] pub avg_handling_time_sec: Option, ///Average resolution time in seconds from report creation to close. #[serde(skip_serializing_if = "Option::is_none")] pub avg_resolution_time_sec: Option, ///Number of reports whose current closure falls within this UTC calendar day. #[serde(skip_serializing_if = "Option::is_none")] pub closed_count: Option, ///Reports whose closure meets their closure target. #[serde(skip_serializing_if = "Option::is_none")] pub closure_target_met_count: Option, ///Percent of reports meeting their closure target. #[serde(skip_serializing_if = "Option::is_none")] pub closure_target_met_rate: Option, ///Reports whose closure exceeds their closure target. #[serde(skip_serializing_if = "Option::is_none")] pub closure_target_missed_count: Option, ///Unmuted pending reports past their closure target. #[serde(skip_serializing_if = "Option::is_none")] pub closure_target_overdue_count: Option, ///Number of report escalation events during this UTC calendar day. #[serde(skip_serializing_if = "Option::is_none")] pub escalated_count: Option, ///Reports received in this queue during this UTC calendar day. #[serde(skip_serializing_if = "Option::is_none")] pub inbound_count: Option, ///Closures whose last report action is a label event. #[serde(skip_serializing_if = "Option::is_none")] pub label_action_count: Option, ///When these statistics were last computed. #[serde(skip_serializing_if = "Option::is_none")] pub last_updated: Option, ///Number of unmuted reports currently not closed. #[serde(skip_serializing_if = "Option::is_none")] pub pending_count: Option, ///Sum of report creation-to-close seconds. #[serde(skip_serializing_if = "Option::is_none")] pub resolution_duration_sec: Option, ///Number of closed-report samples in resolutionDurationSec. #[serde(skip_serializing_if = "Option::is_none")] pub resolution_sample_count: Option, ///Closures whose last report action is a tag event. #[serde(skip_serializing_if = "Option::is_none")] pub tag_action_count: Option, ///Closures whose last report action is a takedown event. #[serde(skip_serializing_if = "Option::is_none")] pub takedown_action_count: Option, #[serde(flatten, default, skip_serializing_if = "Option::is_none")] pub extra_data: Option>>, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)] #[serde(rename_all = "camelCase", bound(deserialize = "S: Deserialize<'de> + BosStr"))] pub struct QueueView { ///Match tags on the account that is being reported against. For record subjects, use the author account. Match any listed tag. #[serde(skip_serializing_if = "Option::is_none")] pub account_tags: Option>, ///Collection name for record subjects. Omit to accept every collection. #[serde(skip_serializing_if = "Option::is_none")] pub collection: Option>, pub created_at: Datetime, ///DID of moderator who created this queue pub created_by: Did, ///When the queue was deleted, if applicable #[serde(skip_serializing_if = "Option::is_none")] pub deleted_at: Option, ///Optional description of the queue #[serde(skip_serializing_if = "Option::is_none")] pub description: Option, ///Whether this queue is currently active pub enabled: bool, ///Queue ID pub id: i64, ///Display name of the queue pub name: S, ///Labels recommended for this queue and used as a fallback when routing label appeals #[serde(skip_serializing_if = "Option::is_none")] pub recommended_labels: Option>, ///Policy keys recommended when actioning reports in this queue #[serde(skip_serializing_if = "Option::is_none")] pub recommended_policies: Option>, ///Report reason types this queue accepts (fully qualified NSIDs) #[serde(skip_serializing_if = "Option::is_none")] pub report_types: Option>, ///Match any listed tag on the account submitting the report. #[serde(skip_serializing_if = "Option::is_none")] pub reporter_tags: Option>, ///Statistics about this queue pub stats: queue::QueueStats, ///Admins can always list this queue and browse its reports. Other roles require an active queue assignment. Individual report and moderation event access is unchanged. #[serde(skip_serializing_if = "Option::is_none")] pub strict_access: Option, ///Subject types this queue accepts. #[serde(skip_serializing_if = "Option::is_none")] pub subject_types: Option>, pub updated_at: Datetime, #[serde(flatten, default, skip_serializing_if = "Option::is_none")] pub extra_data: Option>>, } impl LexiconSchema for AssignmentView { fn nsid() -> &'static str { "tools.ozone.queue.defs" } fn def_name() -> &'static str { "assignmentView" } fn lexicon_doc() -> LexiconDoc<'static> { lexicon_doc_tools_ozone_queue_defs() } fn validate(&self) -> Result<(), ConstraintError> { Ok(()) } } impl LexiconSchema for QueueStats { fn nsid() -> &'static str { "tools.ozone.queue.defs" } fn def_name() -> &'static str { "queueStats" } fn lexicon_doc() -> LexiconDoc<'static> { lexicon_doc_tools_ozone_queue_defs() } fn validate(&self) -> Result<(), ConstraintError> { if let Some(ref value) = self.closure_target_met_count { if *value < 0i64 { return Err(ConstraintError::Minimum { path: ValidationPath::from_field("closure_target_met_count"), min: 0i64, actual: *value, }); } } if let Some(ref value) = self.closure_target_met_rate { if *value > 100i64 { return Err(ConstraintError::Maximum { path: ValidationPath::from_field("closure_target_met_rate"), max: 100i64, actual: *value, }); } } if let Some(ref value) = self.closure_target_met_rate { if *value < 0i64 { return Err(ConstraintError::Minimum { path: ValidationPath::from_field("closure_target_met_rate"), min: 0i64, actual: *value, }); } } if let Some(ref value) = self.closure_target_missed_count { if *value < 0i64 { return Err(ConstraintError::Minimum { path: ValidationPath::from_field("closure_target_missed_count"), min: 0i64, actual: *value, }); } } if let Some(ref value) = self.closure_target_overdue_count { if *value < 0i64 { return Err(ConstraintError::Minimum { path: ValidationPath::from_field("closure_target_overdue_count"), min: 0i64, actual: *value, }); } } Ok(()) } } impl LexiconSchema for QueueView { fn nsid() -> &'static str { "tools.ozone.queue.defs" } fn def_name() -> &'static str { "queueView" } fn lexicon_doc() -> LexiconDoc<'static> { lexicon_doc_tools_ozone_queue_defs() } fn validate(&self) -> Result<(), ConstraintError> { if let Some(ref value) = self.account_tags { #[allow(unused_comparisons)] if value.len() > 25usize { return Err(ConstraintError::MaxLength { path: ValidationPath::from_field("account_tags"), max: 25usize, actual: value.len(), }); } } if let Some(values) = &self.account_tags { for value in values { #[allow(unused_comparisons)] if ::len(value.as_ref()) < 1usize { return Err(ConstraintError::MinLength { path: ValidationPath::from_field("account_tags"), min: 1usize, actual: ::len(value.as_ref()), }); } } } if let Some(ref value) = self.reporter_tags { #[allow(unused_comparisons)] if value.len() > 25usize { return Err(ConstraintError::MaxLength { path: ValidationPath::from_field("reporter_tags"), max: 25usize, actual: value.len(), }); } } if let Some(values) = &self.reporter_tags { for value in values { #[allow(unused_comparisons)] if ::len(value.as_ref()) < 1usize { return Err(ConstraintError::MinLength { path: ValidationPath::from_field("reporter_tags"), min: 1usize, actual: ::len(value.as_ref()), }); } } } Ok(()) } } pub mod assignment_view_state { pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; #[allow(unused)] use ::core::marker::PhantomData; mod sealed { pub trait Sealed {} } /// State trait tracking which required fields have been set pub trait State: sealed::Sealed { type Did; type Id; type Queue; type StartAt; } /// Empty state - all required fields are unset pub struct Empty(()); impl sealed::Sealed for Empty {} impl State for Empty { type Did = Unset; type Id = Unset; type Queue = Unset; type StartAt = Unset; } ///State transition - sets the `did` field to Set pub struct SetDid(PhantomData St>); impl sealed::Sealed for SetDid {} impl State for SetDid { type Did = Set; type Id = St::Id; type Queue = St::Queue; type StartAt = St::StartAt; } ///State transition - sets the `id` field to Set pub struct SetId(PhantomData St>); impl sealed::Sealed for SetId {} impl State for SetId { type Did = St::Did; type Id = Set; type Queue = St::Queue; type StartAt = St::StartAt; } ///State transition - sets the `queue` field to Set pub struct SetQueue(PhantomData St>); impl sealed::Sealed for SetQueue {} impl State for SetQueue { type Did = St::Did; type Id = St::Id; type Queue = Set; type StartAt = St::StartAt; } ///State transition - sets the `start_at` field to Set pub struct SetStartAt(PhantomData St>); impl sealed::Sealed for SetStartAt {} impl State for SetStartAt { type Did = St::Did; type Id = St::Id; type Queue = St::Queue; type StartAt = Set; } /// Marker types for field names #[allow(non_camel_case_types)] pub mod members { ///Marker type for the `did` field pub struct did(()); ///Marker type for the `id` field pub struct id(()); ///Marker type for the `queue` field pub struct queue(()); ///Marker type for the `start_at` field pub struct start_at(()); } } /// Builder for constructing an instance of this type. pub struct AssignmentViewBuilder< St: assignment_view_state::State, S: BosStr = DefaultStr, > { _state: PhantomData St>, _fields: ( Option>, Option, Option, Option>, Option>, Option, ), _type: PhantomData S>, } impl AssignmentView { /// Create a new builder for this type, using the default string type (DefaultStr = SmolStr) if needed pub fn new() -> AssignmentViewBuilder { AssignmentViewBuilder::new() } } impl AssignmentView { /// Create a new builder for this type pub fn builder() -> AssignmentViewBuilder { AssignmentViewBuilder::builder() } } impl AssignmentViewBuilder { /// Create a new builder with all fields unset, using the default string type, if needed pub fn new() -> Self { AssignmentViewBuilder { _state: PhantomData, _fields: (None, None, None, None, None, None), _type: PhantomData, } } } impl AssignmentViewBuilder { /// Create a new builder with all fields unset pub fn builder() -> Self { AssignmentViewBuilder { _state: PhantomData, _fields: (None, None, None, None, None, None), _type: PhantomData, } } } impl AssignmentViewBuilder where St: assignment_view_state::State, St::Did: assignment_view_state::IsUnset, { /// Set the `did` field (required) pub fn did( mut self, value: impl Into>, ) -> AssignmentViewBuilder, S> { self._fields.0 = Option::Some(value.into()); AssignmentViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl AssignmentViewBuilder { /// Set the `endAt` field (optional) pub fn end_at(mut self, value: impl Into>) -> Self { self._fields.1 = value.into(); self } /// Set the `endAt` field to an Option value (optional) pub fn maybe_end_at(mut self, value: Option) -> Self { self._fields.1 = value; self } } impl AssignmentViewBuilder where St: assignment_view_state::State, St::Id: assignment_view_state::IsUnset, { /// Set the `id` field (required) pub fn id( mut self, value: impl Into, ) -> AssignmentViewBuilder, S> { self._fields.2 = Option::Some(value.into()); AssignmentViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl AssignmentViewBuilder { /// Set the `moderator` field (optional) pub fn moderator(mut self, value: impl Into>>) -> Self { self._fields.3 = value.into(); self } /// Set the `moderator` field to an Option value (optional) pub fn maybe_moderator(mut self, value: Option>) -> Self { self._fields.3 = value; self } } impl AssignmentViewBuilder where St: assignment_view_state::State, St::Queue: assignment_view_state::IsUnset, { /// Set the `queue` field (required) pub fn queue( mut self, value: impl Into>, ) -> AssignmentViewBuilder, S> { self._fields.4 = Option::Some(value.into()); AssignmentViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl AssignmentViewBuilder where St: assignment_view_state::State, St::StartAt: assignment_view_state::IsUnset, { /// Set the `startAt` field (required) pub fn start_at( mut self, value: impl Into, ) -> AssignmentViewBuilder, S> { self._fields.5 = Option::Some(value.into()); AssignmentViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl AssignmentViewBuilder where St: assignment_view_state::State, St::Did: assignment_view_state::IsSet, St::Id: assignment_view_state::IsSet, St::Queue: assignment_view_state::IsSet, St::StartAt: assignment_view_state::IsSet, { /// Build the final struct. pub fn build(self) -> AssignmentView { AssignmentView { did: self._fields.0.unwrap(), end_at: self._fields.1, id: self._fields.2.unwrap(), moderator: self._fields.3, queue: self._fields.4.unwrap(), start_at: self._fields.5.unwrap(), extra_data: Default::default(), } } /// Build the final struct with custom extra_data. pub fn build_with_data( self, extra_data: BTreeMap>, ) -> AssignmentView { AssignmentView { did: self._fields.0.unwrap(), end_at: self._fields.1, id: self._fields.2.unwrap(), moderator: self._fields.3, queue: self._fields.4.unwrap(), start_at: self._fields.5.unwrap(), extra_data: Some(extra_data), } } } fn lexicon_doc_tools_ozone_queue_defs() -> LexiconDoc<'static> { #[allow(unused_imports)] use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType}; use jacquard_lexicon::lexicon::*; use alloc::collections::BTreeMap; LexiconDoc { lexicon: Lexicon::Lexicon1, id: CowStr::new_static("tools.ozone.queue.defs"), defs: { let mut map = BTreeMap::new(); map.insert( SmolStr::new_static("assignmentView"), LexUserType::Object(LexObject { required: Some( vec![ SmolStr::new_static("id"), SmolStr::new_static("did"), SmolStr::new_static("queue"), SmolStr::new_static("startAt") ], ), properties: { #[allow(unused_mut)] let mut map = BTreeMap::new(); map.insert( SmolStr::new_static("did"), LexObjectProperty::String(LexString { format: Some(LexStringFormat::Did), ..Default::default() }), ); map.insert( SmolStr::new_static("endAt"), LexObjectProperty::String(LexString { format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map.insert( SmolStr::new_static("id"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("moderator"), LexObjectProperty::Ref(LexRef { r#ref: CowStr::new_static("tools.ozone.team.defs#member"), ..Default::default() }), ); map.insert( SmolStr::new_static("queue"), LexObjectProperty::Ref(LexRef { r#ref: CowStr::new_static("#queueView"), ..Default::default() }), ); map.insert( SmolStr::new_static("startAt"), LexObjectProperty::String(LexString { format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map }, ..Default::default() }), ); map.insert( SmolStr::new_static("queueStats"), LexUserType::Object(LexObject { required: Some(vec![]), properties: { #[allow(unused_mut)] let mut map = BTreeMap::new(); map.insert( SmolStr::new_static("acknowledgedCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("actionRate"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("actionedCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("ahtDurationSec"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("ahtSampleCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("avgHandlingTimeSec"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("avgResolutionTimeSec"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("closedCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("closureTargetMetCount"), LexObjectProperty::Integer(LexInteger { minimum: Some(0i64), ..Default::default() }), ); map.insert( SmolStr::new_static("closureTargetMetRate"), LexObjectProperty::Integer(LexInteger { minimum: Some(0i64), maximum: Some(100i64), ..Default::default() }), ); map.insert( SmolStr::new_static("closureTargetMissedCount"), LexObjectProperty::Integer(LexInteger { minimum: Some(0i64), ..Default::default() }), ); map.insert( SmolStr::new_static("closureTargetOverdueCount"), LexObjectProperty::Integer(LexInteger { minimum: Some(0i64), ..Default::default() }), ); map.insert( SmolStr::new_static("escalatedCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("inboundCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("labelActionCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("lastUpdated"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static( "When these statistics were last computed.", ), ), format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map.insert( SmolStr::new_static("pendingCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("resolutionDurationSec"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("resolutionSampleCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("tagActionCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("takedownActionCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map }, ..Default::default() }), ); map.insert( SmolStr::new_static("queueView"), LexUserType::Object(LexObject { required: Some( vec![ SmolStr::new_static("id"), SmolStr::new_static("name"), SmolStr::new_static("createdBy"), SmolStr::new_static("createdAt"), SmolStr::new_static("updatedAt"), SmolStr::new_static("enabled"), SmolStr::new_static("stats") ], ), properties: { #[allow(unused_mut)] let mut map = BTreeMap::new(); map.insert( SmolStr::new_static("accountTags"), LexObjectProperty::Array(LexArray { description: Some( CowStr::new_static( "Match tags on the account that is being reported against. For record subjects, use the author account. Match any listed tag.", ), ), items: LexArrayItem::String(LexString { min_length: Some(1usize), ..Default::default() }), max_length: Some(25usize), ..Default::default() }), ); map.insert( SmolStr::new_static("collection"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static( "Collection name for record subjects. Omit to accept every collection.", ), ), format: Some(LexStringFormat::Nsid), ..Default::default() }), ); map.insert( SmolStr::new_static("createdAt"), LexObjectProperty::String(LexString { format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map.insert( SmolStr::new_static("createdBy"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static( "DID of moderator who created this queue", ), ), format: Some(LexStringFormat::Did), ..Default::default() }), ); map.insert( SmolStr::new_static("deletedAt"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static( "When the queue was deleted, if applicable", ), ), format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map.insert( SmolStr::new_static("description"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static("Optional description of the queue"), ), ..Default::default() }), ); map.insert( SmolStr::new_static("enabled"), LexObjectProperty::Boolean(LexBoolean { ..Default::default() }), ); map.insert( SmolStr::new_static("id"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("name"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static("Display name of the queue"), ), ..Default::default() }), ); map.insert( SmolStr::new_static("recommendedLabels"), LexObjectProperty::Array(LexArray { description: Some( CowStr::new_static( "Labels recommended for this queue and used as a fallback when routing label appeals", ), ), items: LexArrayItem::String(LexString { ..Default::default() }), ..Default::default() }), ); map.insert( SmolStr::new_static("recommendedPolicies"), LexObjectProperty::Array(LexArray { description: Some( CowStr::new_static( "Policy keys recommended when actioning reports in this queue", ), ), items: LexArrayItem::String(LexString { ..Default::default() }), ..Default::default() }), ); map.insert( SmolStr::new_static("reportTypes"), LexObjectProperty::Array(LexArray { description: Some( CowStr::new_static( "Report reason types this queue accepts (fully qualified NSIDs)", ), ), items: LexArrayItem::String(LexString { ..Default::default() }), ..Default::default() }), ); map.insert( SmolStr::new_static("reporterTags"), LexObjectProperty::Array(LexArray { description: Some( CowStr::new_static( "Match any listed tag on the account submitting the report.", ), ), items: LexArrayItem::String(LexString { min_length: Some(1usize), ..Default::default() }), max_length: Some(25usize), ..Default::default() }), ); map.insert( SmolStr::new_static("stats"), LexObjectProperty::Ref(LexRef { r#ref: CowStr::new_static("#queueStats"), ..Default::default() }), ); map.insert( SmolStr::new_static("strictAccess"), LexObjectProperty::Boolean(LexBoolean { ..Default::default() }), ); map.insert( SmolStr::new_static("subjectTypes"), LexObjectProperty::Array(LexArray { description: Some( CowStr::new_static("Subject types this queue accepts."), ), items: LexArrayItem::String(LexString { ..Default::default() }), ..Default::default() }), ); map.insert( SmolStr::new_static("updatedAt"), LexObjectProperty::String(LexString { format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map }, ..Default::default() }), ); map }, ..Default::default() } } pub mod queue_view_state { pub use crate::builder_types::{Set, Unset, IsSet, IsUnset}; #[allow(unused)] use ::core::marker::PhantomData; mod sealed { pub trait Sealed {} } /// State trait tracking which required fields have been set pub trait State: sealed::Sealed { type CreatedAt; type CreatedBy; type Enabled; type Id; type Name; type Stats; type UpdatedAt; } /// Empty state - all required fields are unset pub struct Empty(()); impl sealed::Sealed for Empty {} impl State for Empty { type CreatedAt = Unset; type CreatedBy = Unset; type Enabled = Unset; type Id = Unset; type Name = Unset; type Stats = Unset; type UpdatedAt = Unset; } ///State transition - sets the `created_at` field to Set pub struct SetCreatedAt(PhantomData St>); impl sealed::Sealed for SetCreatedAt {} impl State for SetCreatedAt { type CreatedAt = Set; type CreatedBy = St::CreatedBy; type Enabled = St::Enabled; type Id = St::Id; type Name = St::Name; type Stats = St::Stats; type UpdatedAt = St::UpdatedAt; } ///State transition - sets the `created_by` field to Set pub struct SetCreatedBy(PhantomData St>); impl sealed::Sealed for SetCreatedBy {} impl State for SetCreatedBy { type CreatedAt = St::CreatedAt; type CreatedBy = Set; type Enabled = St::Enabled; type Id = St::Id; type Name = St::Name; type Stats = St::Stats; type UpdatedAt = St::UpdatedAt; } ///State transition - sets the `enabled` field to Set pub struct SetEnabled(PhantomData St>); impl sealed::Sealed for SetEnabled {} impl State for SetEnabled { type CreatedAt = St::CreatedAt; type CreatedBy = St::CreatedBy; type Enabled = Set; type Id = St::Id; type Name = St::Name; type Stats = St::Stats; type UpdatedAt = St::UpdatedAt; } ///State transition - sets the `id` field to Set pub struct SetId(PhantomData St>); impl sealed::Sealed for SetId {} impl State for SetId { type CreatedAt = St::CreatedAt; type CreatedBy = St::CreatedBy; type Enabled = St::Enabled; type Id = Set; type Name = St::Name; type Stats = St::Stats; type UpdatedAt = St::UpdatedAt; } ///State transition - sets the `name` field to Set pub struct SetName(PhantomData St>); impl sealed::Sealed for SetName {} impl State for SetName { type CreatedAt = St::CreatedAt; type CreatedBy = St::CreatedBy; type Enabled = St::Enabled; type Id = St::Id; type Name = Set; type Stats = St::Stats; type UpdatedAt = St::UpdatedAt; } ///State transition - sets the `stats` field to Set pub struct SetStats(PhantomData St>); impl sealed::Sealed for SetStats {} impl State for SetStats { type CreatedAt = St::CreatedAt; type CreatedBy = St::CreatedBy; type Enabled = St::Enabled; type Id = St::Id; type Name = St::Name; type Stats = Set; type UpdatedAt = St::UpdatedAt; } ///State transition - sets the `updated_at` field to Set pub struct SetUpdatedAt(PhantomData St>); impl sealed::Sealed for SetUpdatedAt {} impl State for SetUpdatedAt { type CreatedAt = St::CreatedAt; type CreatedBy = St::CreatedBy; type Enabled = St::Enabled; type Id = St::Id; type Name = St::Name; type Stats = St::Stats; type UpdatedAt = Set; } /// Marker types for field names #[allow(non_camel_case_types)] pub mod members { ///Marker type for the `created_at` field pub struct created_at(()); ///Marker type for the `created_by` field pub struct created_by(()); ///Marker type for the `enabled` field pub struct enabled(()); ///Marker type for the `id` field pub struct id(()); ///Marker type for the `name` field pub struct name(()); ///Marker type for the `stats` field pub struct stats(()); ///Marker type for the `updated_at` field pub struct updated_at(()); } } /// Builder for constructing an instance of this type. pub struct QueueViewBuilder { _state: PhantomData St>, _fields: ( Option>, Option>, Option, Option>, Option, Option, Option, Option, Option, Option>, Option>, Option>, Option>, Option>, Option, Option>, Option, ), _type: PhantomData S>, } impl QueueView { /// Create a new builder for this type, using the default string type (DefaultStr = SmolStr) if needed pub fn new() -> QueueViewBuilder { QueueViewBuilder::new() } } impl QueueView { /// Create a new builder for this type pub fn builder() -> QueueViewBuilder { QueueViewBuilder::builder() } } impl QueueViewBuilder { /// Create a new builder with all fields unset, using the default string type, if needed pub fn new() -> Self { QueueViewBuilder { _state: PhantomData, _fields: ( None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, ), _type: PhantomData, } } } impl QueueViewBuilder { /// Create a new builder with all fields unset pub fn builder() -> Self { QueueViewBuilder { _state: PhantomData, _fields: ( None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, ), _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `accountTags` field (optional) pub fn account_tags(mut self, value: impl Into>>) -> Self { self._fields.0 = value.into(); self } /// Set the `accountTags` field to an Option value (optional) pub fn maybe_account_tags(mut self, value: Option>) -> Self { self._fields.0 = value; self } } impl QueueViewBuilder { /// Set the `collection` field (optional) pub fn collection(mut self, value: impl Into>>) -> Self { self._fields.1 = value.into(); self } /// Set the `collection` field to an Option value (optional) pub fn maybe_collection(mut self, value: Option>) -> Self { self._fields.1 = value; self } } impl QueueViewBuilder where St: queue_view_state::State, St::CreatedAt: queue_view_state::IsUnset, { /// Set the `createdAt` field (required) pub fn created_at( mut self, value: impl Into, ) -> QueueViewBuilder, S> { self._fields.2 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder where St: queue_view_state::State, St::CreatedBy: queue_view_state::IsUnset, { /// Set the `createdBy` field (required) pub fn created_by( mut self, value: impl Into>, ) -> QueueViewBuilder, S> { self._fields.3 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `deletedAt` field (optional) pub fn deleted_at(mut self, value: impl Into>) -> Self { self._fields.4 = value.into(); self } /// Set the `deletedAt` field to an Option value (optional) pub fn maybe_deleted_at(mut self, value: Option) -> Self { self._fields.4 = value; self } } impl QueueViewBuilder { /// Set the `description` field (optional) pub fn description(mut self, value: impl Into>) -> Self { self._fields.5 = value.into(); self } /// Set the `description` field to an Option value (optional) pub fn maybe_description(mut self, value: Option) -> Self { self._fields.5 = value; self } } impl QueueViewBuilder where St: queue_view_state::State, St::Enabled: queue_view_state::IsUnset, { /// Set the `enabled` field (required) pub fn enabled( mut self, value: impl Into, ) -> QueueViewBuilder, S> { self._fields.6 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder where St: queue_view_state::State, St::Id: queue_view_state::IsUnset, { /// Set the `id` field (required) pub fn id( mut self, value: impl Into, ) -> QueueViewBuilder, S> { self._fields.7 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder where St: queue_view_state::State, St::Name: queue_view_state::IsUnset, { /// Set the `name` field (required) pub fn name( mut self, value: impl Into, ) -> QueueViewBuilder, S> { self._fields.8 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `recommendedLabels` field (optional) pub fn recommended_labels(mut self, value: impl Into>>) -> Self { self._fields.9 = value.into(); self } /// Set the `recommendedLabels` field to an Option value (optional) pub fn maybe_recommended_labels(mut self, value: Option>) -> Self { self._fields.9 = value; self } } impl QueueViewBuilder { /// Set the `recommendedPolicies` field (optional) pub fn recommended_policies(mut self, value: impl Into>>) -> Self { self._fields.10 = value.into(); self } /// Set the `recommendedPolicies` field to an Option value (optional) pub fn maybe_recommended_policies(mut self, value: Option>) -> Self { self._fields.10 = value; self } } impl QueueViewBuilder { /// Set the `reportTypes` field (optional) pub fn report_types(mut self, value: impl Into>>) -> Self { self._fields.11 = value.into(); self } /// Set the `reportTypes` field to an Option value (optional) pub fn maybe_report_types(mut self, value: Option>) -> Self { self._fields.11 = value; self } } impl QueueViewBuilder { /// Set the `reporterTags` field (optional) pub fn reporter_tags(mut self, value: impl Into>>) -> Self { self._fields.12 = value.into(); self } /// Set the `reporterTags` field to an Option value (optional) pub fn maybe_reporter_tags(mut self, value: Option>) -> Self { self._fields.12 = value; self } } impl QueueViewBuilder where St: queue_view_state::State, St::Stats: queue_view_state::IsUnset, { /// Set the `stats` field (required) pub fn stats( mut self, value: impl Into>, ) -> QueueViewBuilder, S> { self._fields.13 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `strictAccess` field (optional) pub fn strict_access(mut self, value: impl Into>) -> Self { self._fields.14 = value.into(); self } /// Set the `strictAccess` field to an Option value (optional) pub fn maybe_strict_access(mut self, value: Option) -> Self { self._fields.14 = value; self } } impl QueueViewBuilder { /// Set the `subjectTypes` field (optional) pub fn subject_types(mut self, value: impl Into>>) -> Self { self._fields.15 = value.into(); self } /// Set the `subjectTypes` field to an Option value (optional) pub fn maybe_subject_types(mut self, value: Option>) -> Self { self._fields.15 = value; self } } impl QueueViewBuilder where St: queue_view_state::State, St::UpdatedAt: queue_view_state::IsUnset, { /// Set the `updatedAt` field (required) pub fn updated_at( mut self, value: impl Into, ) -> QueueViewBuilder, S> { self._fields.16 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder where St: queue_view_state::State, St::CreatedAt: queue_view_state::IsSet, St::CreatedBy: queue_view_state::IsSet, St::Enabled: queue_view_state::IsSet, St::Id: queue_view_state::IsSet, St::Name: queue_view_state::IsSet, St::Stats: queue_view_state::IsSet, St::UpdatedAt: queue_view_state::IsSet, { /// Build the final struct. pub fn build(self) -> QueueView { QueueView { account_tags: self._fields.0, collection: self._fields.1, created_at: self._fields.2.unwrap(), created_by: self._fields.3.unwrap(), deleted_at: self._fields.4, description: self._fields.5, enabled: self._fields.6.unwrap(), id: self._fields.7.unwrap(), name: self._fields.8.unwrap(), recommended_labels: self._fields.9, recommended_policies: self._fields.10, report_types: self._fields.11, reporter_tags: self._fields.12, stats: self._fields.13.unwrap(), strict_access: self._fields.14, subject_types: self._fields.15, updated_at: self._fields.16.unwrap(), extra_data: Default::default(), } } /// Build the final struct with custom extra_data. pub fn build_with_data( self, extra_data: BTreeMap>, ) -> QueueView { QueueView { account_tags: self._fields.0, collection: self._fields.1, created_at: self._fields.2.unwrap(), created_by: self._fields.3.unwrap(), deleted_at: self._fields.4, description: self._fields.5, enabled: self._fields.6.unwrap(), id: self._fields.7.unwrap(), name: self._fields.8.unwrap(), recommended_labels: self._fields.9, recommended_policies: self._fields.10, report_types: self._fields.11, reporter_tags: self._fields.12, stats: self._fields.13.unwrap(), strict_access: self._fields.14, subject_types: self._fields.15, updated_at: self._fields.16.unwrap(), extra_data: Some(extra_data), } } }