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