iota_graphql_rpc/
consistency.rs1use async_graphql::connection::CursorType;
6use serde::{Deserialize, Serialize};
7
8use crate::types::cursor::{JsonCursor, ScanLimited};
9
10pub(crate) const UNAVAILABLE_CHECKPOINT_SEQUENCE_NUMBER: u64 = u64::MAX;
12
13#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
16pub(crate) struct ConsistentIndexCursor {
17 #[serde(rename = "i")]
18 pub ix: usize,
19 pub c: u64,
22}
23
24#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Debug)]
28pub(crate) struct ConsistentNamedCursor {
29 #[serde(rename = "n")]
30 pub name: String,
31 pub c: u64,
34}
35
36pub(crate) trait Checkpointed: CursorType {
39 fn checkpoint_viewed_at(&self) -> u64;
40}
41
42impl Checkpointed for JsonCursor<ConsistentIndexCursor> {
43 fn checkpoint_viewed_at(&self) -> u64 {
44 self.c
45 }
46}
47
48impl Checkpointed for JsonCursor<ConsistentNamedCursor> {
49 fn checkpoint_viewed_at(&self) -> u64 {
50 self.c
51 }
52}
53
54impl ScanLimited for JsonCursor<ConsistentIndexCursor> {}
55
56impl ScanLimited for JsonCursor<ConsistentNamedCursor> {}