Skip to main content

sqlite_diff_rs/
lib.rs

1#![doc = include_str!("../README.md")]
2#![no_std]
3#![deny(clippy::mod_module_files)]
4#![allow(private_bounds, private_interfaces)]
5
6extern crate alloc;
7
8pub mod builders;
9#[cfg(feature = "debezium")]
10pub mod debezium;
11#[cfg(any(test, feature = "testing"))]
12pub mod differential_testing;
13pub(crate) mod encoding;
14pub mod errors;
15#[cfg(feature = "maxwell")]
16pub mod maxwell;
17pub mod parser;
18#[cfg(feature = "pg-walstream")]
19pub mod pg_walstream;
20#[cfg(feature = "pg-walstream")]
21pub mod pg_walstream_reverse;
22pub mod schema;
23#[cfg(any(test, feature = "testing"))]
24pub mod testing;
25#[cfg(feature = "wal2json")]
26pub mod wal2json;
27
28// Re-export main types
29#[cfg(feature = "diesel")]
30pub use builders::{Adapter, ApplyOps, Binder, BoundPatchsetOp, DefaultBinder};
31pub use builders::{
32    ChangeDelete, ChangeSet, ChangesetFormat, ChangesetOp, ChangesetUpdatePair, ColumnNames,
33    DiffOps, DiffSet, DiffSetBuilder, Indirect, Insert, PatchDelete, PatchSet, PatchsetFormat,
34    PatchsetOp, PatchsetUpdateEntry, Reverse, Update,
35};
36pub use encoding::Value;
37pub use parser::{FormatMarker, ParseError, ParsedDiffSet, TableSchema};
38pub(crate) use schema::IndexableValues;
39pub use schema::{DynTable, NamedColumns, SchemaWithPK, SimpleTable};
40
41// Type aliases for common use cases
42/// Type alias for `Update<T, ChangesetFormat, S, B>`.
43///
44/// Changeset updates store both old and new values for each column.
45pub type ChangeUpdate<T, S, B> = Update<T, ChangesetFormat, S, B>;
46
47/// Type alias for `Update<T, PatchsetFormat, S, B>`.
48///
49/// Patchset updates only store new values (PK values in new, non-PK as Undefined or new value).
50pub type PatchUpdate<T, S, B> = Update<T, PatchsetFormat, S, B>;
51
52// Re-export errors
53pub use errors::Error;