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