packages feed

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

module Patrol.Type.PosixSignal 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/#posixsignal>
data PosixSignal = PosixSignal
  { code :: Maybe Int,
    codeName :: Text.Text,
    name :: Text.Text,
    number :: Maybe Int
  }
  deriving (Eq, Show)

instance Aeson.ToJSON PosixSignal where
  toJSON posixSignal =
    Aeson.intoObject
      [ Aeson.pair "code" $ code posixSignal,
        Aeson.pair "code_name" $ codeName posixSignal,
        Aeson.pair "name" $ name posixSignal,
        Aeson.pair "number" $ number posixSignal
      ]

empty :: PosixSignal
empty =
  PosixSignal
    { code = Nothing,
      codeName = Text.empty,
      name = Text.empty,
      number = Nothing
    }