Skip to main content

lineark_sdk/
pagination.rs

1use serde::{Deserialize, Serialize};
2
3/// Relay-style page info for cursor-based pagination.
4#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5#[serde(rename_all = "camelCase", default)]
6pub struct PageInfo {
7    pub has_next_page: bool,
8    pub end_cursor: Option<String>,
9    pub has_previous_page: Option<bool>,
10    pub start_cursor: Option<String>,
11}
12
13/// A paginated collection of nodes with page info.
14#[derive(Debug, Clone, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16#[serde(bound(deserialize = "T: serde::de::DeserializeOwned"))]
17pub struct Connection<T> {
18    #[serde(default)]
19    pub nodes: Vec<T>,
20    #[serde(rename = "pageInfo", default)]
21    pub page_info: PageInfo,
22}