{-# LANGUAGE OverloadedStrings #-} module ReadmeMain where import Data.Function import qualified Streamly.Data.Fold as F import qualified Streamly.Data.Stream.Prelude as S import Streamly.External.LMDB main :: IO () main = do -- Open an environment. There should already exist a file or -- directory at the given path. (Empty for a new environment.) env <- openEnvironment "/path/to/lmdb-database" defaultLimits {mapSize = tebibyte} -- Get the main database. -- Note: It is common practice with LMDB to create the database -- once and reuse it for the remainder of the program’s execution. db <- getDatabase env Nothing -- Stream key-value pairs into the database. withReadWriteTransaction env $ \txn -> [("baz", "a"), ("foo", "b"), ("bar", "c")] & S.fromList & S.fold (writeLMDB defaultWriteOptions db txn) -- Stream key-value pairs out of the -- database, printing them along the way. -- Output: -- ("bar","c") -- ("baz","a") -- ("foo","b") S.unfold readLMDB (defaultReadOptions, db, LeftTxn Nothing) & S.mapM print & S.fold F.drain