module Patrol.Type.LogEntry where
import qualified Data.Aeson as Aeson
import qualified Data.Text as Text
import qualified Patrol.Extra.Aeson as Aeson
data LogEntry = LogEntry
{ LogEntry -> Text
formatted :: Text.Text,
LogEntry -> Text
message :: Text.Text,
LogEntry -> Value
params :: Aeson.Value
}
deriving (LogEntry -> LogEntry -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LogEntry -> LogEntry -> Bool
$c/= :: LogEntry -> LogEntry -> Bool
== :: LogEntry -> LogEntry -> Bool
$c== :: LogEntry -> LogEntry -> Bool
Eq, Int -> LogEntry -> ShowS
[LogEntry] -> ShowS
LogEntry -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LogEntry] -> ShowS
$cshowList :: [LogEntry] -> ShowS
show :: LogEntry -> String
$cshow :: LogEntry -> String
showsPrec :: Int -> LogEntry -> ShowS
$cshowsPrec :: Int -> LogEntry -> ShowS
Show)
instance Aeson.ToJSON LogEntry where
toJSON :: LogEntry -> Value
toJSON LogEntry
logEntry =
[Pair] -> Value
Aeson.intoObject
[ forall a. ToJSON a => String -> a -> Pair
Aeson.pair String
"formatted" forall a b. (a -> b) -> a -> b
$ LogEntry -> Text
formatted LogEntry
logEntry,
forall a. ToJSON a => String -> a -> Pair
Aeson.pair String
"message" forall a b. (a -> b) -> a -> b
$ LogEntry -> Text
message LogEntry
logEntry,
forall a. ToJSON a => String -> a -> Pair
Aeson.pair String
"params" forall a b. (a -> b) -> a -> b
$ LogEntry -> Value
params LogEntry
logEntry
]
empty :: LogEntry
empty :: LogEntry
empty =
LogEntry
{ formatted :: Text
formatted = Text
Text.empty,
message :: Text
message = Text
Text.empty,
params :: Value
params = Value
Aeson.Null
}