#![cfg_attr(not(feature = "std"), no_std)]
#![deny(clippy::all, clippy::pedantic, clippy::disallowed_methods)]
#![allow(
clippy::default_trait_access,
clippy::if_not_else,
clippy::iter_not_returning_iterator,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
clippy::module_name_repetitions,
clippy::must_use_candidate,
clippy::needless_pass_by_value,
clippy::redundant_closure_for_method_calls,
clippy::similar_names,
clippy::too_many_lines,
clippy::unnecessary_wraps,
clippy::unreadable_literal
)]
extern crate alloc;
pub use db::{
BlobCompactionHandle, BlobCompactionProgress, Builder, CacheStats, CompactionHandle,
CompactionProgress, CorruptPageInfo, Database, MultimapTableDefinition, MultimapTableHandle,
ReadOnlyDatabase, ReadVerification, ReadVerificationAction, ReadableDatabase, RepairSession,
StorageBackend, TableDefinition, TableHandle, TransactionInfo, UntypedMultimapTableHandle,
UntypedTableHandle, VerifyLevel,
};
#[cfg(feature = "std")]
pub use db::{SalvageReport, VerifyReport};
pub use error::{
BackendError, CommitError, CompactionError, DatabaseError, Error, SavepointError,
SetDurabilityError, StorageError, TableError, TransactionError,
};
#[cfg(feature = "std")]
pub use group_commit::{GroupCommitError, WriteBatch};
#[cfg(feature = "std")]
pub use incremental::{IncrementalBackupReport, IncrementalImportReport, IncrementalSnapshot};
#[cfg(feature = "std")]
pub use integrity_scanner::{IntegrityScannerConfig, IntegrityScannerHandle, ScanCycleResult};
pub use legacy_tuple_types::Legacy;
pub use multimap_table::{
MultimapRange, MultimapTable, MultimapValue, ReadOnlyMultimapTable,
ReadOnlyUntypedMultimapTable, ReadableMultimapTable,
};
pub use table::{
ExtractIf, Range, ReadOnlyTable, ReadOnlyUntypedTable, ReadableTable, ReadableTableMetadata,
Table, TableStats,
};
pub use transactions::{DatabaseStats, Durability, ReadTransaction, WriteTransaction};
pub use tree_store::{
AccessGuard, AccessGuardMut, AccessGuardMutInPlace, CompressionConfig, FlashBackend,
FlashGeometry, FlashHardware, FlashWearStats, RawEntryGuard, RawEntryIter, Savepoint,
};
pub use types::{Key, MutInPlaceValue, TypeName, Value};
pub use blob_store::{
BlobCompactionPolicy, BlobCompactionReport, BlobId, BlobInput, BlobMeta, BlobReader, BlobRef,
BlobStats, BlobWriter, CausalEdge, CausalLink, CausalPath, ContentType, DedupStats,
MAX_TAGS_PER_BLOB, RelationType, StoreOptions,
};
pub use cdc::{CdcConfig, CdcKey, CdcRecord, ChangeOp, ChangeStream};
pub use composite::{BlobQueryProvider, CompositeQuery, ScoredBlob, SignalScores, SignalWeights};
pub use ivfpq::{
Codebooks, IndexConfig, IvfPqIndex, IvfPqIndexDefinition, MetadataFilter, MetadataMap,
MetadataValue, ReadOnlyIvfPqIndex, SearchParams,
};
pub use merge::{
BitwiseOr, BytesAppend, FloatAdd, FnMergeOperator, MergeOperator, NumericAdd, NumericMax,
NumericMin, SaturatingAdd, merge_fn,
};
#[cfg(feature = "metrics")]
pub use observer::DbMetrics;
pub use observer::{CommitInfo, DatabaseObserver};
pub use probe_select::DiversityConfig;
pub use temporal::HybridLogicalClock;
#[cfg(feature = "std")]
pub use ttl_table::{ReadOnlyTtlTable, TtlAccessGuard, TtlRange, TtlTable, TtlTableDefinition};
pub use vector::{BinaryQuantized, DynVec, FixedVec, SQVec, ScalarQuantized};
pub use vector_ops::{
DistanceMetric, Neighbor, cosine_distance, cosine_similarity, dequantize_scalar, dot_product,
euclidean_distance_sq, hamming_distance, l2_norm, l2_normalize, l2_normalized,
manhattan_distance, nearest_k, nearest_k_fixed, quantize_binary, quantize_scalar, read_f32_le,
sq_dot_product, sq_euclidean_distance_sq, write_f32_le,
};
pub type Result<T = (), E = StorageError> = core::result::Result<T, E>;
pub mod backends;
pub mod blob_store;
pub mod cdc;
mod compat;
mod complex_types;
pub mod composite;
mod db;
pub mod error;
#[cfg(feature = "std")]
pub mod group_commit;
#[cfg(feature = "std")]
pub mod incremental;
#[cfg(feature = "std")]
pub mod integrity_scanner;
pub mod ivfpq;
mod legacy_tuple_types;
pub mod merge;
mod multimap_table;
pub mod observer;
pub mod probe_select;
mod sealed;
pub mod storage_traits;
mod table;
pub mod temporal;
mod transaction_tracker;
mod transactions;
mod tree_store;
#[cfg(feature = "std")]
pub mod ttl_table;
mod tuple_types;
mod types;
pub mod vector;
pub mod vector_ops;
#[cfg(test)]
fn create_tempfile() -> tempfile::NamedTempFile {
if cfg!(target_os = "wasi") {
tempfile::NamedTempFile::new_in("/tmp").unwrap()
} else {
tempfile::NamedTempFile::new().unwrap()
}
}