hpqtypes-1.9.3.0: test/Test/Aeson/Compat.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DerivingStrategies #-}
module Test.Aeson.Compat
( fromList
, Value0
, mkValue0
) where
import Data.Aeson
import Data.Text (Text)
#if MIN_VERSION_aeson(2,0,0)
import Data.Bifunctor (first)
import qualified Data.Aeson.Key as K
import qualified Data.Aeson.KeyMap as KM
import Database.PostgreSQL.PQTypes.Internal.C.Types
import Database.PostgreSQL.PQTypes
fromList :: [(Text, v)] -> KM.KeyMap v
fromList = KM.fromList . map (first K.fromText)
newtype Value0 = Value0 { unValue0 :: Value }
deriving newtype (Eq, Show)
instance ToSQL (JSON Value0) where
type PQDest (JSON Value0) = PGbytea
toSQL = aesonToSQL . unValue0 . unJSON
instance FromSQL (JSON Value0) where
type PQBase (JSON Value0) = PGbytea
fromSQL = fmap (JSON . Value0) . aesonFromSQL
instance ToSQL (JSONB Value0) where
type PQDest (JSONB Value0) = PGbytea
toSQL = aesonToSQL . unValue0 . unJSONB
instance FromSQL (JSONB Value0) where
type PQBase (JSONB Value0) = PGbytea
fromSQL = fmap (JSONB . Value0) . aesonFromSQL
mkValue0 :: Value -> Value0
mkValue0 = Value0
#else
import qualified Data.HashMap.Strict as HM
fromList :: [(Text, v)] -> HM.HashMap Text v
fromList = HM.fromList
type Value0 = Value
mkValue0 :: Value0 -> Value0
mkValue0 = id
#endif