agdb/
lib.rs

1//! Persistent embedded memory mapped graph database with native object queries.
2//!
3//! [Readme](https://github.com/agnesoft/agdb) |
4//! [Quickstart](https://github.com/agnesoft/agdb#quickstart) |
5//! [Queries](https://github.com/agnesoft/agdb/blob/main/docs/queries.md) |
6//! [Efficient agdb](https://github.com/agnesoft/agdb/blob/main/docs/efficient_agdb.md)
7//!
8//! # Example
9//!
10//! ```
11//! # let _test_file = agdb::test_utilities::test_file::TestFile::from("db4.agdb");
12//! use agdb::{Db, QueryBuilder};
13//!
14//! let mut db = Db::new("db4.agdb").unwrap();
15//! db.exec_mut(QueryBuilder::insert().nodes().values([[("key", 123).into()]]).query()).unwrap();
16//!
17//! let result = db.exec(QueryBuilder::select().ids(1).query()).unwrap();
18//! println!("{:?}", result);
19//! // QueryResult { result: 1, elements: [ DbElement { id: DbId(1), values: [ DbKeyValue { key: String("key"), value: Int(123) } ] } ] }
20//! ```
21
22extern crate self as agdb;
23
24mod collections;
25mod command;
26mod db;
27mod graph;
28mod graph_search;
29mod query;
30mod query_builder;
31mod storage;
32mod transaction;
33mod transaction_mut;
34mod utilities;
35
36//#[cfg(any(test, doctest))] //TODO: Enable once doctest is stabilised
37pub mod test_utilities;
38
39#[cfg(any(feature = "serde", feature = "openapi"))]
40pub use query::QueryType;
41
42#[cfg(feature = "derive")]
43pub use agdb_derive::{DbElement, DbSerialize, DbType, DbTypeMarker, DbValue};
44
45#[cfg(feature = "api")]
46pub mod api_def;
47#[cfg(feature = "api")]
48pub use agdb_derive::{TypeDef, TypeDefImpl, impl_def};
49
50pub use db::Db;
51pub use db::DbAny;
52pub use db::DbAnyTransaction;
53pub use db::DbAnyTransactionMut;
54pub use db::DbFile;
55pub use db::DbFileTransaction;
56pub use db::DbFileTransactionMut;
57pub use db::DbImpl;
58pub use db::DbMemory;
59pub use db::DbMemoryTransaction;
60pub use db::DbMemoryTransactionMut;
61pub use db::DbTransaction;
62pub use db::DbTransactionMut;
63pub use db::db_element::DbElement;
64pub use db::db_error::DbError;
65pub use db::db_f64::DbF64;
66pub use db::db_id::DbId;
67pub use db::db_key_order::DbKeyOrder;
68pub use db::db_key_order::DbKeyOrders;
69pub use db::db_key_value::DbKeyValue;
70pub use db::db_type::DbType;
71pub use db::db_type::DbTypeMarker;
72pub use db::db_value::DbValue;
73pub use query::Query;
74pub use query::QueryMut;
75pub use query::insert_aliases_query::InsertAliasesQuery;
76pub use query::insert_edges_query::InsertEdgesQuery;
77pub use query::insert_index_query::InsertIndexQuery;
78pub use query::insert_nodes_query::InsertNodesQuery;
79pub use query::insert_values_query::InsertValuesQuery;
80pub use query::query_condition::Comparison;
81pub use query::query_condition::CountComparison;
82pub use query::query_condition::KeyValueComparison;
83pub use query::query_condition::QueryCondition;
84pub use query::query_condition::QueryConditionData;
85pub use query::query_condition::QueryConditionLogic;
86pub use query::query_condition::QueryConditionModifier;
87pub use query::query_id::QueryId;
88pub use query::query_ids::QueryIds;
89pub use query::query_result::QueryResult;
90pub use query::query_values::QueryValues;
91pub use query::remove_aliases_query::RemoveAliasesQuery;
92pub use query::remove_index_query::RemoveIndexQuery;
93pub use query::remove_query::RemoveQuery;
94pub use query::remove_values_query::RemoveValuesQuery;
95pub use query::search_query::SearchQuery;
96pub use query::search_query::SearchQueryAlgorithm;
97pub use query::select_aliases_query::SelectAliasesQuery;
98pub use query::select_all_aliases_query::SelectAllAliasesQuery;
99pub use query::select_edge_count_query::SelectEdgeCountQuery;
100pub use query::select_indexes_query::SelectIndexesQuery;
101pub use query::select_key_count_query::SelectKeyCountQuery;
102pub use query::select_keys_query::SelectKeysQuery;
103pub use query::select_node_count::SelectNodeCountQuery;
104pub use query::select_values_query::SelectValuesQuery;
105pub use query_builder::QueryBuilder;
106pub use storage::StorageData;
107pub use storage::StorageSlice;
108pub use storage::any_storage::AnyStorage;
109pub use storage::file_storage::FileStorage;
110pub use storage::file_storage_memory_mapped::FileStorageMemoryMapped;
111pub use storage::memory_storage::MemoryStorage;
112pub use transaction::Transaction;
113pub use transaction_mut::TransactionMut;
114pub use utilities::serialize::Serialize as AgdbSerialize;
115pub use utilities::stable_hash::StableHash;