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}