keri_core/database/
mod.rs1use 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}