@@ -19,6 +19,7 @@ module Database.PostgreSQL.Simple.Range
20 , isEmpty, isEmptyBy
20 , isEmpty, isEmptyBy
21 , contains, containsBy
21 , contains, containsBy
24import Control.Applicative hiding (empty)
25import Control.Applicative hiding (empty)
@@ -189,7 +190,10 @@ rangeToBuilderBy cmp f x =
191instance (FromField a, Typeable a) => FromField (PGRange a) where
192instance (FromField a, Typeable a) => FromField (PGRange a) where
192− fromField f mdat = do
193+ fromField = fromFieldRange fromField
195+fromFieldRange :: Typeable a => FieldParser a -> FieldParser (PGRange a)
196+fromFieldRange fromField' f mdat = do
193 info <- typeInfo f
197 info <- typeInfo f
194 case info of
198 case info of
195 Range{} ->
199 Range{} ->
@@ -199,8 +203,8 @@ instance (FromField a, Typeable a) => FromField (PGRange a) where
199 Just "empty" -> pure $ empty
203 Just "empty" -> pure $ empty
200 Just bs ->
204 Just bs ->
201 let parseIt NegInfinity = pure NegInfinity
205 let parseIt NegInfinity = pure NegInfinity
202− parseIt (Inclusive v) = Inclusive <$> fromField f' (Just v)
206+ parseIt (Inclusive v) = Inclusive <$> fromField' f' (Just v)
203− parseIt (Exclusive v) = Exclusive <$> fromField f' (Just v)
207+ parseIt (Exclusive v) = Exclusive <$> fromField' f' (Just v)
204 parseIt PosInfinity = pure PosInfinity
208 parseIt PosInfinity = pure PosInfinity
205 in case parseOnly pgrange bs of
209 in case parseOnly pgrange bs of
206 Left e -> returnError ConversionFailed f e
210 Left e -> returnError ConversionFailed f e