module Hasql.Core.DecodePrimitive where
import Hasql.Prelude hiding (bool)
import Hasql.Core.Model
import qualified Ptr.Parse as A
import qualified Hasql.Core.Protocol.Parse.Values as B
newtype DecodePrimitive primitive =
DecodePrimitive (ReaderT Bool A.Parse primitive)
deriving (Functor)
nonDateTime :: A.Parse primitive -> DecodePrimitive primitive
nonDateTime parser =
DecodePrimitive (ReaderT (const parser))
dateTime :: A.Parse primitive -> A.Parse primitive -> DecodePrimitive primitive
dateTime intParser floatParser =
DecodePrimitive (ReaderT (\case False -> floatParser; True -> intParser))
bool :: DecodePrimitive Bool
bool =
nonDateTime B.bool
int4 :: DecodePrimitive Int32
int4 =
nonDateTime B.int4
int8 :: DecodePrimitive Int64
int8 =
nonDateTime B.int8
text :: DecodePrimitive Text
text =
nonDateTime B.text
bytea :: DecodePrimitive ByteString
bytea =
nonDateTime B.bytea
timestamptz :: DecodePrimitive UTCTime
timestamptz =
dateTime B.intTimestamptz B.floatTimestamptz