module Hasql.Encoders.Array where
import Hasql.Prelude
import qualified Database.PostgreSQL.LibPQ as LibPQ
import qualified PostgreSQL.Binary.Encoder as Encoder
import qualified Hasql.PTI as PTI
data Array a =
Array PTI.OID PTI.OID (Bool -> Encoder.ArrayEncoder a)
run :: Array a -> (PTI.OID, Bool -> Encoder.Encoder a)
run (Array valueOID arrayOID encoder') =
(arrayOID, \env -> Encoder.array (PTI.oidWord32 valueOID) (encoder' env))
value :: PTI.OID -> PTI.OID -> (Bool -> Encoder.Encoder a) -> Array a
value valueOID arrayOID encoder' =
Array valueOID arrayOID (Encoder.arrayValue . encoder')
nullableValue :: PTI.OID -> PTI.OID -> (Bool -> Encoder.Encoder a) -> Array (Maybe a)
nullableValue valueOID arrayOID encoder' =
Array valueOID arrayOID (Encoder.arrayNullableValue . encoder')
dimension :: (forall a. (a -> b -> a) -> a -> c -> a) -> Array b -> Array c
dimension foldl (Array valueOID arrayOID encoder') =
Array valueOID arrayOID (Encoder.arrayDimension foldl . encoder')