Something went wrong. Try again.
An embedded, single-file key-value store for OCaml, inspired by BoltDB and LMDB.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930(** Database handle and operations *)
type t = { path : string [@warning "-69"] ; meta : Types.metadata }
let open_db path = match Io.read_header path with | Ok meta -> Ok { path; meta } | Error (Error.IO_error _) -> Result.bind (Io.create_database path 4096) (fun () -> Result.map (fun meta -> { path; meta }) (Io.read_header path)) | Error err -> Error err;;
let close _ = Ok ()
let metadata db = db.meta
let view _ f = let txn : Types.ro Txn.t = Obj.magic () in f txn;;
let update _ f = let txn : Types.rw Txn.t = Obj.magic () in f txn;;