hbs2/fixme-new/lib/Fixme/Log.hs

32 lines
703 B
Haskell

module Fixme.Log where
import Fixme.Prelude
import Fixme.Types
import HBS2.Storage.Compact
import Data.Config.Suckless
import Data.ByteString.Lazy qualified as LBS
import Data.Maybe
import Data.Either
{- HLINT ignore "Functor law"-}
loadAllEntriesFromLog :: FixmePerks m
=> CompactStorage HbSync
-> FixmeM m [Syntax C]
loadAllEntriesFromLog sto = do
ks <- keys sto
entries <- mapM (get sto) ks
<&> catMaybes
<&> fmap (deserialiseOrFail @CompactAction . LBS.fromStrict)
<&> rights
let top = show $ vcat (fmap pretty entries)
let theLog = parseTop top & fromRight mempty
pure theLog