module Hasql.Private.Encoders.Array where
import Hasql.Private.Prelude
import qualified PostgreSQL.Binary.Encoding as A
import qualified Hasql.Private.PTI as B
data Array a =
Array B.OID B.OID (Bool -> a -> A.Array)
run :: Array a -> (B.OID, Bool -> a -> A.Encoding)
run (Array valueOID arrayOID encoder) =
(arrayOID, \env input -> A.array (B.oidWord32 valueOID) (encoder env input))
value :: B.OID -> B.OID -> (Bool -> a -> A.Encoding) -> Array a
value valueOID arrayOID encoder =
Array valueOID arrayOID (\params -> A.encodingArray . encoder params)
nullableValue :: B.OID -> B.OID -> (Bool -> a -> A.Encoding) -> Array (Maybe a)
nullableValue valueOID arrayOID encoder =
Array valueOID arrayOID (\params -> maybe A.nullArray (A.encodingArray . encoder params))
dimension :: (forall a. (a -> b -> a) -> a -> c -> a) -> Array b -> Array c
dimension fold (Array valueOID arrayOID encoder) =
Array valueOID arrayOID (\params -> A.dimensionArray fold (encoder params))