{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE FlexibleInstances #-}

{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.RdsData.Internal.Aeson where

import Data.Aeson
import Data.Text (Text)

import qualified Amazonka.RDSData     as AWS
import qualified Data.Aeson           as J
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text.Encoding   as T

infixr 8 .=!
infixr 8 .=?

-- | A key-value pair difference list for encoding a JSON object.
(.=!) :: (KeyValue e kv, ToJSON v) => Key -> v -> [kv] -> [kv]
.=! :: forall e kv v.
(KeyValue e kv, ToJSON v) =>
Key -> v -> [kv] -> [kv]
(.=!) Key
n v
v = (Key
n Key -> v -> kv
forall v. ToJSON v => Key -> v -> kv
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= v
vkv -> [kv] -> [kv]
forall a. a -> [a] -> [a]
:)

-- | A key-value pair difference list for encoding a JSON object where Nothing encodes absence of the key-value pair.
(.=?) :: (KeyValue e kv, ToJSON v) => Key -> Maybe v -> [kv] -> [kv]
.=? :: forall e kv v.
(KeyValue e kv, ToJSON v) =>
Key -> Maybe v -> [kv] -> [kv]
(.=?) Key
n Maybe v
mv = case Maybe v
mv of
  Just v
v -> (Key
n Key -> v -> kv
forall v. ToJSON v => Key -> v -> kv
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= v
vkv -> [kv] -> [kv]
forall a. a -> [a] -> [a]
:)
  Maybe v
Nothing -> [kv] -> [kv]
forall a. a -> a
id

toJsonText :: ToJSON a => a -> Text
toJsonText :: forall a. ToJSON a => a -> Text
toJsonText a
field = ByteString -> Text
T.decodeUtf8 (ByteString -> ByteString
LBS.toStrict (a -> ByteString
forall a. ToJSON a => a -> ByteString
J.encode a
field))

instance ToJSON AWS.ColumnMetadata where

instance ToJSON AWS.UpdateResult where

-- Customized options for toJSON
myOptions :: Options
myOptions :: Options
myOptions = Options
defaultOptions { omitNothingFields = True }

instance ToJSON AWS.ExecuteStatementResponse where
  toJSON :: ExecuteStatementResponse -> Value
toJSON = Options -> ExecuteStatementResponse -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
myOptions

instance FromJSON AWS.ExecuteStatementResponse where

instance ToJSON AWS.BatchExecuteStatementResponse where
  toJSON :: BatchExecuteStatementResponse -> Value
toJSON = Options -> BatchExecuteStatementResponse -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
myOptions

instance FromJSON AWS.BatchExecuteStatementResponse where