eternity-0.1: library/Eternity/Potoki/Consume.hs
module Eternity.Potoki.Consume
where
import Eternity.Prelude hiding (fold)
import Potoki.Consume
import qualified Eternity.IO.FileNames as D
import qualified Potoki.Cereal.Transform as E
{-|
Write the events in a file in the specified directory, overwriting it if it already exists.
If any file IO error appears, Consume returns it wrapped in Left.
-}
writeToFile :: Serialize event => FilePath -> Consume event (Either IOException ())
writeToFile =
transform E.encode . writeBytesToFile
{-|
Write the events to a new file in the specified directory.
If any file IO error appears, Consume returns it wrapped in Left.
-}
writeToDir :: Serialize event => FilePath -> Consume event (Either IOException ())
writeToDir path =
liftIO (D.determineNextEventFilePath path) >>=
traverse (transform E.encode . writeBytesToFile) >>=
return . join