Add FromField DiffTime and FromField TimeOfDay
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
module Database.PostgreSQL.Opium.FromFieldSpec (spec) where
|
||||
|
||||
import Data.ByteString (ByteString)
|
||||
import Data.Time (Day (..), fromGregorian)
|
||||
import Data.Time (Day (..), DiffTime, TimeOfDay (..), fromGregorian, secondsToDiffTime)
|
||||
import Data.Text (Text)
|
||||
import Database.PostgreSQL.LibPQ (Connection)
|
||||
import Database.PostgreSQL.Opium (FromRow)
|
||||
@@ -81,6 +81,18 @@ newtype ADay = ADay
|
||||
|
||||
instance FromRow ADay where
|
||||
|
||||
newtype ADiffTime = ADiffTime
|
||||
{ difftime :: DiffTime
|
||||
} deriving (Eq, Generic, Show)
|
||||
|
||||
instance FromRow ADiffTime where
|
||||
|
||||
newtype ATimeOfDay = ATimeOfDay
|
||||
{ timeofday :: TimeOfDay
|
||||
} deriving (Eq, Generic, Show)
|
||||
|
||||
instance FromRow ATimeOfDay where
|
||||
|
||||
newtype ARawField = ARawField
|
||||
{ raw :: Opium.RawField
|
||||
} deriving (Eq, Generic, Show)
|
||||
@@ -223,6 +235,18 @@ spec = do
|
||||
-- Example from postgres doc page
|
||||
shouldFetch conn "SELECT date 'J2451187' AS day" [ADay $ fromGregorian 1999 1 8]
|
||||
|
||||
describe "FromField DiffTime" $ do
|
||||
it "Decodes the time" $ \conn -> do
|
||||
shouldFetch conn "SELECT time '00:00:00' AS difftime" [ADiffTime 0]
|
||||
shouldFetch conn "SELECT time '00:01:00' AS difftime" [ADiffTime $ secondsToDiffTime 60]
|
||||
shouldFetch conn "SELECT time '13:07:43' AS difftime" [ADiffTime $ secondsToDiffTime $ 13 * 3600 + 7 * 60 + 43]
|
||||
|
||||
describe "FromField TimeOfDay" $ do
|
||||
it "Decodes the time" $ \conn -> do
|
||||
shouldFetch conn "SELECT time '00:00:00' AS timeofday" [ATimeOfDay $ TimeOfDay 0 0 0]
|
||||
shouldFetch conn "SELECT time '00:01:00' AS timeofday" [ATimeOfDay $ TimeOfDay 0 1 0]
|
||||
shouldFetch conn "SELECT time '13:07:43' AS timeofday" [ATimeOfDay $ TimeOfDay 13 7 43]
|
||||
|
||||
describe "FromField RawField" $ do
|
||||
it "Simply returns the bytestring without decoding it" $ \conn -> do
|
||||
shouldFetch conn "SELECT 'Hello, World!'::bytea AS raw" [ARawField $ Opium.RawField "Hello, World!"]
|
||||
|
||||
Reference in New Issue
Block a user