use std::sync::Arc;
use serde::Deserialize;
use crate::{diagnostics::DiagnosticsContext, models::ResponseHeaders};
#[derive(Debug)]
pub struct FeedPage<T> {
items: Vec<T>,
headers: ResponseHeaders,
diagnostics: Arc<DiagnosticsContext>,
}
impl<T> FeedPage<T> {
pub(crate) fn new(
items: Vec<T>,
headers: ResponseHeaders,
diagnostics: Arc<DiagnosticsContext>,
) -> Self {
Self {
items,
headers,
diagnostics,
}
}
pub fn items(&self) -> &[T] {
&self.items
}
pub fn into_items(self) -> Vec<T> {
self.items
}
pub fn headers(&self) -> &ResponseHeaders {
&self.headers
}
pub fn diagnostics(&self) -> Arc<DiagnosticsContext> {
Arc::clone(&self.diagnostics)
}
}
#[derive(Deserialize)]
pub(crate) struct FeedBody<T> {
#[serde(alias = "Documents")]
#[serde(alias = "DocumentCollections")]
#[serde(alias = "Databases")]
#[serde(alias = "Offers")]
pub(crate) items: Vec<T>,
}