@@ -290,15 +290,20 @@ instance FromField Date where
291ff :: BuiltinType -> String -> (B8.ByteString -> Either String a)
291ff :: BuiltinType -> String -> (B8.ByteString -> Either String a)
292 -> Field -> Maybe B8.ByteString -> Ok a
292 -> Field -> Maybe B8.ByteString -> Ok a
293−ff pgType hsType parse f mstr
293+ff pgType hsType parse f mstr =
294− | typeOid f /= builtin2oid pgType
294+ if typeOid f /= builtin2oid pgType
295− = left (Incompatible (B8.unpack (typename f)) (tableOid f) (maybe "" B8.unpack (name f)) hsType "")
295+ then err Incompatible ""
296− | Nothing <- mstr
297+ Nothing -> err UnexpectedNull ""
297− = left (UnexpectedNull (B8.unpack (typename f)) (tableOid f) (maybe "" B8.unpack (name f)) hsType "")
299− = case parse str of
298+ Just str -> case parse str of
300− Left msg -> left (ConversionFailed (B8.unpack (typename f)) (tableOid f) (maybe "" B8.unpack (name f)) hsType msg)
299+ Left msg -> err ConversionFailed msg
301− Right val -> return val
300+ Right val -> return val
302+ err errC msg = left $ errC (B8.unpack (typename f))
304+ (maybe "" B8.unpack (name f))
302{-# INLINE ff #-}
307{-# INLINE ff #-}
304instance (FromField a, FromField b) => FromField (Either a b) where
309instance (FromField a, FromField b) => FromField (Either a b) where