// @generated by jacquard-lexicon. DO NOT EDIT. // // Lexicon: place.stream.segment // // This file was automatically generated from Lexicon schemas. // Any manual changes will be overwritten on the next regeneration. #[jacquard_derive::lexicon] #[derive( serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, bon::Builder )] #[serde(rename_all = "camelCase")] pub struct Audio<'a> { pub channels: i64, #[serde(borrow)] #[builder(into)] pub codec: jacquard_common::CowStr<'a>, pub rate: i64, } #[jacquard_derive::lexicon] #[derive( serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, bon::Builder )] #[serde(rename_all = "camelCase")] pub struct Framerate<'a> { pub den: i64, pub num: i64, } /// Media file representing a segment of a livestream #[jacquard_derive::lexicon] #[derive( serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, bon::Builder )] #[serde(rename_all = "camelCase")] pub struct Segment<'a> { #[serde(skip_serializing_if = "std::option::Option::is_none")] #[builder(into)] #[serde(borrow)] pub audio: Option>>, #[serde(borrow)] pub creator: jacquard_common::types::string::Did<'a>, /// The duration of the segment in nanoseconds #[serde(skip_serializing_if = "std::option::Option::is_none")] #[builder(into)] pub duration: Option, /// Unique identifier for the segment #[serde(borrow)] #[builder(into)] pub id: jacquard_common::CowStr<'a>, /// The DID of the signing key used for this segment #[serde(borrow)] #[builder(into)] pub signing_key: jacquard_common::CowStr<'a>, /// The size of the segment in bytes #[serde(skip_serializing_if = "std::option::Option::is_none")] #[builder(into)] pub size: Option, /// When this segment started pub start_time: jacquard_common::types::string::Datetime, #[serde(skip_serializing_if = "std::option::Option::is_none")] #[builder(into)] #[serde(borrow)] pub video: Option>>, } /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic )] #[serde(rename_all = "camelCase")] pub struct SegmentGetRecordOutput<'a> { #[serde(skip_serializing_if = "std::option::Option::is_none")] #[serde(borrow)] pub cid: std::option::Option>, #[serde(borrow)] pub uri: jacquard_common::types::string::AtUri<'a>, #[serde(borrow)] pub value: Segment<'a>, } /// Marker type for deserializing records from this collection. pub struct SegmentRecord; impl jacquard_common::xrpc::XrpcResp for SegmentRecord { const NSID: &'static str = "place.stream.segment"; const ENCODING: &'static str = "application/json"; type Output<'de> = SegmentGetRecordOutput<'de>; type Err<'de> = jacquard_common::types::collection::RecordError<'de>; } impl jacquard_common::types::collection::Collection for Segment<'_> { const NSID: &'static str = "place.stream.segment"; type Record = SegmentRecord; } impl From> for Segment<'_> { fn from(output: SegmentGetRecordOutput<'_>) -> Self { use jacquard_common::IntoStatic; output.value.into_static() } } #[jacquard_derive::lexicon] #[derive( serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, bon::Builder )] #[serde(rename_all = "camelCase")] pub struct SegmentView<'a> { #[serde(borrow)] pub cid: jacquard_common::types::string::Cid<'a>, #[serde(borrow)] pub record: jacquard_common::types::value::Data<'a>, } #[jacquard_derive::lexicon] #[derive( serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, bon::Builder )] #[serde(rename_all = "camelCase")] pub struct Video<'a> { #[serde(skip_serializing_if = "std::option::Option::is_none")] #[builder(into)] pub bframes: Option, #[serde(borrow)] #[builder(into)] pub codec: jacquard_common::CowStr<'a>, #[serde(skip_serializing_if = "std::option::Option::is_none")] #[builder(into)] #[serde(borrow)] pub framerate: Option>, pub height: i64, pub width: i64, }