git.iko.soy/typeable/postgresql-simple
on master help sign in
add field' function
0ffbbceLeonid Onokhov
src/Database/PostgreSQL/Simple/FromRow.hs+7−3
@@ -20,6 +20,7 @@ module Database.PostgreSQL.Simple.FromRow
20 ( FromRow(..)
20 ( FromRow(..)
21 , RowParser
21 , RowParser
22 , field
22 , field
23+ , field'
23 , numFieldsRemaining
24 , numFieldsRemaining
24 ) where
25 ) where
25
26
@@ -64,8 +65,8 @@ import Data.Vector ((!))
64class FromRow a where
65class FromRow a where
65 fromRow :: RowParser a
66 fromRow :: RowParser a
66
67
67−field :: FromField a => RowParser a
68+field' :: (Field -> Maybe ByteString -> Ok a) -> RowParser a
68−field = RP $ do
69+field' fieldP = RP $ do
69 let unCol (PQ.Col x) = fromIntegral x :: Int
70 let unCol (PQ.Col x) = fromIntegral x :: Int
70 Row{..} <- ask
71 Row{..} <- ask
71 column <- lift get
72 column <- lift get
@@ -87,7 +88,10 @@ field = RP $ do
87 let typename = typenames ! unCol column
88 let typename = typenames ! unCol column
88 result = rowresult
89 result = rowresult
89 field = Field{..}
90 field = Field{..}
90− lift (lift (fromField field (getvalue result row column)))
91+ lift (lift (fieldP field (getvalue result row column)))
92+
93+field :: FromField a => RowParser a
94+field = field' fromField
91
95
92ellipsis :: ByteString -> ByteString
96ellipsis :: ByteString -> ByteString
93ellipsis bs
97ellipsis bs