Add FromField Word
This commit is contained in:
parent
e307ee73d8
commit
83d2c07396
@ -56,6 +56,7 @@ instance FromField Char where
|
|||||||
parseField = anyChar
|
parseField = anyChar
|
||||||
|
|
||||||
-- | See https://www.postgresql.org/docs/current/datatype-numeric.html.
|
-- | See https://www.postgresql.org/docs/current/datatype-numeric.html.
|
||||||
|
-- We assume that 'Int' has 64 bits. This is not guaranteed but reasonable enough.
|
||||||
instance FromField Int where
|
instance FromField Int where
|
||||||
validOid Proxy = Oid.smallint \/ Oid.integer \/ Oid.bigint
|
validOid Proxy = Oid.smallint \/ Oid.integer \/ Oid.bigint
|
||||||
parseField = signed decimal
|
parseField = signed decimal
|
||||||
@ -65,6 +66,10 @@ instance FromField Integer where
|
|||||||
validOid Proxy = Oid.smallint \/ Oid.integer \/ Oid.bigint
|
validOid Proxy = Oid.smallint \/ Oid.integer \/ Oid.bigint
|
||||||
parseField = signed decimal
|
parseField = signed decimal
|
||||||
|
|
||||||
|
instance FromField Word where
|
||||||
|
validOid Proxy = Oid.smallint \/ Oid.integer \/ Oid.bigint
|
||||||
|
parseField = decimal
|
||||||
|
|
||||||
doubleParser :: Parser Double
|
doubleParser :: Parser Double
|
||||||
doubleParser = choice
|
doubleParser = choice
|
||||||
[ string "NaN" $> nan
|
[ string "NaN" $> nan
|
||||||
|
@ -24,6 +24,12 @@ newtype AnInteger = AnInteger
|
|||||||
|
|
||||||
instance FromRow AnInteger where
|
instance FromRow AnInteger where
|
||||||
|
|
||||||
|
newtype AWord = AWord
|
||||||
|
{ word :: Word
|
||||||
|
} deriving (Eq, Generic, Show)
|
||||||
|
|
||||||
|
instance FromRow AWord where
|
||||||
|
|
||||||
newtype AText = AText
|
newtype AText = AText
|
||||||
{ text :: Text
|
{ text :: Text
|
||||||
} deriving (Eq, Generic, Show)
|
} deriving (Eq, Generic, Show)
|
||||||
@ -90,6 +96,16 @@ spec = do
|
|||||||
it "Decodes bigint" $ \conn -> do
|
it "Decodes bigint" $ \conn -> do
|
||||||
shouldFetch conn "SELECT pow(2, 48)::BIGINT AS integer" [AnInteger $ (2 :: Integer) ^ (48 :: Integer)]
|
shouldFetch conn "SELECT pow(2, 48)::BIGINT AS integer" [AnInteger $ (2 :: Integer) ^ (48 :: Integer)]
|
||||||
|
|
||||||
|
describe "FromField Word" $ do
|
||||||
|
it "Decodes smallint" $ \conn -> do
|
||||||
|
shouldFetch conn "SELECT 42::SMALLINT AS word" [AWord 42]
|
||||||
|
|
||||||
|
it "Decodes integer" $ \conn -> do
|
||||||
|
shouldFetch conn "SELECT pow(2, 20)::INTEGER AS word" [AWord $ (2 :: Word) ^ (20 :: Word)]
|
||||||
|
|
||||||
|
it "Decodes bigint" $ \conn -> do
|
||||||
|
shouldFetch conn "SELECT pow(2, 48)::BIGINT AS word" [AWord $ (2 :: Word) ^ (48 :: Word)]
|
||||||
|
|
||||||
describe "FromField Text" $ do
|
describe "FromField Text" $ do
|
||||||
it "Decodes text" $ \conn -> do
|
it "Decodes text" $ \conn -> do
|
||||||
shouldFetch conn "SELECT 'Hello, World!'::TEXT AS text" [AText "Hello, World!"]
|
shouldFetch conn "SELECT 'Hello, World!'::TEXT AS text" [AText "Hello, World!"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user