From 5fc68b7d92147304070e021eb9321b7e30402b6d Mon Sep 17 00:00:00 2001 From: Nikita Volkov Date: Tue, 21 May 2019 21:20:31 +0300 Subject: [PATCH] Rearrange the encoders --- library/Hasql/Encoders.hs | 4 +-- library/Hasql/Private/Encoders.hs | 56 +++++++++++++++---------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/library/Hasql/Encoders.hs b/library/Hasql/Encoders.hs index 0ae794d..42fcfb6 100644 --- a/library/Hasql/Encoders.hs +++ b/library/Hasql/Encoders.hs @@ -16,8 +16,6 @@ module Hasql.Encoders nullable, -- * Value Value, - array, - foldableArray, bool, int2, int4, @@ -42,6 +40,8 @@ module Hasql.Encoders jsonbBytes, enum, unknown, + array, + foldableArray, -- * Array Array, element, diff --git a/library/Hasql/Private/Encoders.hs b/library/Hasql/Private/Encoders.hs index 01c01f7..b1e406c 100644 --- a/library/Hasql/Private/Encoders.hs +++ b/library/Hasql/Private/Encoders.hs @@ -114,34 +114,6 @@ Value encoder. newtype Value a = Value (Value.Value a) deriving (Contravariant) -{-| -Lift an array encoder into a parameter encoder. --} -array :: Array a -> Value a -array (Array (Array.Array valueOID arrayOID arrayEncoder renderer)) = let - encoder env input = A.array (PTI.oidWord32 valueOID) (arrayEncoder env input) - in Value (Value.Value arrayOID arrayOID encoder renderer) - -{-| -Lift a value encoder of element into a unidimensional array encoder of a foldable value. - -E.g., - -@ -vectorOfInts :: Value (Vector Int64) -vectorOfInts = 'foldableArray' ('nonNullable' 'int8') -@ - -This function is merely a shortcut for the following expression: - -@ -('array' . 'dimension' 'foldl'' . 'element') -@ --} -{-# INLINE foldableArray #-} -foldableArray :: Foldable foldable => NullableOrNot Value a -> Value (foldable a) -foldableArray = array . dimension foldl' . element - {-| Encoder of @BOOL@ values. -} @@ -320,6 +292,34 @@ section of the Postgres' documentation. unknown :: Value ByteString unknown = Value (Value.unsafePTIWithShow PTI.unknown (const A.bytea_strict)) +{-| +Lift an array encoder into a parameter encoder. +-} +array :: Array a -> Value a +array (Array (Array.Array valueOID arrayOID arrayEncoder renderer)) = let + encoder env input = A.array (PTI.oidWord32 valueOID) (arrayEncoder env input) + in Value (Value.Value arrayOID arrayOID encoder renderer) + +{-| +Lift a value encoder of element into a unidimensional array encoder of a foldable value. + +E.g., + +@ +vectorOfInts :: Value (Vector Int64) +vectorOfInts = 'foldableArray' ('nonNullable' 'int8') +@ + +This function is merely a shortcut for the following expression: + +@ +('array' . 'dimension' 'foldl'' . 'element') +@ +-} +{-# INLINE foldableArray #-} +foldableArray :: Foldable foldable => NullableOrNot Value a -> Value (foldable a) +foldableArray = array . dimension foldl' . element + -- * Array -------------------------