imm-2.0.0.0: src/main/Database/ReadOnly.hs
{-# LANGUAGE OverloadedStrings #-}
module Database.ReadOnly where
import Database.Handle
import Imm.Logger (LogLevel (..), log)
import qualified Imm.Logger as Logger
import Imm.Pretty
readOnly :: MonadFail m => Logger.Handle m -> Handle m -> Handle m
readOnly logger handle = handle
{ _describeDatabase = do
output <- _describeDatabase handle
return $ output <+> yellow (brackets "read only")
, _updateFeedDefinition = \record -> log logger Debug $ "Not updating feed" <+> prettyKey record
, _updateFeedStatus = \record -> log logger Debug $ "Not updating feed" <+> prettyKey record
, _updateItemStatus = \record -> log logger Debug $ "Not updating item" <+> prettyKey record
, _insertFeed = \record -> fail $ "Not inserting feed " <> show (prettyKey record)
, _insertItem = \record -> fail $ "Not inserting item " <> show (prettyItemRecord record)
, _deleteFeed = \key -> log logger Debug $ "Not deleting feed" <+> pretty key
, _purge = log logger Debug "Not purging database"
, _commit = log logger Debug "Not committing database"
}