use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use std::collections::HashMap;
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexBoolean {
pub description: Option<String>,
pub default: Option<bool>,
pub r#const: Option<bool>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexInteger {
pub description: Option<String>,
pub default: Option<i64>,
pub minimum: Option<i64>,
pub maximum: Option<i64>,
pub r#enum: Option<Vec<i64>>,
pub r#const: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, Copy)]
#[serde(rename_all = "kebab-case")]
pub enum LexStringFormat {
Datetime,
Uri,
AtUri,
Did,
Handle,
AtIdentifier,
Nsid,
Cid,
Language,
Tid,
RecordKey,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct LexString {
pub description: Option<String>,
pub format: Option<LexStringFormat>,
pub default: Option<String>,
pub min_length: Option<usize>,
pub max_length: Option<usize>,
pub min_graphemes: Option<usize>,
pub max_graphemes: Option<usize>,
pub r#enum: Option<Vec<String>>,
pub r#const: Option<String>,
pub known_values: Option<Vec<String>>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexUnknown {
pub description: Option<String>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct LexBytes {
pub description: Option<String>,
pub max_length: Option<usize>,
pub min_length: Option<usize>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexCidLink {
pub description: Option<String>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexRef {
pub description: Option<String>,
pub r#ref: String,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexRefUnion {
pub description: Option<String>,
pub refs: Vec<String>,
pub closed: Option<bool>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct LexBlob {
pub description: Option<String>,
pub accept: Option<Vec<String>>,
pub max_size: Option<usize>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "kebab-case")]
pub enum LexArrayItem {
Boolean(LexBoolean),
Integer(LexInteger),
String(LexString),
Unknown(LexUnknown),
Bytes(LexBytes),
CidLink(LexCidLink),
Blob(LexBlob),
Ref(LexRef),
Union(LexRefUnion),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct LexArray {
pub description: Option<String>,
pub items: LexArrayItem,
pub min_length: Option<usize>,
pub max_length: Option<usize>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexPrimitiveArrayItem {
Boolean(LexBoolean),
Integer(LexInteger),
String(LexString),
Unknown(LexUnknown),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct LexPrimitiveArray {
pub description: Option<String>,
pub items: LexPrimitiveArrayItem,
pub min_length: Option<usize>,
pub max_length: Option<usize>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexToken {
pub description: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "kebab-case")]
pub enum LexObjectProperty {
Ref(LexRef),
Union(LexRefUnion),
Bytes(LexBytes),
CidLink(LexCidLink),
Array(LexArray),
Blob(LexBlob),
Boolean(LexBoolean),
Integer(LexInteger),
String(LexString),
Unknown(LexUnknown),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexObject {
pub description: Option<String>,
pub required: Option<Vec<String>>,
pub nullable: Option<Vec<String>>,
pub properties: HashMap<String, LexObjectProperty>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexXrpcParametersProperty {
Boolean(LexBoolean),
Integer(LexInteger),
String(LexString),
Unknown(LexUnknown),
Array(LexPrimitiveArray),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcParameters {
pub description: Option<String>,
pub required: Option<Vec<String>>,
pub properties: HashMap<String, LexXrpcParametersProperty>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexXrpcBodySchema {
Ref(LexRef),
Union(LexRefUnion),
Object(LexObject),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcBody {
pub description: Option<String>,
pub encoding: String,
pub schema: Option<LexXrpcBodySchema>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexXrpcSubscriptionMessageSchema {
Ref(LexRef),
Union(LexRefUnion),
Object(LexObject),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcSubscriptionMessage {
pub description: Option<String>,
pub schema: Option<LexXrpcSubscriptionMessageSchema>,
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcError {
pub description: Option<String>,
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexXrpcQueryParameter {
Params(LexXrpcParameters),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcQuery {
pub description: Option<String>,
pub parameters: Option<LexXrpcQueryParameter>,
pub output: Option<LexXrpcBody>,
pub errors: Option<Vec<LexXrpcError>>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexXrpcProcedureParameter {
Params(LexXrpcParameters),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcProcedure {
pub description: Option<String>,
pub parameters: Option<LexXrpcProcedureParameter>,
pub input: Option<LexXrpcBody>,
pub output: Option<LexXrpcBody>,
pub errors: Option<Vec<LexXrpcError>>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexXrpcSubscriptionParameter {
Params(LexXrpcParameters),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexXrpcSubscription {
pub description: Option<String>,
pub parameters: Option<LexXrpcSubscriptionParameter>,
pub message: Option<LexXrpcSubscriptionMessage>,
pub infos: Option<Vec<LexXrpcError>>,
pub errors: Option<Vec<LexXrpcError>>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "lowercase")]
pub enum LexRecordRecord {
Object(LexObject),
}
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
pub struct LexRecord {
pub description: Option<String>,
pub key: Option<String>,
pub record: LexRecordRecord,
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
#[serde(tag = "type", rename_all = "kebab-case")]
pub enum LexUserType {
Record(LexRecord),
#[serde(rename = "query")]
XrpcQuery(LexXrpcQuery),
#[serde(rename = "procedure")]
XrpcProcedure(LexXrpcProcedure),
#[serde(rename = "subscription")]
XrpcSubscription(LexXrpcSubscription),
Blob(LexBlob),
Array(LexArray),
Token(LexToken),
Object(LexObject),
Boolean(LexBoolean),
Integer(LexInteger),
String(LexString),
Bytes(LexBytes),
CidLink(LexCidLink),
Unknown(LexUnknown),
}
pub mod record;
pub mod client;
pub mod wrapper;