grafbase_sdk/types/
subscription_item.rs

1use crate::{types::Response, wit};
2
3/// Represents one or multiple items from a subscription.
4#[derive(Debug)]
5pub enum SubscriptionItem {
6    /// Single response item
7    Single(Response),
8    /// Multiple response items at once
9    Multiple(Vec<Response>),
10}
11
12impl From<Response> for SubscriptionItem {
13    fn from(value: Response) -> Self {
14        SubscriptionItem::Single(value)
15    }
16}
17
18impl From<Vec<Response>> for SubscriptionItem {
19    fn from(value: Vec<Response>) -> Self {
20        SubscriptionItem::Multiple(value)
21    }
22}
23
24impl From<SubscriptionItem> for wit::SubscriptionItem {
25    fn from(value: SubscriptionItem) -> Self {
26        match value {
27            SubscriptionItem::Single(response) => wit::SubscriptionItem::Single(response.into()),
28            SubscriptionItem::Multiple(responses) => {
29                wit::SubscriptionItem::Multiple(responses.into_iter().map(Into::into).collect())
30            }
31        }
32    }
33}