use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Items<C, E = ()> {
pub items: C,
#[serde(flatten)]
pub extra_fields: E,
}
impl<C> Items<C> {
pub fn new(items: C) -> Self {
Self {
items,
extra_fields: (),
}
}
}
impl<C, E> Items<C, E> {
pub fn new_with_extra_fields(items: C, extra_fields: E) -> Self {
Self {
items,
extra_fields,
}
}
}
impl<C, E: Default> From<C> for Items<C, E> {
fn from(items: C) -> Self {
Items {
items,
extra_fields: E::default(),
}
}
}
pub type ItemsVec<T, E = ()> = Items<Vec<T>, E>;
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[skip_serializing_none]
pub struct Cursor {
pub next_cursor: Option<String>,
}
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[skip_serializing_none]
pub struct IgnoreUnknownIds {
pub ignore_unknown_ids: bool,
}