packages feed

vigilance-0.1.0.0: src/Utils/Vigilance/Workers/StaticWatchWorker.hs

{-# LANGUAGE OverloadedStrings #-}
module Utils.Vigilance.Workers.StaticWatchWorker (runWorker) where

import Data.Acid (AcidState)
import Control.Concurrent.STM ( TChan
                              , atomically
                              , readTChan )
import Control.Monad.Trans (lift)
import Control.Lens
import Utils.Vigilance.Logger ( pushLog
                              , renameLogCtx )
import Utils.Vigilance.TableOps (mergeStaticWatchesS)
import Utils.Vigilance.Types

runWorker :: AcidState AppState -> TChan Config -> LogCtxT IO ()
runWorker acid cfgChan = renameLogCtx "Watch Config Monitor" $ do
  pushLog "Waiting for new watches"
  cfg <- lift $ atomically $ readTChan cfgChan
  pushLog "Merging new static watches"
  lift $ mergeStaticWatchesS acid $ cfg ^. configWatches
  pushLog "Static watches merged"