packages feed

keiro-dsl-0.17.0.0: test/conformance-nominal-queue-only/Generated/MappedNominalQueueOnly/TemplateWork/Queue.hs

-- @generated by keiro-dsl 0.17.0.0 (language keiro-dsl 6) from workqueue template_work; do not edit.
module Generated.MappedNominalQueueOnly.TemplateWork.Queue
  ( TemplateWork (..)
  , encodeTemplateWork
  , parseTemplateWork
  , queuePhysical, queueDlq, queueTable

  ) where

import Data.Aeson (Value (..), object, withObject, (.=))
import Data.Aeson.Types (explicitParseField, parseEither)
import Data.Text (Text)
import qualified Data.Text as T
import Generated.MappedNominalQueueOnly.Structural.NominalLeaves (encodeTemplateIdLeaf, parseTemplateIdLeaf)
import Generated.MappedNominalQueueOnly.Nominals (TemplateId)

queuePhysical, queueDlq, queueTable :: Text
queuePhysical = "template_work"
queueDlq = "template_work_dlq"
queueTable = "pgmq.q_template_work"

data TemplateWork = TemplateWork
  { templateId :: !(Maybe TemplateId)
  }
  deriving stock (Eq, Show)

encodeTemplateWork :: TemplateWork -> Value
encodeTemplateWork payload =
  object
    [ "template_id" .= maybe Null (\item0 -> encodeTemplateIdLeaf item0) (payload.templateId)
    ]

parseTemplateWork :: Value -> Either Text TemplateWork
parseTemplateWork = mapLeftText . parseEither (withObject "TemplateWork" go)
  where
    go objectValue = TemplateWork <$> explicitParseField (\value0 -> case value0 of Null -> pure Nothing; other0 -> Just <$> (parseTemplateIdLeaf) other0) objectValue "template_id"

mapLeftText :: Either String b -> Either Text b
mapLeftText = either (Left . T.pack) Right