hidane_core/lib.rs
1//! The Firestore data model as hidane implements it.
2//!
3//! - [`bson`]: the BSON types of an enterprise database (min and max keys, object IDs, regular
4//! expressions, 32-bit integers, 128-bit decimals, BSON timestamps, binary data).
5//! - [`order`]: how Firestore orders values (`orderBy`, cursors, range filters) and document
6//! names (`__name__`).
7//! - [`key`]: an order-preserving byte encoding of the same order, for storage keys and indexes:
8//! `compare(a, b) == encode(a).cmp(&encode(b))` for every pair of values.
9//! - [`path`]: document and collection paths; [`field_path`]: field paths and mask operations.
10//! - [`store`]: the storage boundary and the in-memory engine (versioned documents, snapshot
11//! reads, commits that report what changed).
12//! - [`transform`]: field transforms (server timestamps, increments, array unions, …).
13//! - [`normalize`]: what Firestore does to a value when it is written (timestamps lose their
14//! sub-microsecond digits).
15//! - [`export`]: the official emulator's export format (LevelDB logs of App Engine entities).
16//!
17//! Every rule here was checked against the official emulator v1.22.0; the observations live in
18//! `tests/fixtures/value_order.json` and are regenerated with `tools/oracle/value_order.py`.
19
20pub mod bson;
21pub mod export;
22pub mod field_path;
23pub mod hash_order;
24pub mod key;
25pub mod normalize;
26pub mod order;
27pub mod path;
28pub mod store;
29pub mod transform;