-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Bindings for libmdbx, an embedded key/value store
--
-- Haskell bindings for libmdbx.
--
-- See documentation in the main module or check the README on GitHub at
-- https://github.com/fjvallarino/libmdbx-hs#readme.
@package libmdbx
@version 0.1.0.2
-- | Low level bindings to libmdbx functions.
module Mdbx.FFI
-- | Flags for opening and environment.
data MdbxEnvFlags
MdbxEnvDefaults :: MdbxEnvFlags
MdbxSyncDurable :: MdbxEnvFlags
MdbxNosubdir :: MdbxEnvFlags
MdbxSafeNosync :: MdbxEnvFlags
MdbxMapasync :: MdbxEnvFlags
MdbxRdonly :: MdbxEnvFlags
MdbxNometasync :: MdbxEnvFlags
MdbxWritemap :: MdbxEnvFlags
MdbxUtterlyNosync :: MdbxEnvFlags
MdbxNotls :: MdbxEnvFlags
MdbxExclusive :: MdbxEnvFlags
MdbxNordahead :: MdbxEnvFlags
MdbxNomeminit :: MdbxEnvFlags
MdbxCoalesce :: MdbxEnvFlags
MdbxLiforeclaim :: MdbxEnvFlags
MdbxPageperturb :: MdbxEnvFlags
MdbxAccede :: MdbxEnvFlags
-- | Environment object, needed for all the operations.
newtype MdbxEnv
MdbxEnv :: Ptr MdbxEnv -> MdbxEnv
-- | UNIX permissions to set on created files. Zero value means to open
-- existing, but do not create.
type MdbxEnvMode = (CUInt)
-- | Creates an environment. Represents a database in the file system.
mdbx_env_create :: IO (Int, MdbxEnv)
-- | Opens an environment. Receives name, flags and mode.
mdbx_env_open :: MdbxEnv -> String -> [MdbxEnvFlags] -> MdbxEnvMode -> IO Int
-- | Closes an environment.
mdbx_env_close :: MdbxEnv -> IO Int
-- | Flags for a transaction.
data MdbxTxnFlags
MdbxTxnReadwrite :: MdbxTxnFlags
MdbxTxnNosync :: MdbxTxnFlags
MdbxTxnRdonly :: MdbxTxnFlags
MdbxTxnNometasync :: MdbxTxnFlags
MdbxTxnRdonlyPrepare :: MdbxTxnFlags
MdbxTxnTry :: MdbxTxnFlags
-- | Transaction instance. Needed for all operations with data, even
-- reading.
newtype MdbxTxn
MdbxTxn :: Ptr MdbxTxn -> MdbxTxn
-- | Begins a new transaction.
--
-- Arguments:
--
--
-- - Environment.
-- - Parent transaction, or Nothing.
-- - Flags.
--
mdbx_txn_begin :: MdbxEnv -> Maybe MdbxTxn -> [MdbxTxnFlags] -> IO (Int, MdbxTxn)
-- | Commits a transaction.
mdbx_txn_commit :: MdbxTxn -> IO Int
-- | Aborts a transaction.
mdbx_txn_abort :: MdbxTxn -> IO Int
-- | Gets the environment from a transaction.
mdbx_txn_env :: MdbxTxn -> IO MdbxEnv
-- | Flags for a database.
data MdbxDbFlags
MdbxDbDefaults :: MdbxDbFlags
MdbxReversekey :: MdbxDbFlags
MdbxDupsort :: MdbxDbFlags
MdbxIntegerkey :: MdbxDbFlags
MdbxDupfixed :: MdbxDbFlags
MdbxIntegerdup :: MdbxDbFlags
MdbxReversedup :: MdbxDbFlags
MdbxCreate :: MdbxDbFlags
MdbxDbAccede :: MdbxDbFlags
-- | Database instance. Represents a logical table in the database.
type MdbxDbi = (CUInt)
-- | Opens a database.
--
-- Arguments:
--
--
-- - Transaction.
-- - Name.
-- - Flags.
--
mdbx_dbi_open :: MdbxTxn -> Maybe String -> [MdbxDbFlags] -> IO (Int, MdbxDbi)
-- | Closes a database.
mdbx_dbi_close :: MdbxEnv -> MdbxDbi -> IO Int
-- | Binary blob representing a key or value in the database.
data MdbxVal
MdbxVal :: {-# UNPACK #-} !CULong -> {-# UNPACK #-} !Ptr () -> MdbxVal
[mvlSize] :: MdbxVal -> {-# UNPACK #-} !CULong
[mvlData] :: MdbxVal -> {-# UNPACK #-} !Ptr ()
-- | Sample empty value
emptyMdbxVal :: MdbxVal
-- | Flags for all data related operations.
data MdbxPutFlags
MdbxUpsert :: MdbxPutFlags
MdbxNooverwrite :: MdbxPutFlags
MdbxNodupdata :: MdbxPutFlags
MdbxCurrent :: MdbxPutFlags
MdbxAlldups :: MdbxPutFlags
MdbxReserve :: MdbxPutFlags
MdbxAppend :: MdbxPutFlags
MdbxAppenddup :: MdbxPutFlags
MdbxMultiple :: MdbxPutFlags
-- | Stores a key/value pair.
--
-- Arguments:
--
--
-- - Transaction.
-- - Database.
-- - Key.
-- - Value.
--
mdbx_put :: MdbxTxn -> MdbxDbi -> MdbxVal -> MdbxVal -> [MdbxPutFlags] -> IO Int
-- | Gets a value with the given key.
--
-- Arguments:
--
--
-- - Transaction.
-- - Database.
-- - Key.
--
mdbx_get :: MdbxTxn -> MdbxDbi -> MdbxVal -> IO (Int, MdbxVal)
-- | Gets a value with the given key.
--
-- Arguments:
--
--
-- - Transaction.
-- - Database.
-- - Key.
--
mdbx_del :: MdbxTxn -> MdbxDbi -> MdbxVal -> Maybe MdbxVal -> IO Int
-- | Flags for cursor operations.
data MdbxCursorOp
MdbxFirst :: MdbxCursorOp
MdbxFirstDup :: MdbxCursorOp
MdbxGetBoth :: MdbxCursorOp
MdbxGetBothRange :: MdbxCursorOp
MdbxGetCurrent :: MdbxCursorOp
MdbxGetMultiple :: MdbxCursorOp
MdbxLast :: MdbxCursorOp
MdbxLastDup :: MdbxCursorOp
MdbxNext :: MdbxCursorOp
MdbxNextDup :: MdbxCursorOp
MdbxNextMultiple :: MdbxCursorOp
MdbxNextNodup :: MdbxCursorOp
MdbxPrev :: MdbxCursorOp
MdbxPrevDup :: MdbxCursorOp
MdbxPrevNodup :: MdbxCursorOp
MdbxSet :: MdbxCursorOp
MdbxSetKey :: MdbxCursorOp
MdbxSetRange :: MdbxCursorOp
MdbxPrevMultiple :: MdbxCursorOp
MdbxSetLowerbound :: MdbxCursorOp
-- | Cursor instance. Used for efficient navigation in a database.
newtype MdbxCursor
MdbxCursor :: Ptr MdbxCursor -> MdbxCursor
-- | Opens a new cursor.
--
-- Arguments:
--
--
-- - Transaction.
-- - Database.
--
mdbx_cursor_open :: MdbxTxn -> MdbxDbi -> IO (Int, MdbxCursor)
-- | Closes a cursor.
mdbx_cursor_close :: MdbxCursor -> IO ()
-- | Removes the current key/value pair.
mdbx_cursor_del :: MdbxCursor -> [MdbxPutFlags] -> IO Int
-- | Returns the current key/value pair.
mdbx_cursor_get :: MdbxCursor -> MdbxVal -> MdbxCursorOp -> IO (Int, MdbxVal, MdbxVal)
-- | Sets the value for the current key.
--
-- Arguments:
--
--
-- - Cursor.
-- - Key.
-- - Value.
-- - FLags.
--
mdbx_cursor_put :: MdbxCursor -> MdbxVal -> MdbxVal -> [MdbxPutFlags] -> IO Int
-- | Returns the count of duplicates in the current key.
mdbx_cursor_count :: MdbxCursor -> IO (Int, CSize)
-- | Returns the description of a given error number.
mdbx_strerror :: Int -> IO String
-- | Compares two values as a binary blob.
mdbx_cmp :: MdbxTxn -> MdbxDbi -> MdbxVal -> MdbxVal -> IO Int
-- | Error codes for the different operations.
data MdbxError
MdbxKeyexist :: MdbxError
MdbxFirstLmdbErrcode :: MdbxError
MdbxNotfound :: MdbxError
MdbxPageNotfound :: MdbxError
MdbxCorrupted :: MdbxError
MdbxPanic :: MdbxError
MdbxVersionMismatch :: MdbxError
MdbxInvalid :: MdbxError
MdbxMapFull :: MdbxError
MdbxDbsFull :: MdbxError
MdbxReadersFull :: MdbxError
MdbxTxnFull :: MdbxError
MdbxCursorFull :: MdbxError
MdbxPageFull :: MdbxError
MdbxUnableExtendMapsize :: MdbxError
MdbxIncompatible :: MdbxError
MdbxBadRslot :: MdbxError
MdbxBadTxn :: MdbxError
MdbxBadValsize :: MdbxError
MdbxBadDbi :: MdbxError
MdbxProblem :: MdbxError
MdbxLastLmdbErrcode :: MdbxError
MdbxBusy :: MdbxError
MdbxFirstAddedErrcode :: MdbxError
MdbxEmultival :: MdbxError
MdbxEbadsign :: MdbxError
MdbxWannaRecovery :: MdbxError
MdbxEkeymismatch :: MdbxError
MdbxTooLarge :: MdbxError
MdbxThreadMismatch :: MdbxError
MdbxTxnOverlapping :: MdbxError
MdbxLastAddedErrcode :: MdbxError
MdbxResultTrue :: MdbxError
MdbxSuccess :: MdbxError
MdbxResultFalse :: MdbxError
MdbxEperm :: MdbxError
MdbxEnofile :: MdbxError
MdbxEintr :: MdbxError
MdbxEio :: MdbxError
MdbxEnomem :: MdbxError
MdbxEaccess :: MdbxError
MdbxEremote :: MdbxError
MdbxEinval :: MdbxError
MdbxErofs :: MdbxError
MdbxEnosys :: MdbxError
MdbxEnodata :: MdbxError
instance GHC.Classes.Ord Mdbx.FFI.MdbxError
instance GHC.Classes.Eq Mdbx.FFI.MdbxError
instance GHC.Show.Show Mdbx.FFI.MdbxError
instance GHC.Classes.Ord Mdbx.FFI.MdbxEnvFlags
instance GHC.Classes.Eq Mdbx.FFI.MdbxEnvFlags
instance GHC.Show.Show Mdbx.FFI.MdbxEnvFlags
instance GHC.Classes.Ord Mdbx.FFI.MdbxTxnFlags
instance GHC.Classes.Eq Mdbx.FFI.MdbxTxnFlags
instance GHC.Show.Show Mdbx.FFI.MdbxTxnFlags
instance GHC.Classes.Ord Mdbx.FFI.MdbxDbFlags
instance GHC.Classes.Eq Mdbx.FFI.MdbxDbFlags
instance GHC.Show.Show Mdbx.FFI.MdbxDbFlags
instance GHC.Show.Show Mdbx.FFI.MdbxVal
instance GHC.Classes.Eq Mdbx.FFI.MdbxVal
instance GHC.Classes.Ord Mdbx.FFI.MdbxPutFlags
instance GHC.Classes.Eq Mdbx.FFI.MdbxPutFlags
instance GHC.Show.Show Mdbx.FFI.MdbxPutFlags
instance GHC.Enum.Enum Mdbx.FFI.MdbxCursorOp
instance GHC.Classes.Ord Mdbx.FFI.MdbxCursorOp
instance GHC.Classes.Eq Mdbx.FFI.MdbxCursorOp
instance GHC.Show.Show Mdbx.FFI.MdbxCursorOp
instance Foreign.Storable.Storable Mdbx.FFI.MdbxEnv
instance Foreign.Storable.Storable Mdbx.FFI.MdbxTxn
instance Foreign.Storable.Storable Mdbx.FFI.MdbxCursor
instance GHC.Enum.Enum Mdbx.FFI.MdbxPutFlags
instance Foreign.Storable.Storable Mdbx.FFI.MdbxVal
instance GHC.Enum.Enum Mdbx.FFI.MdbxDbFlags
instance GHC.Enum.Enum Mdbx.FFI.MdbxTxnFlags
instance GHC.Enum.Enum Mdbx.FFI.MdbxEnvFlags
instance GHC.Enum.Enum Mdbx.FFI.MdbxError
-- | Thin wrappers over the low level API to provide MonadIO support and
-- exception based error handling.
module Mdbx.API
-- | Compares two keys and returns -1, 0 or 1 if key1 is lower, equal or
-- greater than key2.
keyCmp :: MonadIO m => MdbxTxn -> MdbxDbi -> MdbxVal -> MdbxVal -> m Int
-- | Opens an environment.
envOpen :: (MonadIO m, MonadFail m) => String -> [MdbxEnvFlags] -> m MdbxEnv
-- | Close an environment.
envClose :: (MonadIO m, MonadFail m) => MdbxEnv -> m ()
-- | Begins a transaction.
txnBegin :: (MonadIO m, MonadFail m) => MdbxEnv -> Maybe MdbxTxn -> [MdbxTxnFlags] -> m MdbxTxn
-- | Commits a transaction.
txnCommit :: (MonadIO m, MonadFail m) => MdbxTxn -> m ()
-- | Aborts a transaction.
txnAbort :: (MonadIO m, MonadFail m) => MdbxTxn -> m ()
-- | Opens a database (table).
dbiOpen :: (MonadIO m, MonadFail m) => MdbxEnv -> Maybe String -> [MdbxDbFlags] -> m MdbxDbi
-- | Closes a database.
dbiClose :: (MonadIO m, MonadFail m) => MdbxEnv -> MdbxDbi -> m ()
-- | Saves the provided key/value pair.
itemPut :: (MonadIO m, MonadFail m) => MdbxTxn -> MdbxDbi -> MdbxVal -> MdbxVal -> [MdbxPutFlags] -> m ()
-- | Returns the value associated to the given key, if any.
itemGet :: (MonadIO m, MonadFail m) => MdbxTxn -> MdbxDbi -> MdbxVal -> m (Maybe MdbxVal)
-- | Deletes the value associated with the given key, if any.
itemDel :: (MonadIO m, MonadFail m) => MdbxTxn -> MdbxDbi -> MdbxVal -> Maybe MdbxVal -> m ()
-- | Opens a cursor.
cursorOpen :: (MonadIO m, MonadFail m) => MdbxTxn -> MdbxDbi -> m MdbxCursor
-- | Closes a cursor.
cursorClose :: (MonadIO m, MonadFail m) => MdbxCursor -> m ()
-- | Stores the provided value at the given key, positioning the cursor on
-- it.
cursorPut :: (MonadIO m, MonadFail m) => MdbxCursor -> MdbxVal -> MdbxVal -> [MdbxPutFlags] -> m ()
-- | Deletes the value at the current position.
cursorDel :: (MonadIO m, MonadFail m) => MdbxCursor -> [MdbxPutFlags] -> m ()
-- | Moves to the first key on the database.
cursorFirst :: (MonadIO m, MonadFail m) => MdbxCursor -> m (Maybe (MdbxVal, MdbxVal))
-- | Moves to the last key on the database.
cursorLast :: (MonadIO m, MonadFail m) => MdbxCursor -> m (Maybe (MdbxVal, MdbxVal))
-- | Moves to the given key.
cursorAt :: (MonadIO m, MonadFail m) => MdbxCursor -> MdbxVal -> m (Maybe (MdbxVal, MdbxVal))
-- | Moves to the given key or first greater than it. Useful for searching.
cursorRange :: (MonadIO m, MonadFail m) => MdbxCursor -> MdbxVal -> m (Maybe (MdbxVal, MdbxVal))
-- | Moves to the next key.
cursorNext :: (MonadIO m, MonadFail m) => MdbxCursor -> m (Maybe (MdbxVal, MdbxVal))
-- | Moves to the previous key.
cursorPrev :: (MonadIO m, MonadFail m) => MdbxCursor -> m (Maybe (MdbxVal, MdbxVal))
-- | Moves the cursor using the provided operation.
cursorMove :: (MonadIO m, MonadFail m) => MdbxCursor -> MdbxVal -> MdbxCursorOp -> m (Maybe (MdbxVal, MdbxVal))
-- | Types used by the library. Mainly re exports the types generated by
-- c2hs in the FFI module, while also adding some types used by the high
-- level interface.
module Mdbx.Types
-- | Environment object, needed for all the operations.
data MdbxEnv
-- | Transaction instance. Needed for all operations with data, even
-- reading.
data MdbxTxn
-- | Database instance. Represents a logical table in the database.
type MdbxDbi = (CUInt)
-- | Binary blob representing a key or value in the database.
data MdbxVal
MdbxVal :: {-# UNPACK #-} !CULong -> {-# UNPACK #-} !Ptr () -> MdbxVal
[mvlSize] :: MdbxVal -> {-# UNPACK #-} !CULong
[mvlData] :: MdbxVal -> {-# UNPACK #-} !Ptr ()
-- | UNIX permissions to set on created files. Zero value means to open
-- existing, but do not create.
type MdbxEnvMode = (CUInt)
-- | Flags for opening and environment.
data MdbxEnvFlags
MdbxEnvDefaults :: MdbxEnvFlags
MdbxSyncDurable :: MdbxEnvFlags
MdbxNosubdir :: MdbxEnvFlags
MdbxSafeNosync :: MdbxEnvFlags
MdbxMapasync :: MdbxEnvFlags
MdbxRdonly :: MdbxEnvFlags
MdbxNometasync :: MdbxEnvFlags
MdbxWritemap :: MdbxEnvFlags
MdbxUtterlyNosync :: MdbxEnvFlags
MdbxNotls :: MdbxEnvFlags
MdbxExclusive :: MdbxEnvFlags
MdbxNordahead :: MdbxEnvFlags
MdbxNomeminit :: MdbxEnvFlags
MdbxCoalesce :: MdbxEnvFlags
MdbxLiforeclaim :: MdbxEnvFlags
MdbxPageperturb :: MdbxEnvFlags
MdbxAccede :: MdbxEnvFlags
-- | Flags for a transaction.
data MdbxTxnFlags
MdbxTxnReadwrite :: MdbxTxnFlags
MdbxTxnNosync :: MdbxTxnFlags
MdbxTxnRdonly :: MdbxTxnFlags
MdbxTxnNometasync :: MdbxTxnFlags
MdbxTxnRdonlyPrepare :: MdbxTxnFlags
MdbxTxnTry :: MdbxTxnFlags
-- | Flags for a database.
data MdbxDbFlags
MdbxDbDefaults :: MdbxDbFlags
MdbxReversekey :: MdbxDbFlags
MdbxDupsort :: MdbxDbFlags
MdbxIntegerkey :: MdbxDbFlags
MdbxDupfixed :: MdbxDbFlags
MdbxIntegerdup :: MdbxDbFlags
MdbxReversedup :: MdbxDbFlags
MdbxCreate :: MdbxDbFlags
MdbxDbAccede :: MdbxDbFlags
-- | Flags for all data related operations.
data MdbxPutFlags
MdbxUpsert :: MdbxPutFlags
MdbxNooverwrite :: MdbxPutFlags
MdbxNodupdata :: MdbxPutFlags
MdbxCurrent :: MdbxPutFlags
MdbxAlldups :: MdbxPutFlags
MdbxReserve :: MdbxPutFlags
MdbxAppend :: MdbxPutFlags
MdbxAppenddup :: MdbxPutFlags
MdbxMultiple :: MdbxPutFlags
-- | Flags for cursor operations.
data MdbxCursorOp
MdbxFirst :: MdbxCursorOp
MdbxFirstDup :: MdbxCursorOp
MdbxGetBoth :: MdbxCursorOp
MdbxGetBothRange :: MdbxCursorOp
MdbxGetCurrent :: MdbxCursorOp
MdbxGetMultiple :: MdbxCursorOp
MdbxLast :: MdbxCursorOp
MdbxLastDup :: MdbxCursorOp
MdbxNext :: MdbxCursorOp
MdbxNextDup :: MdbxCursorOp
MdbxNextMultiple :: MdbxCursorOp
MdbxNextNodup :: MdbxCursorOp
MdbxPrev :: MdbxCursorOp
MdbxPrevDup :: MdbxCursorOp
MdbxPrevNodup :: MdbxCursorOp
MdbxSet :: MdbxCursorOp
MdbxSetKey :: MdbxCursorOp
MdbxSetRange :: MdbxCursorOp
MdbxPrevMultiple :: MdbxCursorOp
MdbxSetLowerbound :: MdbxCursorOp
-- | Converts an instance to/from the representation needed by libmdbx.
-- This type is used for both keys and values.
--
-- Only the Text instance is provided, since it is commonly used as the
-- key when storing/retrieving a value.
--
-- For your own types, in general, you will want to use a serialization
-- library such as store, cereal, etc, and apply the newtype deriving via
-- trick.
--
-- For store (this can be found in the example application), the instance
-- can be defined as:
--
--
-- newtype MdbxItemStore a = MdbxItemStore {
-- unwrapStore :: a
-- }
--
-- instance Store a => MdbxItem (MdbxItemStore a) where
-- fromMdbxVal item = MdbxItemStore $ fromMdbxStore item
-- toMdbxVal item = withMdbxStore (unwrapStore item)
--
-- fromMdbxStore :: Store v => MdbxVal -> IO v
-- fromMdbxStore (MdbxVal size ptr) = do
-- bs <- unsafePackCStringLen (castPtr ptr, fromIntegral size)
-- decodeIO bs
--
-- withMdbxStore :: Store v => v -> (MdbxVal -> IO a) -> IO a
-- withMdbxStore val fn =
-- unsafeUseAsCStringLen bsV $ (ptrV, sizeV) -> do
-- let mval = MdbxVal (fromIntegral sizeV) (castPtr ptrV)
-- fn mval
-- where
-- bsV = encode val
--
--
-- This code can be adaptad to other serialization libraries. It is not
-- provided as part of libmdbx-hs itself to avoid forcing dependencies.
--
-- Then, to derive the instance for your owwn type:
--
--
-- data User = User {
-- _username :: Text,
-- _password :: Text
-- } deriving (Eq, Show, Generic, Store)
--
-- deriving via (MdbxItemStore User) instance MdbxItem User
--
--
-- Note: if you plan on using a custom type as the key, be careful if it
-- contains Text or Bytestring instances, since these types have a length
-- field which is, in general, before the data. This can issues when
-- using cursors, since those depend on key ordering and the length field
-- will make shorter instances lower than longer ones, even if the
-- content indicates the opposite. In general, it is simpler to use Text
-- as the key.
class MdbxItem i
-- | Converts a block of memory provided by libmdbx to a user data type.
-- There are no guarantees provided by the library that the block of
-- memory matches the expected type, and a crash can happen if not
-- careful.
fromMdbxVal :: MdbxItem i => MdbxVal -> IO i
toMdbxVal :: MdbxItem i => i -> (MdbxVal -> IO b) -> IO b
instance Mdbx.Types.MdbxItem Data.Text.Internal.Text
-- | High level API to create, update, delete and query an MDBX database.
module Mdbx.Database
-- | Returns the value associated with the given key, if any.
getItem :: (MonadIO m, MonadFail m, MdbxItem k, MdbxItem v) => MdbxEnv -> MdbxDbi -> k -> m (Maybe v)
-- | Returns the values associated to a list of keys. Returned length may
-- not match that of provided keys in case some of them are not found.
getItems :: (MonadIO m, MonadFail m, MdbxItem k, MdbxItem v) => MdbxEnv -> MdbxDbi -> [k] -> m [v]
-- | Returns the list of values whose keys lie between the provided range.
getRange :: (MonadIO m, MonadFail m, MdbxItem k, MdbxItem v) => MdbxEnv -> MdbxDbi -> k -> k -> m [v]
-- | Saves the given key/value pair.
putItem :: (MonadIO m, MonadFail m, MdbxItem k, MdbxItem v) => MdbxEnv -> MdbxDbi -> k -> v -> m ()
-- | Saves the given key/value pairs. Runs in a single transaction.
putItems :: (MonadIO m, MonadFail m, MdbxItem k, MdbxItem v) => MdbxEnv -> MdbxDbi -> [(k, v)] -> m ()
-- | Deletes the item associated with the given key, if any.
delItem :: (MonadIO m, MonadFail m, MdbxItem k) => MdbxEnv -> MdbxDbi -> k -> m ()
-- | Deletes the items associated with the given keys, if any. Runs in a
-- single transaction.
delItems :: (MonadIO m, MonadFail m, MdbxItem k) => MdbxEnv -> MdbxDbi -> [k] -> m ()
-- | Main module for libmdbx-hs. This is what most applications should
-- import.
--
-- In case you only need to store, update and retrieve data, check the
-- Database module.
--
-- You will also want to check Types in order to be able to store
-- your data types. In general, you will also want to use a serialization
-- library such as
-- [store](https:/hackage.haskell.orgpackage/store) or
-- [cereal](https:/hackage.haskell.orgpackage/cereal).
--
-- If you want fine grained control or using cursors, check API.
--
-- The FFI (not exported by this module) provides direct, low
-- level, bindings to libmdbx.
module Mdbx