(** 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 ;;