git.iko.soy/typeable/postgresql-simple
on master help sign in
Add support for scientific
87135c1Leon P Smith
src/Database/PostgreSQL/Simple/FromField.hs+6
@@ -127,6 +127,7 @@ import qualified Data.Text.Encoding as ST
127import qualified Data.Text.Lazy as LT
127import qualified Data.Text.Lazy as LT
128import Data.UUID (UUID)
128import Data.UUID (UUID)
129import qualified Data.UUID as UUID
129import qualified Data.UUID as UUID
130+import Data.Scientific (Scientific)
130
131
131-- | Exception thrown if conversion from a SQL value to a Haskell
132-- | Exception thrown if conversion from a SQL value to a Haskell
132-- value fails.
133-- value fails.
@@ -315,6 +316,11 @@ instance FromField (Ratio Integer) where
315 fromField = atto ok rational
316 fromField = atto ok rational
316 where ok = $(mkCompats [TI.float4,TI.float8,TI.int2,TI.int4,TI.numeric])
317 where ok = $(mkCompats [TI.float4,TI.float8,TI.int2,TI.int4,TI.numeric])
317
318
319+-- | int2, int4, float4, float8, numeric
320+instance FromField Scientific where
321+ fromField = atto ok rational
322+ where ok = $(mkCompats [TI.float4,TI.float8,TI.int2,TI.int4,TI.numeric])
323+
318unBinary :: Binary t -> t
324unBinary :: Binary t -> t
319unBinary (Binary x) = x
325unBinary (Binary x) = x
320
326
src/Database/PostgreSQL/Simple/ToField.hs+6
@@ -41,12 +41,14 @@ import qualified Data.ByteString.Lazy as LB
41import qualified Data.Text as ST
41import qualified Data.Text as ST
42import qualified Data.Text.Encoding as ST
42import qualified Data.Text.Encoding as ST
43import qualified Data.Text.Lazy as LT
43import qualified Data.Text.Lazy as LT
44+import qualified Data.Text.Lazy.Builder as LT
44import Data.UUID (UUID)
45import Data.UUID (UUID)
45import qualified Data.UUID as UUID
46import qualified Data.UUID as UUID
46import Data.Vector (Vector)
47import Data.Vector (Vector)
47import qualified Data.Vector as V
48import qualified Data.Vector as V
48import qualified Database.PostgreSQL.LibPQ as PQ
49import qualified Database.PostgreSQL.LibPQ as PQ
49import Database.PostgreSQL.Simple.Time
50import Database.PostgreSQL.Simple.Time
51+import Data.Scientific (Scientific, scientificBuilder)
50
52
51-- | How to render an element when substituting it into a query.
53-- | How to render an element when substituting it into a query.
52data Action =
54data Action =
@@ -172,6 +174,10 @@ instance ToField Double where
172 | otherwise = Plain (double v)
174 | otherwise = Plain (double v)
173 {-# INLINE toField #-}
175 {-# INLINE toField #-}
174
176
177+instance ToField Scientific where
178+ toField x = toField (LT.toLazyText (scientificBuilder x))
179+ {-# INLINE toField #-}
180+
175instance ToField (Binary SB.ByteString) where
181instance ToField (Binary SB.ByteString) where
176 toField (Binary bs) = EscapeByteA bs
182 toField (Binary bs) = EscapeByteA bs
177 {-# INLINE toField #-}
183 {-# INLINE toField #-}