franz-0.4: src/Database/Franz/Writer/Simple.hs
module Database.Franz.Writer.Simple (
-- * Writer interface
Franz.WriterHandle,
openWriter,
Franz.closeWriter,
withWriter,
write,
Franz.flush,
Franz.getLastSeqNo,
ToFastBuilder(..)
) where
import Data.Proxy
import qualified Database.Franz.Writer as Franz
import qualified Data.ByteString.FastBuilder as BB
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
openWriter :: FilePath -> IO (Franz.WriterHandle Proxy)
openWriter = Franz.openWriter Proxy
withWriter :: FilePath -> (Franz.WriterHandle Proxy -> IO a) -> IO a
withWriter = Franz.withWriter Proxy
class ToFastBuilder a where
toFastBuilder :: a -> BB.Builder
instance ToFastBuilder B.ByteString where
toFastBuilder = BB.byteString
instance ToFastBuilder BL.ByteString where
toFastBuilder = foldMap BB.byteString . BL.toChunks
instance ToFastBuilder BB.Builder where
toFastBuilder = id
write :: Franz.WriterHandle Proxy
-> BB.Builder
-> IO Int
write h = Franz.write h Proxy . toFastBuilder
{-# INLINE write #-}