@@ -36,6 +36,8 @@ import Database.PostgreSQL.Simple.Types (Binary(..), In(..), Null)
3636import qualified Blaze.ByteString.Builder.Char.Utf8 as Utf8
3737import qualified Data.ByteString as SB
3838import qualified Data.ByteString.Lazy as LB
39+import Data.Foldable (toList)
40+import Data.Sequence (Seq)
3941import qualified Data.Text as ST
4042import qualified Data.Text.Encoding as ST
4143import qualified Data.Text.Lazy as LT
@@ -221,6 +223,14 @@ instance ToField Date where
221223 toField = Plain . inQuotes . dateToBuilder
222224 {-# INLINE toField #-}
223225
226+instance (ToField a) => ToField (Seq a) where
227+ toField xs = Many $
228+ Plain (fromByteString "ARRAY[") :
229+ (intersperse (Plain (fromChar ',')) . map toField $ toList xs) ++
230+ [Plain (fromChar ']')]
231+ -- Because the ARRAY[...] input syntax is being used, it is possible
232+ -- that the use of type-specific separator characters is unnecessary.
233+
224234-- | Surround a string with single-quote characters: \"@'@\"
225235--
226236-- This function /does not/ perform any other escaping.