packages feed

patrol-0.1.0.1: source/library/Patrol/Type/LogEntry.hs

module Patrol.Type.LogEntry where

import qualified Data.Aeson as Aeson
import qualified Data.Text as Text
import qualified Patrol.Extra.Aeson as Aeson

-- | <https://develop.sentry.dev/sdk/event-payloads/types/#logentry>
data LogEntry = LogEntry
  { formatted :: Text.Text,
    message :: Text.Text,
    params :: Aeson.Value
  }
  deriving (Eq, Show)

instance Aeson.ToJSON LogEntry where
  toJSON logEntry =
    Aeson.intoObject
      [ Aeson.pair "formatted" $ formatted logEntry,
        Aeson.pair "message" $ message logEntry,
        Aeson.pair "params" $ params logEntry
      ]

empty :: LogEntry
empty =
  LogEntry
    { formatted = Text.empty,
      message = Text.empty,
      params = Aeson.Null
    }