{-# LANGUAGE MultiParamTypeClasses #-} {-| Module : Mealstrom.WALStore Description : Store WALEntries Copyright : (c) Max Amanshauser, 2016 License : MIT Maintainer : max@lambdalifting.org A WALStore is anything being able to store WALEntries. WALEntries indicate how often a recovery process has been started for an instance. -} module Mealstrom.WALStore where import Data.Time.Clock class WALStore st k where walUpsertIncrement :: st -> k -> IO () walDecrement :: st -> k -> IO () walScan :: st -> Int -> IO [WALEntry k] data WALEntry k = WALEntry { walId :: k, walTime :: UTCTime, walCount :: Int } deriving (Show,Eq) openTxn :: WALStore st k => st -> k -> IO () openTxn = walUpsertIncrement closeTxn :: WALStore st k => st -> k -> IO () closeTxn = walDecrement