// @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::{BosStr, CowStr, 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::{Datetime, Did, Nsid}; use jacquard_common::types::value::Data; use jacquard_derive::IntoStatic; use jacquard_lexicon::lexicon::LexiconDoc; use jacquard_lexicon::schema::LexiconSchema; use crate::tools_ozone::queue; use crate::tools_ozone::team::Member; #[allow(unused_imports)] use jacquard_lexicon::validation::{ConstraintError, ValidationPath}; use serde::{Deserialize, Serialize}; #[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, deserialize_with = "deserialize_assignment_view_extra_data", 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 { /// Percentage of reports actioned (actionedCount / inboundCount * 100), rounded to nearest integer. Absent when inboundCount is 0. #[serde(skip_serializing_if = "Option::is_none")] pub action_rate: Option, /// Number of reports in 'closed' status #[serde(skip_serializing_if = "Option::is_none")] pub actioned_count: Option, /// Average time in seconds from report creation to close, for reports closed in this period. #[serde(skip_serializing_if = "Option::is_none")] pub avg_handling_time_sec: Option, /// Number of reports in 'escalated' status #[serde(skip_serializing_if = "Option::is_none")] pub escalated_count: Option, /// Reports received in this queue in the last 24 hours. #[serde(skip_serializing_if = "Option::is_none")] pub inbound_count: Option, /// When these statistics were last computed #[serde(skip_serializing_if = "Option::is_none")] pub last_updated: Option, /// Number of reports in 'open' status #[serde(skip_serializing_if = "Option::is_none")] pub pending_count: Option, #[serde( flatten, default, deserialize_with = "deserialize_queue_stats_extra_data", 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 { /// Collection name for record subjects (e.g., 'app.bsky.feed.post') #[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, /// 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>, /// Statistics about this queue pub stats: queue::QueueStats, /// Subject types this queue accepts. #[serde(skip_serializing_if = "Option::is_none")] pub subject_types: Option>>, pub updated_at: Datetime, #[serde( flatten, default, deserialize_with = "deserialize_queue_view_extra_data", skip_serializing_if = "Option::is_none" )] pub extra_data: Option>>, } #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum QueueViewSubjectTypes { Account, Record, Message, Conversation, Other(S), } impl QueueViewSubjectTypes { pub fn as_str(&self) -> &str { match self { Self::Account => "account", Self::Record => "record", Self::Message => "message", Self::Conversation => "conversation", Self::Other(s) => s.as_ref(), } } /// Construct from a string-like value, matching known values. pub fn from_value(s: S) -> Self { match s.as_ref() { "account" => Self::Account, "record" => Self::Record, "message" => Self::Message, "conversation" => Self::Conversation, _ => Self::Other(s), } } } impl core::fmt::Display for QueueViewSubjectTypes { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{}", self.as_str()) } } impl AsRef for QueueViewSubjectTypes { fn as_ref(&self) -> &str { self.as_str() } } impl Serialize for QueueViewSubjectTypes { fn serialize(&self, serializer: Ser) -> Result where Ser: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de, S: Deserialize<'de> + BosStr> Deserialize<'de> for QueueViewSubjectTypes { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = S::deserialize(deserializer)?; Ok(Self::from_value(s)) } } impl Default for QueueViewSubjectTypes { fn default() -> Self { Self::Other(Default::default()) } } impl jacquard_common::IntoStatic for QueueViewSubjectTypes where S: BosStr + jacquard_common::IntoStatic, S::Output: BosStr, { type Output = QueueViewSubjectTypes; fn into_static(self) -> Self::Output { match self { QueueViewSubjectTypes::Account => QueueViewSubjectTypes::Account, QueueViewSubjectTypes::Record => QueueViewSubjectTypes::Record, QueueViewSubjectTypes::Message => QueueViewSubjectTypes::Message, QueueViewSubjectTypes::Conversation => QueueViewSubjectTypes::Conversation, QueueViewSubjectTypes::Other(v) => QueueViewSubjectTypes::Other(v.into_static()), } } } 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> { 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> { Ok(()) } } fn deserialize_assignment_view_extra_data<'de, S, D>( deserializer: D, ) -> Result>>, D::Error> where S: BosStr + serde::Deserialize<'de>, D: serde::Deserializer<'de>, { let data = >> as serde::Deserialize<'de>>::deserialize(deserializer)?; Ok(data.filter(|extra_data| !extra_data.is_empty())) } pub mod assignment_view_state { pub use crate::builder_types::{IsSet, IsUnset, Set, Unset}; #[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 { _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> { use alloc::collections::BTreeMap; #[allow(unused_imports)] use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType}; use jacquard_lexicon::lexicon::*; 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("actionRate"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("actionedCount"), LexObjectProperty::Integer(LexInteger { ..Default::default() }), ); map.insert( SmolStr::new_static("avgHandlingTimeSec"), LexObjectProperty::Integer(LexInteger { ..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("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 }, ..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("collection"), LexObjectProperty::String(LexString { description: Some( CowStr::new_static( "Collection name for record subjects (e.g., 'app.bsky.feed.post')", ), ), 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("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("stats"), LexObjectProperty::Ref(LexRef { r#ref: CowStr::new_static("#queueStats"), ..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() } } fn deserialize_queue_stats_extra_data<'de, S, D>( deserializer: D, ) -> Result>>, D::Error> where S: BosStr + serde::Deserialize<'de>, D: serde::Deserializer<'de>, { let data = >> as serde::Deserialize<'de>>::deserialize(deserializer)?; Ok(data.filter(|extra_data| !extra_data.is_empty())) } fn deserialize_queue_view_extra_data<'de, S, D>( deserializer: D, ) -> Result>>, D::Error> where S: BosStr + serde::Deserialize<'de>, D: serde::Deserializer<'de>, { let data = >> as serde::Deserialize<'de>>::deserialize(deserializer)?; Ok(data.filter(|extra_data| !extra_data.is_empty())) } pub mod queue_view_state { pub use crate::builder_types::{IsSet, IsUnset, Set, Unset}; #[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, ), _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, ), _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, ), _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `collection` field (optional) pub fn collection(mut self, value: impl Into>>) -> Self { self._fields.0 = value.into(); self } /// Set the `collection` field to an Option value (optional) pub fn maybe_collection(mut self, value: Option>) -> Self { self._fields.0 = 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.1 = 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.2 = 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.3 = value.into(); self } /// Set the `deletedAt` field to an Option value (optional) pub fn maybe_deleted_at(mut self, value: Option) -> Self { self._fields.3 = value; self } } impl QueueViewBuilder { /// Set the `description` field (optional) pub fn description(mut self, value: impl Into>) -> Self { self._fields.4 = value.into(); self } /// Set the `description` field to an Option value (optional) pub fn maybe_description(mut self, value: Option) -> Self { self._fields.4 = 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.5 = 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.6 = 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.7 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `recommendedPolicies` field (optional) pub fn recommended_policies(mut self, value: impl Into>>) -> Self { self._fields.8 = value.into(); self } /// Set the `recommendedPolicies` field to an Option value (optional) pub fn maybe_recommended_policies(mut self, value: Option>) -> Self { self._fields.8 = value; self } } impl QueueViewBuilder { /// Set the `reportTypes` field (optional) pub fn report_types(mut self, value: impl Into>>) -> Self { self._fields.9 = value.into(); self } /// Set the `reportTypes` field to an Option value (optional) pub fn maybe_report_types(mut self, value: Option>) -> Self { self._fields.9 = 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.10 = Option::Some(value.into()); QueueViewBuilder { _state: PhantomData, _fields: self._fields, _type: PhantomData, } } } impl QueueViewBuilder { /// Set the `subjectTypes` field (optional) pub fn subject_types( mut self, value: impl Into>>>, ) -> Self { self._fields.11 = value.into(); self } /// Set the `subjectTypes` field to an Option value (optional) pub fn maybe_subject_types(mut self, value: Option>>) -> Self { self._fields.11 = 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.12 = 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 { collection: self._fields.0, created_at: self._fields.1.unwrap(), created_by: self._fields.2.unwrap(), deleted_at: self._fields.3, description: self._fields.4, enabled: self._fields.5.unwrap(), id: self._fields.6.unwrap(), name: self._fields.7.unwrap(), recommended_policies: self._fields.8, report_types: self._fields.9, stats: self._fields.10.unwrap(), subject_types: self._fields.11, updated_at: self._fields.12.unwrap(), extra_data: Default::default(), } } /// Build the final struct with custom extra_data. pub fn build_with_data(self, extra_data: BTreeMap>) -> QueueView { QueueView { collection: self._fields.0, created_at: self._fields.1.unwrap(), created_by: self._fields.2.unwrap(), deleted_at: self._fields.3, description: self._fields.4, enabled: self._fields.5.unwrap(), id: self._fields.6.unwrap(), name: self._fields.7.unwrap(), recommended_policies: self._fields.8, report_types: self._fields.9, stats: self._fields.10.unwrap(), subject_types: self._fields.11, updated_at: self._fields.12.unwrap(), extra_data: Some(extra_data), } } }