1use ckb_error::{Error, InternalErrorKind};
7use std::{fmt, result};
8
9pub mod db;
10pub mod db_with_ttl;
11pub mod iter;
12pub mod read_only_db;
13pub mod snapshot;
14pub mod transaction;
15pub mod write_batch;
16
17#[cfg(test)]
18mod tests;
19
20pub use crate::db::RocksDB;
21pub use crate::db_with_ttl::DBWithTTL;
22pub use crate::iter::DBIterator;
23pub use crate::read_only_db::ReadOnlyDB;
24pub use crate::snapshot::RocksDBSnapshot;
25pub use crate::transaction::{RocksDBTransaction, RocksDBTransactionSnapshot};
26pub use crate::write_batch::RocksDBWriteBatch;
27pub use rocksdb::{
28    self as internal, DBPinnableSlice, DBVector, Direction, Error as DBError, IteratorMode,
29    ReadOptions, WriteBatch,
30};
31
32pub type Result<T> = result::Result<T, Error>;
34
35fn internal_error<S: fmt::Display>(reason: S) -> Error {
36    let message = reason.to_string();
37    if message.starts_with("Corruption:") {
38        InternalErrorKind::Database.other(message).into()
39    } else {
40        InternalErrorKind::DataCorrupted.other(message).into()
41    }
42}