@@ -142,6 +142,8 @@ import qualified Data.ByteString.Lazy as LB
142import qualified Data.Text as ST
142import qualified Data.Text as ST
143import qualified Data.Text.Encoding as ST
143import qualified Data.Text.Encoding as ST
144import qualified Data.Text.Lazy as LT
144import qualified Data.Text.Lazy as LT
145+import Data.CaseInsensitive (CI)
146+import qualified Data.CaseInsensitive as CI
145import Data.UUID (UUID)
147import Data.UUID (UUID)
146import qualified Data.UUID as UUID
148import qualified Data.UUID as UUID
147import Data.Scientific (Scientific)
149import Data.Scientific (Scientific)
@@ -397,6 +399,28 @@ instance FromField ST.Text where
397instance FromField LT.Text where
399instance FromField LT.Text where
398 fromField f dat = LT.fromStrict <$> fromField f dat
400 fromField f dat = LT.fromStrict <$> fromField f dat
403+instance FromField (CI ST.Text) where
404+ fromField f mdat = do
407+ then returnError Incompatible f ""
409+ Nothing -> returnError UnexpectedNull f ""
410+ Just dat -> either left (pure . CI.mk)
411+ (ST.decodeUtf8' dat)
414+instance FromField (CI LT.Text) where
415+ fromField f mdat = do
418+ then returnError Incompatible f ""
420+ Nothing -> returnError UnexpectedNull f ""
421+ Just dat -> either left (pure . CI.mk . LT.fromStrict)
422+ (ST.decodeUtf8' dat)
400-- | name, text, \"char\", bpchar, varchar
424-- | name, text, \"char\", bpchar, varchar
401instance FromField [Char] where
425instance FromField [Char] where
402 fromField f dat = ST.unpack <$> fromField f dat
426 fromField f dat = ST.unpack <$> fromField f dat