Implement date -> Day decoding
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
module Database.PostgreSQL.Opium.FromFieldSpec (spec) where
|
||||
|
||||
import Data.ByteString (ByteString)
|
||||
import Data.Time (Day (..), fromGregorian)
|
||||
import Data.Text (Text)
|
||||
import Database.PostgreSQL.LibPQ (Connection)
|
||||
import Database.PostgreSQL.Opium (FromRow)
|
||||
@@ -72,6 +73,12 @@ newtype ABool = ABool
|
||||
|
||||
instance FromRow ABool where
|
||||
|
||||
newtype ADay = ADay
|
||||
{ day :: Day
|
||||
} deriving (Eq, Generic, Show)
|
||||
|
||||
instance FromRow ADay where
|
||||
|
||||
shouldFetch :: (Eq a, FromRow a, Show a) => Connection -> ByteString -> [a] -> IO ()
|
||||
shouldFetch conn query expectedRows = do
|
||||
actualRows <- Opium.fetch_ conn query
|
||||
@@ -200,3 +207,10 @@ spec = do
|
||||
shouldFetch conn "SELECT 'no'::boolean AS bool" [ABool False]
|
||||
shouldFetch conn "SELECT 'off'::boolean AS bool" [ABool False]
|
||||
shouldFetch conn "SELECT 0::boolean AS bool" [ABool False]
|
||||
|
||||
describe "FromField Day" $ do
|
||||
it "Decodes date" $ \conn -> do
|
||||
shouldFetch conn "SELECT date '1970-01-01' AS day" [ADay $ fromGregorian 1970 1 1]
|
||||
shouldFetch conn "SELECT date '2023-09-23' AS day" [ADay $ fromGregorian 2023 9 23]
|
||||
-- Example from postgres doc page
|
||||
shouldFetch conn "SELECT date 'J2451187' AS day" [ADay $ fromGregorian 1999 1 8]
|
||||
|
||||
Reference in New Issue
Block a user