use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Default, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ReadEventsOptions<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub from_latest_event: Option<ReadFromLatestEventOptions<'a>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lower_bound: Option<Bound<'a>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<Ordering>,
pub recursive: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub upper_bound: Option<Bound<'a>>,
}
#[derive(Debug, Default, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ObserveEventsOptions<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub from_latest_event: Option<ObserveFromLatestEventOptions<'a>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lower_bound: Option<Bound<'a>>,
pub recursive: bool,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum Ordering {
Chronological,
Antichronological,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum BoundType {
Inclusive,
Exclusive,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Bound<'a> {
#[serde(rename = "type")]
pub bound_type: BoundType,
pub id: &'a str,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum ReadEventMissingStrategy {
ReadEverything,
ReadNothing,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum ObserveEventMissingStrategy {
ObserveEverything,
WaitForEvent,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ReadFromLatestEventOptions<'a> {
pub if_event_is_missing: ReadEventMissingStrategy,
pub subject: &'a str,
#[serde(rename = "type")]
pub ty: &'a str,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ObserveFromLatestEventOptions<'a> {
pub if_event_is_missing: ObserveEventMissingStrategy,
pub subject: &'a str,
#[serde(rename = "type")]
pub ty: &'a str,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct EventType {
#[serde(rename = "eventType")]
pub name: String,
pub is_phantom: bool,
pub schema: Option<Value>,
}