use serde::{Deserialize, Serialize};
use super::types::{Deprecation, Type};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
pub enum StreamMode {
#[default]
Async,
Batch,
Callback,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StreamMethod {
pub name: String,
pub item_type: Type,
pub mode: StreamMode,
pub doc: Option<String>,
pub deprecated: Option<Deprecation>,
}
impl StreamMethod {
pub fn new(name: impl Into<String>, item_type: Type) -> Self {
Self {
name: name.into(),
item_type,
mode: StreamMode::default(),
doc: None,
deprecated: None,
}
}
pub fn with_mode(mut self, mode: StreamMode) -> Self {
self.mode = mode;
self
}
pub fn with_doc(mut self, doc: impl Into<String>) -> Self {
self.doc = Some(doc.into());
self
}
pub fn maybe_doc(self, doc: Option<String>) -> Self {
match doc {
Some(d) => self.with_doc(d),
None => self,
}
}
pub fn with_deprecated(mut self, deprecation: Deprecation) -> Self {
self.deprecated = Some(deprecation);
self
}
pub fn is_deprecated(&self) -> bool {
self.deprecated.is_some()
}
}