Skip to main content

selene_graph/
lib.rs

1//! In-memory property graph runtime.
2//!
3//! The graph crate owns node/edge storage, label sets, property maps, directed
4//! adjacency, built-in label/property indexes, typed mutation validation, and
5//! the CORE persistence provider. `SharedGraph` serializes writes through a
6//! transaction boundary while readers observe immutable snapshots. selene-db is
7//! a single native engine: the higher `selene-gql` layer owns GQL
8//! binding/planning and the one frozen native procedure registry. Edge property
9//! indexes remain outside the v1.0 storage contract.
10
11#![forbid(unsafe_code)]
12#![deny(missing_docs)]
13
14pub mod adjacency;
15pub mod candidate_state;
16mod candidate_state_shared;
17pub mod chunked_vec;
18pub(crate) mod committer;
19pub(crate) mod committer_batch;
20pub mod compaction;
21pub(crate) mod composite_property_index;
22pub mod composite_typed_index;
23mod consistency;
24pub mod core_provider;
25pub mod durable_provider;
26pub mod error;
27pub mod graph;
28pub mod graph_types;
29pub mod id_allocator;
30pub(crate) mod id_map;
31pub mod index_provider;
32pub mod json_search;
33mod json_search_candidates;
34pub mod mutator;
35pub(crate) mod panic_payload;
36pub(crate) mod parallel_scan;
37pub(crate) mod property_index;
38pub(crate) mod provider_fanout;
39mod recover;
40pub(crate) mod reentry;
41pub(crate) mod schema_index_kind;
42pub mod shared;
43mod shared_snapshot;
44pub mod store;
45pub mod text_index;
46pub mod text_search;
47pub mod type_validator;
48mod typed_float_key;
49pub mod typed_index;
50pub mod vector_index;
51pub mod vector_search;
52pub mod write_txn;
53
54pub use adjacency::{AdjacencyEdge, AdjacencyEntry};
55pub use candidate_state::{
56    CANDIDATE_STATE_PROVIDER_TAG, CANDIDATE_STATE_SUB, CandidateStateSpec,
57    MaintainedCandidateStateProvider,
58};
59pub use chunked_vec::ChunkedVec;
60pub use committer_batch::CommitBatching;
61pub use compaction::{CompactedCore, CompactionReport, CompactionStats, compact_core};
62pub use composite_typed_index::{
63    CompositeIndexValueError, CompositeKey, CompositeKeyComponent, CompositeTypedIndex,
64};
65pub use core_provider::{
66    CORE_EDGE_SUB, CORE_GTYP_SUB, CORE_META_SUB, CORE_NODE_SUB, CORE_PROVIDER_TAG, CORE_SCMA_SUB,
67    CORE_TIDX_SUB, CORE_VIDX_SUB, CoreProvider, DurableState,
68};
69pub use durable_provider::DurableProvider;
70pub use error::{GraphError, GraphResult};
71pub use graph::{
72    CompositePropertyIndexEntry, GraphMeta, SeleneGraph, TextIndexEntry, VectorIndexEntry,
73};
74pub use graph_types::{
75    DropBehavior, EdgeEndpointDef, EdgeTypeDef, GraphTypeDef, MAX_RECORD_TYPE_NESTING, NodeTypeDef,
76    PropertyDefaultRecordField, PropertyDefaultValue, PropertyElementType, PropertyTypeDef,
77    RecordFieldType, RecordFieldTypeDef, RecordFieldTypes, ValidationMode,
78};
79pub use id_allocator::IdAllocator;
80pub use index_provider::{
81    IndexProvider, ProviderError, ProviderTag, SubTag, VectorCandidateStateInfo,
82};
83pub use json_search::{
84    JSON_PATH_SELECTOR_LIMIT, JsonContainmentHit, JsonPathContainmentHit, JsonPathHit,
85    JsonPathValueHit, JsonSearchError,
86};
87pub use json_search_candidates::JsonPathContainmentCandidateOptions;
88pub use mutator::Mutator;
89pub use selene_core::JsonPathSelector;
90pub use selene_core::{HnswIndexConfig, IvfIndexConfig};
91pub use selene_persist::{DEFAULT_WAL_FILE_NAME, SyncPolicy, WalConfig};
92pub use shared::{SharedGraph, SharedGraphBuilder};
93pub use store::{EdgeStore, NodeStore, RowIndex};
94pub use text_index::{TextIndex, TextIndexMemoryUsage, TextIndexStats};
95pub use text_search::{TextSearchError, TextSearchHit};
96pub use type_validator::{EntityId, TypeViolation, validate_change, validate_entity_state};
97pub use typed_float_key::{NotNanError, NotNanF32, NotNanF64};
98pub use typed_index::{TypedIndex, TypedIndexKind};
99pub use vector_index::{
100    IVF_REBUILD_MIN_PENDING_RETRAIN_ENTRIES, IVF_REBUILD_PENDING_RETRAIN_BASIS_POINTS, VectorIndex,
101    VectorIndexConfig, VectorIndexKind, VectorIndexMaintenancePolicy, VectorIndexMemoryUsage,
102    VectorIndexRebuildEntry, VectorIndexRebuildReport, VectorIndexValueError,
103};
104pub use vector_search::{
105    ApproximateVectorExpansionOptions, ApproximateVectorSearchOptions, VectorCandidateSet,
106    VectorNeighborDirection, VectorNeighborSearchOptions, VectorNodeSearchHit, VectorSearchError,
107};
108pub use write_txn::{CommitOutcome, CommitWarning, WriteTxn};
109
110#[cfg(test)]
111mod closed_graph_tests;