git.iko.soy/typeable/postgresql-simple
on master help sign in
Add support for scientific

Closes #97

commit87135c161c0898d71d47371a034437974344fa4e authorLeon P Smith <leon@melding-monads.com> dateSat 22 Mar 2014, 20:15 (13 years ago) parentc867b47
2 files changed+12
src/Database/PostgreSQL/Simple/FromField.hs+6 src/Database/PostgreSQL/Simple/ToField.hs+6
src/Database/PostgreSQL/Simple/FromField.hs+6
@@ -127,6 +127,7 @@ import qualified Data.Text.Encoding as ST
127127import qualified Data.Text.Lazy as LT
128128import Data.UUID (UUID)
129129import qualified Data.UUID as UUID
130+import Data.Scientific (Scientific)
130131
131132-- | Exception thrown if conversion from a SQL value to a Haskell
132133-- value fails.
@@ -315,6 +316,11 @@ instance FromField (Ratio Integer) where
315316 fromField = atto ok rational
316317 where ok = $(mkCompats [TI.float4,TI.float8,TI.int2,TI.int4,TI.numeric])
317318
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+
318324unBinary :: Binary t -> t
319325unBinary (Binary x) = x
320326
src/Database/PostgreSQL/Simple/ToField.hs+6
@@ -41,12 +41,14 @@ import qualified Data.ByteString.Lazy as LB
4141import qualified Data.Text as ST
4242import qualified Data.Text.Encoding as ST
4343import qualified Data.Text.Lazy as LT
44+import qualified Data.Text.Lazy.Builder as LT
4445import Data.UUID (UUID)
4546import qualified Data.UUID as UUID
4647import Data.Vector (Vector)
4748import qualified Data.Vector as V
4849import qualified Database.PostgreSQL.LibPQ as PQ
4950import Database.PostgreSQL.Simple.Time
51+import Data.Scientific (Scientific, scientificBuilder)
5052
5153-- | How to render an element when substituting it into a query.
5254data Action =
@@ -172,6 +174,10 @@ instance ToField Double where
172174 | otherwise = Plain (double v)
173175 {-# INLINE toField #-}
174176
177+instance ToField Scientific where
178+ toField x = toField (LT.toLazyText (scientificBuilder x))
179+ {-# INLINE toField #-}
180+
175181instance ToField (Binary SB.ByteString) where
176182 toField (Binary bs) = EscapeByteA bs
177183 {-# INLINE toField #-}