keri_core/database/
mod.rs

1use timestamped::TimestampedSignedEventMessage;
2
3use crate::{
4    event_message::{
5        signature::Transferable,
6        signed_event_message::{
7            SignedEventMessage, SignedNontransferableReceipt, SignedTransferableReceipt,
8        },
9    },
10    prefix::IdentifierPrefix,
11};
12
13pub mod escrow;
14#[cfg(feature = "mailbox")]
15pub mod mailbox;
16pub mod redb;
17pub mod sled;
18pub(crate) mod tables;
19pub(crate) mod timestamped;
20
21pub enum QueryParameters<'a> {
22    BySn {
23        id: IdentifierPrefix,
24        sn: u64,
25    },
26    Range {
27        id: IdentifierPrefix,
28        start: u64,
29        limit: u64,
30    },
31    All {
32        id: &'a IdentifierPrefix,
33    },
34}
35
36pub trait EventDatabase {
37    type Error;
38    fn add_kel_finalized_event(
39        &self,
40        event: SignedEventMessage,
41        id: &IdentifierPrefix,
42    ) -> Result<(), Self::Error>;
43
44    fn add_receipt_t(
45        &self,
46        receipt: SignedTransferableReceipt,
47        id: &IdentifierPrefix,
48    ) -> Result<(), Self::Error>;
49
50    fn add_receipt_nt(
51        &self,
52        receipt: SignedNontransferableReceipt,
53        id: &IdentifierPrefix,
54    ) -> Result<(), Self::Error>;
55
56    fn get_kel_finalized_events(
57        &self,
58        params: QueryParameters,
59    ) -> Option<impl DoubleEndedIterator<Item = TimestampedSignedEventMessage>>;
60
61    fn get_receipts_t(
62        &self,
63        params: QueryParameters,
64    ) -> Option<impl DoubleEndedIterator<Item = Transferable>>;
65
66    fn get_receipts_nt(
67        &self,
68        params: QueryParameters,
69    ) -> Option<impl DoubleEndedIterator<Item = SignedNontransferableReceipt>>;
70}