use tokio_stream::wrappers::ReceiverStream;
mod streaming_impl;
pub use streaming_impl::{create_stream_channel, stream_to_sse};
#[derive(Debug)]
pub struct StreamResponse<T> {
stream: ReceiverStream<Result<T, String>>,
is_final: bool,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(tag = "type")]
pub enum StreamEvent<T = serde_json::Value> {
#[serde(rename = "data")]
Data {
id: Option<String>,
event_name: Option<String>,
data: T,
},
#[serde(rename = "ping")]
Ping {
timestamp: i64,
},
#[serde(rename = "error")]
Error {
message: String,
},
#[serde(rename = "complete")]
Complete,
}
#[cfg(test)]
mod tests;