{-# LANGUAGE DeriveGeneric #-}
module Instana.SDK.Span.NonRootEntry
( NonRootEntry(..)
, addData
, addToErrorCount
) where
import Data.Aeson (Value)
import qualified Data.Aeson.Extra.Merge as AesonExtra
import Data.Text (Text)
import GHC.Generics
import Instana.SDK.Internal.Id (Id)
data NonRootEntry =
NonRootEntry
{
traceId :: Id
, spanId :: Id
, parentId :: Id
, spanName :: Text
, timestamp :: Int
, errorCount :: Int
, spanData :: Value
} deriving (Eq, Generic, Show)
addToErrorCount :: Int -> NonRootEntry -> NonRootEntry
addToErrorCount increment nonRootEntry =
let
ec = errorCount nonRootEntry
in
nonRootEntry { errorCount = ec + increment }
addData :: Value -> NonRootEntry -> NonRootEntry
addData newData nonRootEntry =
let
currentData = spanData nonRootEntry
mergedData = AesonExtra.lodashMerge currentData newData
in
nonRootEntry { spanData = mergedData }