{-# LANGUAGE TemplateHaskell #-}

module Hydra.TUI.Logging.Types where

import Hydra.Prelude
import Lens.Micro.TH (makeLensesFor)

type Severity :: Type
data Severity
  = Success
  | Info
  | Error
  deriving stock (Severity -> Severity -> Bool
(Severity -> Severity -> Bool)
-> (Severity -> Severity -> Bool) -> Eq Severity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Severity -> Severity -> Bool
== :: Severity -> Severity -> Bool
$c/= :: Severity -> Severity -> Bool
/= :: Severity -> Severity -> Bool
Eq, Int -> Severity -> ShowS
[Severity] -> ShowS
Severity -> String
(Int -> Severity -> ShowS)
-> (Severity -> String) -> ([Severity] -> ShowS) -> Show Severity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Severity -> ShowS
showsPrec :: Int -> Severity -> ShowS
$cshow :: Severity -> String
show :: Severity -> String
$cshowList :: [Severity] -> ShowS
showList :: [Severity] -> ShowS
Show, (forall x. Severity -> Rep Severity x)
-> (forall x. Rep Severity x -> Severity) -> Generic Severity
forall x. Rep Severity x -> Severity
forall x. Severity -> Rep Severity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Severity -> Rep Severity x
from :: forall x. Severity -> Rep Severity x
$cto :: forall x. Rep Severity x -> Severity
to :: forall x. Rep Severity x -> Severity
Generic)

type LogMessage :: Type
data LogMessage = LogMessage
  { LogMessage -> Severity
severity :: Severity
  , LogMessage -> Text
message :: Text
  , LogMessage -> Text
detail :: Text
  , LogMessage -> UTCTime
time :: UTCTime
  , LogMessage -> Text
rawJson :: Text
  }
  deriving stock (LogMessage -> LogMessage -> Bool
(LogMessage -> LogMessage -> Bool)
-> (LogMessage -> LogMessage -> Bool) -> Eq LogMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LogMessage -> LogMessage -> Bool
== :: LogMessage -> LogMessage -> Bool
$c/= :: LogMessage -> LogMessage -> Bool
/= :: LogMessage -> LogMessage -> Bool
Eq, Int -> LogMessage -> ShowS
[LogMessage] -> ShowS
LogMessage -> String
(Int -> LogMessage -> ShowS)
-> (LogMessage -> String)
-> ([LogMessage] -> ShowS)
-> Show LogMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LogMessage -> ShowS
showsPrec :: Int -> LogMessage -> ShowS
$cshow :: LogMessage -> String
show :: LogMessage -> String
$cshowList :: [LogMessage] -> ShowS
showList :: [LogMessage] -> ShowS
Show, (forall x. LogMessage -> Rep LogMessage x)
-> (forall x. Rep LogMessage x -> LogMessage) -> Generic LogMessage
forall x. Rep LogMessage x -> LogMessage
forall x. LogMessage -> Rep LogMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LogMessage -> Rep LogMessage x
from :: forall x. LogMessage -> Rep LogMessage x
$cto :: forall x. Rep LogMessage x -> LogMessage
to :: forall x. Rep LogMessage x -> LogMessage
Generic)

type EventHistoryFilter :: Type
data EventHistoryFilter = ShowAll | ErrorsOnly
  deriving stock (EventHistoryFilter -> EventHistoryFilter -> Bool
(EventHistoryFilter -> EventHistoryFilter -> Bool)
-> (EventHistoryFilter -> EventHistoryFilter -> Bool)
-> Eq EventHistoryFilter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EventHistoryFilter -> EventHistoryFilter -> Bool
== :: EventHistoryFilter -> EventHistoryFilter -> Bool
$c/= :: EventHistoryFilter -> EventHistoryFilter -> Bool
/= :: EventHistoryFilter -> EventHistoryFilter -> Bool
Eq, Int -> EventHistoryFilter -> ShowS
[EventHistoryFilter] -> ShowS
EventHistoryFilter -> String
(Int -> EventHistoryFilter -> ShowS)
-> (EventHistoryFilter -> String)
-> ([EventHistoryFilter] -> ShowS)
-> Show EventHistoryFilter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EventHistoryFilter -> ShowS
showsPrec :: Int -> EventHistoryFilter -> ShowS
$cshow :: EventHistoryFilter -> String
show :: EventHistoryFilter -> String
$cshowList :: [EventHistoryFilter] -> ShowS
showList :: [EventHistoryFilter] -> ShowS
Show, (forall x. EventHistoryFilter -> Rep EventHistoryFilter x)
-> (forall x. Rep EventHistoryFilter x -> EventHistoryFilter)
-> Generic EventHistoryFilter
forall x. Rep EventHistoryFilter x -> EventHistoryFilter
forall x. EventHistoryFilter -> Rep EventHistoryFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EventHistoryFilter -> Rep EventHistoryFilter x
from :: forall x. EventHistoryFilter -> Rep EventHistoryFilter x
$cto :: forall x. Rep EventHistoryFilter x -> EventHistoryFilter
to :: forall x. Rep EventHistoryFilter x -> EventHistoryFilter
Generic)

type LogState :: Type
newtype LogState = LogState
  { LogState -> [LogMessage]
logMessages :: [LogMessage]
  }

makeLensesFor
  [ ("logMessages", "logMessagesL")
  ]
  ''LogState