{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE UndecidableInstances #-} module Monitor.DataModel ( module Monitor.DataModel , module Control.Monad.Reader , Assertion(..) , Settings(..) , Mutexes(..) , readAssertion , logMessage ) where import Control.Monad.Base import Control.Monad.Reader import Control.Monad.Trans.Control import Data.ByteString (ByteString) import Monitor.Configuration.Config newtype Monitor a = Monitor {Monitor a -> ReaderT Settings IO a getMonitor :: ReaderT Settings IO a} deriving (a -> Monitor b -> Monitor a (a -> b) -> Monitor a -> Monitor b (forall a b. (a -> b) -> Monitor a -> Monitor b) -> (forall a b. a -> Monitor b -> Monitor a) -> Functor Monitor forall a b. a -> Monitor b -> Monitor a forall a b. (a -> b) -> Monitor a -> Monitor b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> Monitor b -> Monitor a $c<$ :: forall a b. a -> Monitor b -> Monitor a fmap :: (a -> b) -> Monitor a -> Monitor b $cfmap :: forall a b. (a -> b) -> Monitor a -> Monitor b Functor, Functor Monitor a -> Monitor a Functor Monitor -> (forall a. a -> Monitor a) -> (forall a b. Monitor (a -> b) -> Monitor a -> Monitor b) -> (forall a b c. (a -> b -> c) -> Monitor a -> Monitor b -> Monitor c) -> (forall a b. Monitor a -> Monitor b -> Monitor b) -> (forall a b. Monitor a -> Monitor b -> Monitor a) -> Applicative Monitor Monitor a -> Monitor b -> Monitor b Monitor a -> Monitor b -> Monitor a Monitor (a -> b) -> Monitor a -> Monitor b (a -> b -> c) -> Monitor a -> Monitor b -> Monitor c forall a. a -> Monitor a forall a b. Monitor a -> Monitor b -> Monitor a forall a b. Monitor a -> Monitor b -> Monitor b forall a b. Monitor (a -> b) -> Monitor a -> Monitor b forall a b c. (a -> b -> c) -> Monitor a -> Monitor b -> Monitor c forall (f :: * -> *). Functor f -> (forall a. a -> f a) -> (forall a b. f (a -> b) -> f a -> f b) -> (forall a b c. (a -> b -> c) -> f a -> f b -> f c) -> (forall a b. f a -> f b -> f b) -> (forall a b. f a -> f b -> f a) -> Applicative f <* :: Monitor a -> Monitor b -> Monitor a $c<* :: forall a b. Monitor a -> Monitor b -> Monitor a *> :: Monitor a -> Monitor b -> Monitor b $c*> :: forall a b. Monitor a -> Monitor b -> Monitor b liftA2 :: (a -> b -> c) -> Monitor a -> Monitor b -> Monitor c $cliftA2 :: forall a b c. (a -> b -> c) -> Monitor a -> Monitor b -> Monitor c <*> :: Monitor (a -> b) -> Monitor a -> Monitor b $c<*> :: forall a b. Monitor (a -> b) -> Monitor a -> Monitor b pure :: a -> Monitor a $cpure :: forall a. a -> Monitor a $cp1Applicative :: Functor Monitor Applicative, Applicative Monitor a -> Monitor a Applicative Monitor -> (forall a b. Monitor a -> (a -> Monitor b) -> Monitor b) -> (forall a b. Monitor a -> Monitor b -> Monitor b) -> (forall a. a -> Monitor a) -> Monad Monitor Monitor a -> (a -> Monitor b) -> Monitor b Monitor a -> Monitor b -> Monitor b forall a. a -> Monitor a forall a b. Monitor a -> Monitor b -> Monitor b forall a b. Monitor a -> (a -> Monitor b) -> Monitor b forall (m :: * -> *). Applicative m -> (forall a b. m a -> (a -> m b) -> m b) -> (forall a b. m a -> m b -> m b) -> (forall a. a -> m a) -> Monad m return :: a -> Monitor a $creturn :: forall a. a -> Monitor a >> :: Monitor a -> Monitor b -> Monitor b $c>> :: forall a b. Monitor a -> Monitor b -> Monitor b >>= :: Monitor a -> (a -> Monitor b) -> Monitor b $c>>= :: forall a b. Monitor a -> (a -> Monitor b) -> Monitor b $cp1Monad :: Applicative Monitor Monad, Monad Monitor Monad Monitor -> (forall a. IO a -> Monitor a) -> MonadIO Monitor IO a -> Monitor a forall a. IO a -> Monitor a forall (m :: * -> *). Monad m -> (forall a. IO a -> m a) -> MonadIO m liftIO :: IO a -> Monitor a $cliftIO :: forall a. IO a -> Monitor a $cp1MonadIO :: Monad Monitor MonadIO, MonadReader Settings, MonadBase IO, MonadBaseControl IO) via ReaderT Settings IO configName :: FilePath configName :: FilePath configName = FilePath "conf.dhall" representsConfigName :: FilePath -> Bool representsConfigName :: FilePath -> Bool representsConfigName FilePath path = FilePath path FilePath -> FilePath -> Bool forall a. Eq a => a -> a -> Bool == FilePath configName data JobFeedback = ConnectionError String | QueryError String | AssertionResult Bool deriving (JobFeedback -> JobFeedback -> Bool (JobFeedback -> JobFeedback -> Bool) -> (JobFeedback -> JobFeedback -> Bool) -> Eq JobFeedback forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: JobFeedback -> JobFeedback -> Bool $c/= :: JobFeedback -> JobFeedback -> Bool == :: JobFeedback -> JobFeedback -> Bool $c== :: JobFeedback -> JobFeedback -> Bool Eq, Int -> JobFeedback -> ShowS [JobFeedback] -> ShowS JobFeedback -> FilePath (Int -> JobFeedback -> ShowS) -> (JobFeedback -> FilePath) -> ([JobFeedback] -> ShowS) -> Show JobFeedback forall a. (Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a showList :: [JobFeedback] -> ShowS $cshowList :: [JobFeedback] -> ShowS show :: JobFeedback -> FilePath $cshow :: JobFeedback -> FilePath showsPrec :: Int -> JobFeedback -> ShowS $cshowsPrec :: Int -> JobFeedback -> ShowS Show) data Job = Job { Job -> Maybe FilePath jobDescription :: Maybe String , Job -> Maybe Int jobFrequency :: Maybe Int , Job -> Maybe Assertion jobAssertion :: Maybe Assertion , Job -> ByteString jobSQL :: ByteString } deriving (Job -> Job -> Bool (Job -> Job -> Bool) -> (Job -> Job -> Bool) -> Eq Job forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Job -> Job -> Bool $c/= :: Job -> Job -> Bool == :: Job -> Job -> Bool $c== :: Job -> Job -> Bool Eq, Int -> Job -> ShowS [Job] -> ShowS Job -> FilePath (Int -> Job -> ShowS) -> (Job -> FilePath) -> ([Job] -> ShowS) -> Show Job forall a. (Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a showList :: [Job] -> ShowS $cshowList :: [Job] -> ShowS show :: Job -> FilePath $cshow :: Job -> FilePath showsPrec :: Int -> Job -> ShowS $cshowsPrec :: Int -> Job -> ShowS Show) data PureJob = PureJob { PureJob -> FilePath pureJobDescription :: String , PureJob -> Assertion pureJobAssertion :: Assertion , PureJob -> ByteString pureJobSQL :: ByteString } deriving (PureJob -> PureJob -> Bool (PureJob -> PureJob -> Bool) -> (PureJob -> PureJob -> Bool) -> Eq PureJob forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PureJob -> PureJob -> Bool $c/= :: PureJob -> PureJob -> Bool == :: PureJob -> PureJob -> Bool $c== :: PureJob -> PureJob -> Bool Eq, Int -> PureJob -> ShowS [PureJob] -> ShowS PureJob -> FilePath (Int -> PureJob -> ShowS) -> (PureJob -> FilePath) -> ([PureJob] -> ShowS) -> Show PureJob forall a. (Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a showList :: [PureJob] -> ShowS $cshowList :: [PureJob] -> ShowS show :: PureJob -> FilePath $cshow :: PureJob -> FilePath showsPrec :: Int -> PureJob -> ShowS $cshowsPrec :: Int -> PureJob -> ShowS Show)