use crate::grpc::proto;
use futures::Stream;
use std::pin::Pin;
use tonic::Status;
pub type StreamQueryStream =
Pin<Box<dyn Stream<Item = Result<proto::Node, Status>> + Send + 'static>>;
pub type StreamEventsStream =
Pin<Box<dyn Stream<Item = Result<proto::Event, Status>> + Send + 'static>>;
pub type SubscribeToSessionStream =
Pin<Box<dyn Stream<Item = Result<proto::SessionEvent, Status>> + Send + 'static>>;
pub async fn create_query_stream(
_query: proto::QueryRequest,
) -> Result<StreamQueryStream, Status> {
Err(Status::unimplemented("Streaming queries not yet implemented"))
}
pub async fn create_event_stream(
_request: proto::StreamEventsRequest,
) -> Result<StreamEventsStream, Status> {
Err(Status::unimplemented("Event streaming not yet implemented"))
}
pub async fn create_session_subscription(
_request: proto::SubscribeRequest,
) -> Result<SubscribeToSessionStream, Status> {
Err(Status::unimplemented(
"Session subscription not yet implemented",
))
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_streaming_stubs() {
let query_req = proto::QueryRequest::default();
assert!(create_query_stream(query_req).await.is_err());
let event_req = proto::StreamEventsRequest::default();
assert!(create_event_stream(event_req).await.is_err());
let sub_req = proto::SubscribeRequest::default();
assert!(create_session_subscription(sub_req).await.is_err());
}
}