···9898 }
9999 }
100100 },
101101+ "accountStrike": {
102102+ "type": "object",
103103+ "description": "Strike information for an account",
104104+ "properties": {
105105+ "activeStrikeCount": {
106106+ "type": "integer",
107107+ "description": "Current number of active strikes (excluding expired strikes)"
108108+ },
109109+ "firstStrikeAt": {
110110+ "type": "string",
111111+ "description": "Timestamp of the first strike received",
112112+ "format": "datetime"
113113+ },
114114+ "lastStrikeAt": {
115115+ "type": "string",
116116+ "description": "Timestamp of the most recent strike received",
117117+ "format": "datetime"
118118+ },
119119+ "totalStrikeCount": {
120120+ "type": "integer",
121121+ "description": "Total number of strikes ever received (including expired strikes)"
122122+ }
123123+ }
124124+ },
101125 "ageAssuranceEvent": {
102126 "type": "object",
103127 "description": "Age assurance info coming directly from users. Only works on DID subjects.",
···302326 "type": "string",
303327 "description": "The content of the email sent to the user."
304328 },
329329+ "policies": {
330330+ "type": "array",
331331+ "description": "Names/Keywords of the policies that necessitated the email.",
332332+ "items": {
333333+ "type": "string"
334334+ },
335335+ "maxLength": 5
336336+ },
337337+ "severityLevel": {
338338+ "type": "string",
339339+ "description": "Severity level of the violation. Normally 'sev-1' that adds strike on repeat offense"
340340+ },
341341+ "strikeCount": {
342342+ "type": "integer",
343343+ "description": "Number of strikes to assign to the user for this violation. Normally 0 as an indicator of a warning and only added as a strike on a repeat offense."
344344+ },
345345+ "strikeExpiresAt": {
346346+ "type": "string",
347347+ "description": "When the strike should expire. If not provided, the strike never expires.",
348348+ "format": "datetime"
349349+ },
305350 "subjectLine": {
306351 "type": "string",
307352 "description": "The subject line of the email sent to the user."
···428473 "comment": {
429474 "type": "string",
430475 "description": "Describe reasoning behind the reversal."
476476+ },
477477+ "policies": {
478478+ "type": "array",
479479+ "description": "Names/Keywords of the policy infraction for which takedown is being reversed.",
480480+ "items": {
481481+ "type": "string"
482482+ },
483483+ "maxLength": 5
484484+ },
485485+ "severityLevel": {
486486+ "type": "string",
487487+ "description": "Severity level of the violation. Usually set from the last policy infraction's severity."
488488+ },
489489+ "strikeCount": {
490490+ "type": "integer",
491491+ "description": "Number of strikes to subtract from the user's strike count. Usually set from the last policy infraction's severity."
431492 }
432493 }
433494 },
···481542 "type": "string"
482543 },
483544 "maxLength": 5
545545+ },
546546+ "severityLevel": {
547547+ "type": "string",
548548+ "description": "Severity level of the violation (e.g., 'sev-0', 'sev-1', 'sev-2', etc.)."
549549+ },
550550+ "strikeCount": {
551551+ "type": "integer",
552552+ "description": "Number of strikes to assign to the user for this violation."
553553+ },
554554+ "strikeExpiresAt": {
555555+ "type": "string",
556556+ "description": "When the strike should expire. If not provided, the strike never expires.",
557557+ "format": "datetime"
484558 }
485559 }
486560 },
···12521326 "type": "ref",
12531327 "description": "Statistics related to the account subject",
12541328 "ref": "#accountStats"
13291329+ },
13301330+ "accountStrike": {
13311331+ "type": "ref",
13321332+ "description": "Strike information for the account (account-level only)",
13331333+ "ref": "#accountStrike"
12551334 },
12561335 "ageAssuranceState": {
12571336 "type": "string",
···112112 "type": "integer",
113113 "description": "If specified, only subjects that belong to an account that has at least this many reported records will be returned."
114114 },
115115+ "minStrikeCount": {
116116+ "type": "integer",
117117+ "description": "If specified, only subjects that belong to an account that has at least this many active strikes will be returned.",
118118+ "minimum": 1
119119+ },
115120 "minTakendownRecordsCount": {
116121 "type": "integer",
117122 "description": "If specified, only subjects that belong to an account that has at least this many taken down records will be returned."
···11+// @generated by jacquard-lexicon. DO NOT EDIT.
22+//
33+// This file was automatically generated from Lexicon schemas.
44+// Any manual changes will be overwritten on the next regeneration.
55+66+pub mod kidlisp;
77+pub mod mood;
88+pub mod painting;
99+pub mod piece;
1010+pub mod tape;
···11+// @generated by jacquard-lexicon. DO NOT EDIT.
22+//
33+// Lexicon: dev.fudgeu.experimental.atforumv1.feed.question
44+//
55+// This file was automatically generated from Lexicon schemas.
66+// Any manual changes will be overwritten on the next regeneration.
77+88+/// An initial question that starts a discussion
99+#[jacquard_derive::lexicon]
1010+#[derive(
1111+ serde::Serialize,
1212+ serde::Deserialize,
1313+ Debug,
1414+ Clone,
1515+ PartialEq,
1616+ Eq,
1717+ jacquard_derive::IntoStatic
1818+)]
1919+#[serde(rename_all = "camelCase")]
2020+pub struct Question<'a> {
2121+ #[serde(borrow)]
2222+ pub content: jacquard_common::CowStr<'a>,
2323+ pub created_at: jacquard_common::types::string::Datetime,
2424+ #[serde(borrow)]
2525+ pub forum: jacquard_common::types::ident::AtIdentifier<'a>,
2626+ pub is_open: bool,
2727+ #[serde(borrow)]
2828+ pub tags: Vec<jacquard_common::CowStr<'a>>,
2929+ #[serde(borrow)]
3030+ pub title: jacquard_common::CowStr<'a>,
3131+ #[serde(skip_serializing_if = "std::option::Option::is_none")]
3232+ pub updated_at: Option<jacquard_common::types::string::Datetime>,
3333+}
3434+3535+pub mod question_state {
3636+3737+ pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
3838+ #[allow(unused)]
3939+ use ::core::marker::PhantomData;
4040+ mod sealed {
4141+ pub trait Sealed {}
4242+ }
4343+ /// State trait tracking which required fields have been set
4444+ pub trait State: sealed::Sealed {
4545+ type Title;
4646+ type Content;
4747+ type CreatedAt;
4848+ type Forum;
4949+ type Tags;
5050+ type IsOpen;
5151+ }
5252+ /// Empty state - all required fields are unset
5353+ pub struct Empty(());
5454+ impl sealed::Sealed for Empty {}
5555+ impl State for Empty {
5656+ type Title = Unset;
5757+ type Content = Unset;
5858+ type CreatedAt = Unset;
5959+ type Forum = Unset;
6060+ type Tags = Unset;
6161+ type IsOpen = Unset;
6262+ }
6363+ ///State transition - sets the `title` field to Set
6464+ pub struct SetTitle<S: State = Empty>(PhantomData<fn() -> S>);
6565+ impl<S: State> sealed::Sealed for SetTitle<S> {}
6666+ impl<S: State> State for SetTitle<S> {
6767+ type Title = Set<members::title>;
6868+ type Content = S::Content;
6969+ type CreatedAt = S::CreatedAt;
7070+ type Forum = S::Forum;
7171+ type Tags = S::Tags;
7272+ type IsOpen = S::IsOpen;
7373+ }
7474+ ///State transition - sets the `content` field to Set
7575+ pub struct SetContent<S: State = Empty>(PhantomData<fn() -> S>);
7676+ impl<S: State> sealed::Sealed for SetContent<S> {}
7777+ impl<S: State> State for SetContent<S> {
7878+ type Title = S::Title;
7979+ type Content = Set<members::content>;
8080+ type CreatedAt = S::CreatedAt;
8181+ type Forum = S::Forum;
8282+ type Tags = S::Tags;
8383+ type IsOpen = S::IsOpen;
8484+ }
8585+ ///State transition - sets the `created_at` field to Set
8686+ pub struct SetCreatedAt<S: State = Empty>(PhantomData<fn() -> S>);
8787+ impl<S: State> sealed::Sealed for SetCreatedAt<S> {}
8888+ impl<S: State> State for SetCreatedAt<S> {
8989+ type Title = S::Title;
9090+ type Content = S::Content;
9191+ type CreatedAt = Set<members::created_at>;
9292+ type Forum = S::Forum;
9393+ type Tags = S::Tags;
9494+ type IsOpen = S::IsOpen;
9595+ }
9696+ ///State transition - sets the `forum` field to Set
9797+ pub struct SetForum<S: State = Empty>(PhantomData<fn() -> S>);
9898+ impl<S: State> sealed::Sealed for SetForum<S> {}
9999+ impl<S: State> State for SetForum<S> {
100100+ type Title = S::Title;
101101+ type Content = S::Content;
102102+ type CreatedAt = S::CreatedAt;
103103+ type Forum = Set<members::forum>;
104104+ type Tags = S::Tags;
105105+ type IsOpen = S::IsOpen;
106106+ }
107107+ ///State transition - sets the `tags` field to Set
108108+ pub struct SetTags<S: State = Empty>(PhantomData<fn() -> S>);
109109+ impl<S: State> sealed::Sealed for SetTags<S> {}
110110+ impl<S: State> State for SetTags<S> {
111111+ type Title = S::Title;
112112+ type Content = S::Content;
113113+ type CreatedAt = S::CreatedAt;
114114+ type Forum = S::Forum;
115115+ type Tags = Set<members::tags>;
116116+ type IsOpen = S::IsOpen;
117117+ }
118118+ ///State transition - sets the `is_open` field to Set
119119+ pub struct SetIsOpen<S: State = Empty>(PhantomData<fn() -> S>);
120120+ impl<S: State> sealed::Sealed for SetIsOpen<S> {}
121121+ impl<S: State> State for SetIsOpen<S> {
122122+ type Title = S::Title;
123123+ type Content = S::Content;
124124+ type CreatedAt = S::CreatedAt;
125125+ type Forum = S::Forum;
126126+ type Tags = S::Tags;
127127+ type IsOpen = Set<members::is_open>;
128128+ }
129129+ /// Marker types for field names
130130+ #[allow(non_camel_case_types)]
131131+ pub mod members {
132132+ ///Marker type for the `title` field
133133+ pub struct title(());
134134+ ///Marker type for the `content` field
135135+ pub struct content(());
136136+ ///Marker type for the `created_at` field
137137+ pub struct created_at(());
138138+ ///Marker type for the `forum` field
139139+ pub struct forum(());
140140+ ///Marker type for the `tags` field
141141+ pub struct tags(());
142142+ ///Marker type for the `is_open` field
143143+ pub struct is_open(());
144144+ }
145145+}
146146+147147+/// Builder for constructing an instance of this type
148148+pub struct QuestionBuilder<'a, S: question_state::State> {
149149+ _phantom_state: ::core::marker::PhantomData<fn() -> S>,
150150+ __unsafe_private_named: (
151151+ ::core::option::Option<jacquard_common::CowStr<'a>>,
152152+ ::core::option::Option<jacquard_common::types::string::Datetime>,
153153+ ::core::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>,
154154+ ::core::option::Option<bool>,
155155+ ::core::option::Option<Vec<jacquard_common::CowStr<'a>>>,
156156+ ::core::option::Option<jacquard_common::CowStr<'a>>,
157157+ ::core::option::Option<jacquard_common::types::string::Datetime>,
158158+ ),
159159+ _phantom: ::core::marker::PhantomData<&'a ()>,
160160+}
161161+162162+impl<'a> Question<'a> {
163163+ /// Create a new builder for this type
164164+ pub fn new() -> QuestionBuilder<'a, question_state::Empty> {
165165+ QuestionBuilder::new()
166166+ }
167167+}
168168+169169+impl<'a> QuestionBuilder<'a, question_state::Empty> {
170170+ /// Create a new builder with all fields unset
171171+ pub fn new() -> Self {
172172+ QuestionBuilder {
173173+ _phantom_state: ::core::marker::PhantomData,
174174+ __unsafe_private_named: (None, None, None, None, None, None, None),
175175+ _phantom: ::core::marker::PhantomData,
176176+ }
177177+ }
178178+}
179179+180180+impl<'a, S> QuestionBuilder<'a, S>
181181+where
182182+ S: question_state::State,
183183+ S::Content: question_state::IsUnset,
184184+{
185185+ /// Set the `content` field (required)
186186+ pub fn content(
187187+ mut self,
188188+ value: impl Into<jacquard_common::CowStr<'a>>,
189189+ ) -> QuestionBuilder<'a, question_state::SetContent<S>> {
190190+ self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
191191+ QuestionBuilder {
192192+ _phantom_state: ::core::marker::PhantomData,
193193+ __unsafe_private_named: self.__unsafe_private_named,
194194+ _phantom: ::core::marker::PhantomData,
195195+ }
196196+ }
197197+}
198198+199199+impl<'a, S> QuestionBuilder<'a, S>
200200+where
201201+ S: question_state::State,
202202+ S::CreatedAt: question_state::IsUnset,
203203+{
204204+ /// Set the `createdAt` field (required)
205205+ pub fn created_at(
206206+ mut self,
207207+ value: impl Into<jacquard_common::types::string::Datetime>,
208208+ ) -> QuestionBuilder<'a, question_state::SetCreatedAt<S>> {
209209+ self.__unsafe_private_named.1 = ::core::option::Option::Some(value.into());
210210+ QuestionBuilder {
211211+ _phantom_state: ::core::marker::PhantomData,
212212+ __unsafe_private_named: self.__unsafe_private_named,
213213+ _phantom: ::core::marker::PhantomData,
214214+ }
215215+ }
216216+}
217217+218218+impl<'a, S> QuestionBuilder<'a, S>
219219+where
220220+ S: question_state::State,
221221+ S::Forum: question_state::IsUnset,
222222+{
223223+ /// Set the `forum` field (required)
224224+ pub fn forum(
225225+ mut self,
226226+ value: impl Into<jacquard_common::types::ident::AtIdentifier<'a>>,
227227+ ) -> QuestionBuilder<'a, question_state::SetForum<S>> {
228228+ self.__unsafe_private_named.2 = ::core::option::Option::Some(value.into());
229229+ QuestionBuilder {
230230+ _phantom_state: ::core::marker::PhantomData,
231231+ __unsafe_private_named: self.__unsafe_private_named,
232232+ _phantom: ::core::marker::PhantomData,
233233+ }
234234+ }
235235+}
236236+237237+impl<'a, S> QuestionBuilder<'a, S>
238238+where
239239+ S: question_state::State,
240240+ S::IsOpen: question_state::IsUnset,
241241+{
242242+ /// Set the `isOpen` field (required)
243243+ pub fn is_open(
244244+ mut self,
245245+ value: impl Into<bool>,
246246+ ) -> QuestionBuilder<'a, question_state::SetIsOpen<S>> {
247247+ self.__unsafe_private_named.3 = ::core::option::Option::Some(value.into());
248248+ QuestionBuilder {
249249+ _phantom_state: ::core::marker::PhantomData,
250250+ __unsafe_private_named: self.__unsafe_private_named,
251251+ _phantom: ::core::marker::PhantomData,
252252+ }
253253+ }
254254+}
255255+256256+impl<'a, S> QuestionBuilder<'a, S>
257257+where
258258+ S: question_state::State,
259259+ S::Tags: question_state::IsUnset,
260260+{
261261+ /// Set the `tags` field (required)
262262+ pub fn tags(
263263+ mut self,
264264+ value: impl Into<Vec<jacquard_common::CowStr<'a>>>,
265265+ ) -> QuestionBuilder<'a, question_state::SetTags<S>> {
266266+ self.__unsafe_private_named.4 = ::core::option::Option::Some(value.into());
267267+ QuestionBuilder {
268268+ _phantom_state: ::core::marker::PhantomData,
269269+ __unsafe_private_named: self.__unsafe_private_named,
270270+ _phantom: ::core::marker::PhantomData,
271271+ }
272272+ }
273273+}
274274+275275+impl<'a, S> QuestionBuilder<'a, S>
276276+where
277277+ S: question_state::State,
278278+ S::Title: question_state::IsUnset,
279279+{
280280+ /// Set the `title` field (required)
281281+ pub fn title(
282282+ mut self,
283283+ value: impl Into<jacquard_common::CowStr<'a>>,
284284+ ) -> QuestionBuilder<'a, question_state::SetTitle<S>> {
285285+ self.__unsafe_private_named.5 = ::core::option::Option::Some(value.into());
286286+ QuestionBuilder {
287287+ _phantom_state: ::core::marker::PhantomData,
288288+ __unsafe_private_named: self.__unsafe_private_named,
289289+ _phantom: ::core::marker::PhantomData,
290290+ }
291291+ }
292292+}
293293+294294+impl<'a, S: question_state::State> QuestionBuilder<'a, S> {
295295+ /// Set the `updatedAt` field (optional)
296296+ pub fn updated_at(
297297+ mut self,
298298+ value: impl Into<Option<jacquard_common::types::string::Datetime>>,
299299+ ) -> Self {
300300+ self.__unsafe_private_named.6 = value.into();
301301+ self
302302+ }
303303+ /// Set the `updatedAt` field to an Option value (optional)
304304+ pub fn maybe_updated_at(
305305+ mut self,
306306+ value: Option<jacquard_common::types::string::Datetime>,
307307+ ) -> Self {
308308+ self.__unsafe_private_named.6 = value;
309309+ self
310310+ }
311311+}
312312+313313+impl<'a, S> QuestionBuilder<'a, S>
314314+where
315315+ S: question_state::State,
316316+ S::Title: question_state::IsSet,
317317+ S::Content: question_state::IsSet,
318318+ S::CreatedAt: question_state::IsSet,
319319+ S::Forum: question_state::IsSet,
320320+ S::Tags: question_state::IsSet,
321321+ S::IsOpen: question_state::IsSet,
322322+{
323323+ /// Build the final struct
324324+ pub fn build(self) -> Question<'a> {
325325+ Question {
326326+ content: self.__unsafe_private_named.0.unwrap(),
327327+ created_at: self.__unsafe_private_named.1.unwrap(),
328328+ forum: self.__unsafe_private_named.2.unwrap(),
329329+ is_open: self.__unsafe_private_named.3.unwrap(),
330330+ tags: self.__unsafe_private_named.4.unwrap(),
331331+ title: self.__unsafe_private_named.5.unwrap(),
332332+ updated_at: self.__unsafe_private_named.6,
333333+ extra_data: Default::default(),
334334+ }
335335+ }
336336+ /// Build the final struct with custom extra_data
337337+ pub fn build_with_data(
338338+ self,
339339+ extra_data: std::collections::BTreeMap<
340340+ jacquard_common::smol_str::SmolStr,
341341+ jacquard_common::types::value::Data<'a>,
342342+ >,
343343+ ) -> Question<'a> {
344344+ Question {
345345+ content: self.__unsafe_private_named.0.unwrap(),
346346+ created_at: self.__unsafe_private_named.1.unwrap(),
347347+ forum: self.__unsafe_private_named.2.unwrap(),
348348+ is_open: self.__unsafe_private_named.3.unwrap(),
349349+ tags: self.__unsafe_private_named.4.unwrap(),
350350+ title: self.__unsafe_private_named.5.unwrap(),
351351+ updated_at: self.__unsafe_private_named.6,
352352+ extra_data: Some(extra_data),
353353+ }
354354+ }
355355+}
356356+357357+impl<'a> Question<'a> {
358358+ pub fn uri(
359359+ uri: impl Into<jacquard_common::CowStr<'a>>,
360360+ ) -> Result<
361361+ jacquard_common::types::uri::RecordUri<'a, QuestionRecord>,
362362+ jacquard_common::types::uri::UriError,
363363+ > {
364364+ jacquard_common::types::uri::RecordUri::try_from_uri(
365365+ jacquard_common::types::string::AtUri::new_cow(uri.into())?,
366366+ )
367367+ }
368368+}
369369+370370+/// Typed wrapper for GetRecord response with this collection's record type.
371371+#[derive(
372372+ serde::Serialize,
373373+ serde::Deserialize,
374374+ Debug,
375375+ Clone,
376376+ PartialEq,
377377+ Eq,
378378+ jacquard_derive::IntoStatic
379379+)]
380380+#[serde(rename_all = "camelCase")]
381381+pub struct QuestionGetRecordOutput<'a> {
382382+ #[serde(skip_serializing_if = "std::option::Option::is_none")]
383383+ #[serde(borrow)]
384384+ pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
385385+ #[serde(borrow)]
386386+ pub uri: jacquard_common::types::string::AtUri<'a>,
387387+ #[serde(borrow)]
388388+ pub value: Question<'a>,
389389+}
390390+391391+impl From<QuestionGetRecordOutput<'_>> for Question<'_> {
392392+ fn from(output: QuestionGetRecordOutput<'_>) -> Self {
393393+ use jacquard_common::IntoStatic;
394394+ output.value.into_static()
395395+ }
396396+}
397397+398398+impl jacquard_common::types::collection::Collection for Question<'_> {
399399+ const NSID: &'static str = "dev.fudgeu.experimental.atforumv1.feed.question";
400400+ type Record = QuestionRecord;
401401+}
402402+403403+/// Marker type for deserializing records from this collection.
404404+#[derive(Debug, serde::Serialize, serde::Deserialize)]
405405+pub struct QuestionRecord;
406406+impl jacquard_common::xrpc::XrpcResp for QuestionRecord {
407407+ const NSID: &'static str = "dev.fudgeu.experimental.atforumv1.feed.question";
408408+ const ENCODING: &'static str = "application/json";
409409+ type Output<'de> = QuestionGetRecordOutput<'de>;
410410+ type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
411411+}
412412+413413+impl jacquard_common::types::collection::Collection for QuestionRecord {
414414+ const NSID: &'static str = "dev.fudgeu.experimental.atforumv1.feed.question";
415415+ type Record = QuestionRecord;
416416+}
417417+418418+impl<'a> ::jacquard_lexicon::schema::LexiconSchema for Question<'a> {
419419+ fn nsid() -> &'static str {
420420+ "dev.fudgeu.experimental.atforumv1.feed.question"
421421+ }
422422+ fn def_name() -> &'static str {
423423+ "main"
424424+ }
425425+ fn lexicon_doc() -> ::jacquard_lexicon::lexicon::LexiconDoc<'static> {
426426+ lexicon_doc_dev_fudgeu_experimental_atforumv1_feed_question()
427427+ }
428428+ fn validate(
429429+ &self,
430430+ ) -> ::std::result::Result<(), ::jacquard_lexicon::validation::ConstraintError> {
431431+ {
432432+ let value = &self.content;
433433+ #[allow(unused_comparisons)]
434434+ if <str>::len(value.as_ref()) > 10000usize {
435435+ return Err(::jacquard_lexicon::validation::ConstraintError::MaxLength {
436436+ path: ::jacquard_lexicon::validation::ValidationPath::from_field(
437437+ "content",
438438+ ),
439439+ max: 10000usize,
440440+ actual: <str>::len(value.as_ref()),
441441+ });
442442+ }
443443+ }
444444+ {
445445+ let value = &self.content;
446446+ #[allow(unused_comparisons)]
447447+ if <str>::len(value.as_ref()) < 1usize {
448448+ return Err(::jacquard_lexicon::validation::ConstraintError::MinLength {
449449+ path: ::jacquard_lexicon::validation::ValidationPath::from_field(
450450+ "content",
451451+ ),
452452+ min: 1usize,
453453+ actual: <str>::len(value.as_ref()),
454454+ });
455455+ }
456456+ }
457457+ {
458458+ let value = &self.tags;
459459+ #[allow(unused_comparisons)]
460460+ if value.len() > 20usize {
461461+ return Err(::jacquard_lexicon::validation::ConstraintError::MaxLength {
462462+ path: ::jacquard_lexicon::validation::ValidationPath::from_field(
463463+ "tags",
464464+ ),
465465+ max: 20usize,
466466+ actual: value.len(),
467467+ });
468468+ }
469469+ }
470470+ {
471471+ let value = &self.title;
472472+ #[allow(unused_comparisons)]
473473+ if <str>::len(value.as_ref()) > 100usize {
474474+ return Err(::jacquard_lexicon::validation::ConstraintError::MaxLength {
475475+ path: ::jacquard_lexicon::validation::ValidationPath::from_field(
476476+ "title",
477477+ ),
478478+ max: 100usize,
479479+ actual: <str>::len(value.as_ref()),
480480+ });
481481+ }
482482+ }
483483+ {
484484+ let value = &self.title;
485485+ #[allow(unused_comparisons)]
486486+ if <str>::len(value.as_ref()) < 1usize {
487487+ return Err(::jacquard_lexicon::validation::ConstraintError::MinLength {
488488+ path: ::jacquard_lexicon::validation::ValidationPath::from_field(
489489+ "title",
490490+ ),
491491+ min: 1usize,
492492+ actual: <str>::len(value.as_ref()),
493493+ });
494494+ }
495495+ }
496496+ Ok(())
497497+ }
498498+}
499499+500500+fn lexicon_doc_dev_fudgeu_experimental_atforumv1_feed_question() -> ::jacquard_lexicon::lexicon::LexiconDoc<
501501+ 'static,
502502+> {
503503+ ::jacquard_lexicon::lexicon::LexiconDoc {
504504+ lexicon: ::jacquard_lexicon::lexicon::Lexicon::Lexicon1,
505505+ id: ::jacquard_common::CowStr::new_static(
506506+ "dev.fudgeu.experimental.atforumv1.feed.question",
507507+ ),
508508+ revision: None,
509509+ description: None,
510510+ defs: {
511511+ let mut map = ::std::collections::BTreeMap::new();
512512+ map.insert(
513513+ ::jacquard_common::smol_str::SmolStr::new_static("main"),
514514+ ::jacquard_lexicon::lexicon::LexUserType::Record(::jacquard_lexicon::lexicon::LexRecord {
515515+ description: Some(
516516+ ::jacquard_common::CowStr::new_static(
517517+ "An initial question that starts a discussion",
518518+ ),
519519+ ),
520520+ key: Some(::jacquard_common::CowStr::new_static("tid")),
521521+ record: ::jacquard_lexicon::lexicon::LexRecordRecord::Object(::jacquard_lexicon::lexicon::LexObject {
522522+ description: None,
523523+ required: Some(
524524+ vec![
525525+ ::jacquard_common::smol_str::SmolStr::new_static("title"),
526526+ ::jacquard_common::smol_str::SmolStr::new_static("content"),
527527+ ::jacquard_common::smol_str::SmolStr::new_static("createdAt"),
528528+ ::jacquard_common::smol_str::SmolStr::new_static("forum"),
529529+ ::jacquard_common::smol_str::SmolStr::new_static("tags"),
530530+ ::jacquard_common::smol_str::SmolStr::new_static("isOpen")
531531+ ],
532532+ ),
533533+ nullable: None,
534534+ properties: {
535535+ #[allow(unused_mut)]
536536+ let mut map = ::std::collections::BTreeMap::new();
537537+ map.insert(
538538+ ::jacquard_common::smol_str::SmolStr::new_static("content"),
539539+ ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
540540+ description: None,
541541+ format: None,
542542+ default: None,
543543+ min_length: Some(1usize),
544544+ max_length: Some(10000usize),
545545+ min_graphemes: None,
546546+ max_graphemes: None,
547547+ r#enum: None,
548548+ r#const: None,
549549+ known_values: None,
550550+ }),
551551+ );
552552+ map.insert(
553553+ ::jacquard_common::smol_str::SmolStr::new_static(
554554+ "createdAt",
555555+ ),
556556+ ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
557557+ description: None,
558558+ format: Some(
559559+ ::jacquard_lexicon::lexicon::LexStringFormat::Datetime,
560560+ ),
561561+ default: None,
562562+ min_length: None,
563563+ max_length: None,
564564+ min_graphemes: None,
565565+ max_graphemes: None,
566566+ r#enum: None,
567567+ r#const: None,
568568+ known_values: None,
569569+ }),
570570+ );
571571+ map.insert(
572572+ ::jacquard_common::smol_str::SmolStr::new_static("forum"),
573573+ ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
574574+ description: None,
575575+ format: Some(
576576+ ::jacquard_lexicon::lexicon::LexStringFormat::AtIdentifier,
577577+ ),
578578+ default: None,
579579+ min_length: None,
580580+ max_length: None,
581581+ min_graphemes: None,
582582+ max_graphemes: None,
583583+ r#enum: None,
584584+ r#const: None,
585585+ known_values: None,
586586+ }),
587587+ );
588588+ map.insert(
589589+ ::jacquard_common::smol_str::SmolStr::new_static("isOpen"),
590590+ ::jacquard_lexicon::lexicon::LexObjectProperty::Boolean(::jacquard_lexicon::lexicon::LexBoolean {
591591+ description: None,
592592+ default: None,
593593+ r#const: None,
594594+ }),
595595+ );
596596+ map.insert(
597597+ ::jacquard_common::smol_str::SmolStr::new_static("tags"),
598598+ ::jacquard_lexicon::lexicon::LexObjectProperty::Array(::jacquard_lexicon::lexicon::LexArray {
599599+ description: None,
600600+ items: ::jacquard_lexicon::lexicon::LexArrayItem::String(::jacquard_lexicon::lexicon::LexString {
601601+ description: None,
602602+ format: None,
603603+ default: None,
604604+ min_length: Some(1usize),
605605+ max_length: Some(25usize),
606606+ min_graphemes: None,
607607+ max_graphemes: None,
608608+ r#enum: None,
609609+ r#const: None,
610610+ known_values: None,
611611+ }),
612612+ min_length: None,
613613+ max_length: Some(20usize),
614614+ }),
615615+ );
616616+ map.insert(
617617+ ::jacquard_common::smol_str::SmolStr::new_static("title"),
618618+ ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
619619+ description: None,
620620+ format: None,
621621+ default: None,
622622+ min_length: Some(1usize),
623623+ max_length: Some(100usize),
624624+ min_graphemes: None,
625625+ max_graphemes: None,
626626+ r#enum: None,
627627+ r#const: None,
628628+ known_values: None,
629629+ }),
630630+ );
631631+ map.insert(
632632+ ::jacquard_common::smol_str::SmolStr::new_static(
633633+ "updatedAt",
634634+ ),
635635+ ::jacquard_lexicon::lexicon::LexObjectProperty::String(::jacquard_lexicon::lexicon::LexString {
636636+ description: None,
637637+ format: Some(
638638+ ::jacquard_lexicon::lexicon::LexStringFormat::Datetime,
639639+ ),
640640+ default: None,
641641+ min_length: None,
642642+ max_length: None,
643643+ min_graphemes: None,
644644+ max_graphemes: None,
645645+ r#enum: None,
646646+ r#const: None,
647647+ known_values: None,
648648+ }),
649649+ );
650650+ map
651651+ },
652652+ }),
653653+ }),
654654+ );
655655+ map
656656+ },
657657+ }
658658+}
+6-6
crates/jacquard-api/src/lib.rs
···5252#[cfg(feature = "com_bad_example")]
5353pub mod com_bad_example;
54545555-#[cfg(feature = "com_crabdance")]
5656-pub mod com_crabdance;
5757-5855#[cfg(feature = "com_shinolabs")]
5956pub mod com_shinolabs;
6057···6461#[cfg(feature = "community_lexicon")]
6562pub mod community_lexicon;
66636464+#[cfg(feature = "computer_aesthetic")]
6565+pub mod computer_aesthetic;
6666+6767#[cfg(feature = "dev_baileytownsend")]
6868pub mod dev_baileytownsend;
6969···75757676#[cfg(feature = "dev_regnault")]
7777pub mod dev_regnault;
7878-7979-#[cfg(feature = "events_smokesignal")]
8080-pub mod events_smokesignal;
81788279#[cfg(feature = "fm_teal")]
8380pub mod fm_teal;
···117114118115#[cfg(feature = "org_devcon")]
119116pub mod org_devcon;
117117+118118+#[cfg(feature = "org_farmapps")]
119119+pub mod org_farmapps;
120120121121#[cfg(feature = "org_robocracy")]
122122pub mod org_robocracy;
+6
crates/jacquard-api/src/org_farmapps.rs
···11+// @generated by jacquard-lexicon. DO NOT EDIT.
22+//
33+// This file was automatically generated from Lexicon schemas.
44+// Any manual changes will be overwritten on the next regeneration.
55+66+pub mod temp;
+7
crates/jacquard-api/src/org_farmapps/temp.rs
···11+// @generated by jacquard-lexicon. DO NOT EDIT.
22+//
33+// This file was automatically generated from Lexicon schemas.
44+// Any manual changes will be overwritten on the next regeneration.
55+66+pub mod agroconnect;
77+pub mod ecrop;
···11+// @generated by jacquard-lexicon. DO NOT EDIT.
22+//
33+// This file was automatically generated from Lexicon schemas.
44+// Any manual changes will be overwritten on the next regeneration.
55+66+pub mod cl022;
···5566pub mod get_live_users;
77pub mod get_profile_card;
88-pub mod get_segments;88+pub mod get_segments;
99+1010+#[cfg(feature = "streaming")]
1111+pub mod subscribe_segments;