use time::UtcDateTime;
#[derive(serde::Serialize, serde::Deserialize, Debug)]
#[serde(transparent)]
pub struct CollectionHandle(String);
#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
pub struct ReleaseCollectionArgs {
collection_handle: CollectionHandle,
}
#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
pub struct ReadCollectionArgs {
collection_handle: CollectionHandle,
start_offset: usize,
count: Option<usize>,
}
#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
pub struct Collection<T> {
handle: CollectionHandle,
total_length: usize,
offset: usize,
require_release: bool,
expire_at: UtcDateTime,
items: Vec<T>,
}