Skip to main content

contextdb_engine/
sync.rs

1use crate::database::Database;
2use crate::sync_types::{ApplyResult, ChangeSet, ConflictPolicies};
3use contextdb_core::{Lsn, Result};
4
5pub trait ChangeTracking {
6    fn changes_since(&self, since_lsn: Lsn) -> ChangeSet;
7    fn current_lsn(&self) -> Lsn;
8}
9
10pub trait ChangeApplication {
11    fn apply_changes(&self, changes: ChangeSet, policies: &ConflictPolicies)
12    -> Result<ApplyResult>;
13}
14
15impl ChangeTracking for Database {
16    fn changes_since(&self, since_lsn: Lsn) -> ChangeSet {
17        Database::changes_since(self, since_lsn)
18    }
19
20    fn current_lsn(&self) -> Lsn {
21        Database::current_lsn(self)
22    }
23}
24
25impl ChangeApplication for Database {
26    fn apply_changes(
27        &self,
28        changes: ChangeSet,
29        policies: &ConflictPolicies,
30    ) -> Result<ApplyResult> {
31        Database::apply_changes(self, changes, policies)
32    }
33}