Skip to main content

sql_fun_server_api/
collection_management.rs

1use time::UtcDateTime;
2
3/// collection handle
4#[derive(serde::Serialize, serde::Deserialize, Debug)]
5#[serde(transparent)]
6pub struct CollectionHandle(String);
7
8/// argument for [`SqlFunServerApi::release_collection`]
9#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
10pub struct ReleaseCollectionArgs {
11    /// releasing collection handle
12    collection_handle: CollectionHandle,
13}
14
15/// argument for [`SqlFunServerApi::read_collection`]
16#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
17pub struct ReadCollectionArgs {
18    /// collection
19    collection_handle: CollectionHandle,
20
21    /// start offset
22    start_offset: usize,
23
24    /// read count
25    ///
26    /// when None, client requests read to end, but server implementation has a hard limit
27    count: Option<usize>,
28}
29
30/// collection
31#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
32pub struct Collection<T> {
33    /// handle for collecttion
34    handle: CollectionHandle,
35
36    /// length of collection
37    total_length: usize,
38
39    /// offset of items
40    offset: usize,
41
42    /// When true, client must be call `SqlFunServerApi::release_collection`
43    require_release: bool,
44
45    /// expiration time
46    expire_at: UtcDateTime,
47
48    /// collection items
49    items: Vec<T>,
50}