// @generated by jacquard-lexicon. DO NOT EDIT. // // Lexicon: my.skylights.list // // This file was automatically generated from Lexicon schemas. // Any manual changes will be overwritten on the next regeneration. use jacquard_common::CowStr; #[allow(unused_imports)] use jacquard_common::deps::codegen::unicode_segmentation::UnicodeSegmentation; use jacquard_common::types::string::Datetime; use jacquard_derive::{IntoStatic, lexicon}; use jacquard_lexicon::lexicon::LexiconDoc; use jacquard_lexicon::schema::LexiconSchema; #[allow(unused_imports)] use jacquard_lexicon::validation::{ConstraintError, ValidationPath}; use serde::{Serialize, Deserialize}; #[lexicon] #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)] #[serde(rename_all = "camelCase")] pub struct List<'a> { #[serde(skip_serializing_if = "Option::is_none")] pub created_at: Option, #[serde(skip_serializing_if = "Option::is_none")] #[serde(borrow)] pub description: Option>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(borrow)] pub sort_by: Option>, #[serde(borrow)] pub title: CowStr<'a>, } #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum ListSortBy<'a> { Position, Date, Other(CowStr<'a>), } impl<'a> ListSortBy<'a> { pub fn as_str(&self) -> &str { match self { Self::Position => "position", Self::Date => "date", Self::Other(s) => s.as_ref(), } } } impl<'a> From<&'a str> for ListSortBy<'a> { fn from(s: &'a str) -> Self { match s { "position" => Self::Position, "date" => Self::Date, _ => Self::Other(CowStr::from(s)), } } } impl<'a> From for ListSortBy<'a> { fn from(s: String) -> Self { match s.as_str() { "position" => Self::Position, "date" => Self::Date, _ => Self::Other(CowStr::from(s)), } } } impl<'a> core::fmt::Display for ListSortBy<'a> { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{}", self.as_str()) } } impl<'a> AsRef for ListSortBy<'a> { fn as_ref(&self) -> &str { self.as_str() } } impl<'a> serde::Serialize for ListSortBy<'a> { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de, 'a> serde::Deserialize<'de> for ListSortBy<'a> where 'de: 'a, { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = <&'de str>::deserialize(deserializer)?; Ok(Self::from(s)) } } impl<'a> Default for ListSortBy<'a> { fn default() -> Self { Self::Other(Default::default()) } } impl jacquard_common::IntoStatic for ListSortBy<'_> { type Output = ListSortBy<'static>; fn into_static(self) -> Self::Output { match self { ListSortBy::Position => ListSortBy::Position, ListSortBy::Date => ListSortBy::Date, ListSortBy::Other(v) => ListSortBy::Other(v.into_static()), } } } impl<'a> LexiconSchema for List<'a> { fn nsid() -> &'static str { "my.skylights.list" } fn def_name() -> &'static str { "main" } fn lexicon_doc() -> LexiconDoc<'static> { lexicon_doc_my_skylights_list() } fn validate(&self) -> Result<(), ConstraintError> { Ok(()) } } fn lexicon_doc_my_skylights_list() -> 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("my.skylights.list"), defs: { let mut map = BTreeMap::new(); map.insert( SmolStr::new_static("main"), LexUserType::Object(LexObject { required: Some(vec![SmolStr::new_static("title")]), properties: { #[allow(unused_mut)] let mut map = BTreeMap::new(); map.insert( SmolStr::new_static("createdAt"), LexObjectProperty::String(LexString { format: Some(LexStringFormat::Datetime), ..Default::default() }), ); map.insert( SmolStr::new_static("description"), LexObjectProperty::String(LexString { ..Default::default() }), ); map.insert( SmolStr::new_static("sortBy"), LexObjectProperty::String(LexString { ..Default::default() }), ); map.insert( SmolStr::new_static("title"), LexObjectProperty::String(LexString { ..Default::default() }), ); map }, ..Default::default() }), ); map }, ..Default::default() } }