//! The holochain state crate provides helpers and abstractions for working
//! with the `holochain_sqlite` crate.
//!
//! ## Reads
//! The main abstraction for creating data read queries is the [`Query`](query::Query) trait.
//! This can be implemented to make constructing complex queries easier.
//!
//! The [`source_chain`] module provides the [`SourceChain`](source_chain::SourceChain) type,
//! which is the abstraction for working with chains of actions.
//!
//! The [`host_fn_workspace`] module provides abstractions for reading data during workflows.
//!
//! ## Writes
//! The [`mutations`] module is the complete set of functions
//! for writing data to sqlite in holochain.
//!
//! ## In-memory
//! The [`scratch`] module provides the [`Scratch`](scratch::Scratch) type for
//! reading and writing data in memory that is not visible anywhere else.
//!
//! The SourceChain type uses the Scratch for in-memory operations which
//! can be flushed to the database.
//!
//! The Query trait allows combining arbitrary database SQL queries with
//! the scratch space so reads can union across the database and in-memory data.
// TODO - address the underlying issue: