Add Maybe as possible row container type
This commit is contained in:
@@ -131,18 +131,6 @@ spec = do
|
||||
rows <- Opium.fetch "SELECT count(*) AS only FROM person WHERE name = $1" (Identity ("paul" :: Text)) conn
|
||||
rows `shouldBe` Right [Only (1 :: Int)]
|
||||
|
||||
it "Accepts exactly one row when Identity is the return type" $ \conn -> do
|
||||
row <- Opium.fetch "SELECT ($1 + $2) AS only" (17 :: Int, 25 :: Int) conn
|
||||
row `shouldBe` Right (Identity (Only (42 :: Int)))
|
||||
|
||||
it "Does not accept zero rows when Identity is the return type" $ \conn -> do
|
||||
row <- Opium.fetch @(Only Int) @Identity "SELECT ($1 + $2) AS only WHERE false" (17 :: Int, 25 :: Int) conn
|
||||
row `shouldSatisfy` isLeft
|
||||
|
||||
it "Does not accept two rows when Identity is the return type" $ \conn -> do
|
||||
row <- Opium.fetch @(Only Int) @Identity "SELECT $1 AS only UNION ALL SELECT $2 AS only" (17 :: Int, 25 :: Int) conn
|
||||
row `shouldSatisfy` isLeft
|
||||
|
||||
describe "fetch_" $ do
|
||||
it "Retrieves a list of rows" $ \conn -> do
|
||||
rows <- Opium.fetch_ "SELECT * FROM person" conn
|
||||
@@ -163,3 +151,27 @@ spec = do
|
||||
it "Works for the readme regression example" $ \conn -> do
|
||||
rows <- Opium.fetch_ @ScoreByAge @[] "SELECT regr_intercept(score, age) AS t, regr_slope(score, age) AS m FROM person" conn
|
||||
rows `shouldSatisfy` \case { (Right [ScoreByAge _ _]) -> True; _ -> False }
|
||||
|
||||
it "Accepts exactly one row when Identity is the row container type" $ \conn -> do
|
||||
row <- Opium.fetch_ "SELECT 42 AS only" conn
|
||||
row `shouldBe` Right (Identity (Only (42 :: Int)))
|
||||
|
||||
it "Does not accept zero rows when Identity is the row container type" $ \conn -> do
|
||||
row <- Opium.fetch_ @(Only Int) @Identity "SELECT 42 AS only WHERE false" conn
|
||||
row `shouldSatisfy` isLeft
|
||||
|
||||
it "Does not accept two rows when Identity is the row container type" $ \conn -> do
|
||||
row <- Opium.fetch_ @(Only Int) @Identity "SELECT 17 AS only UNION ALL SELECT 25 AS only" conn
|
||||
row `shouldSatisfy` isLeft
|
||||
|
||||
it "Accepts zero rows when Maybe is the row container type" $ \conn -> do
|
||||
row <- Opium.fetch_ @(Only Int) @Maybe "SELECT 17 AS only WHERE false" conn
|
||||
row `shouldBe` Right Nothing
|
||||
|
||||
it "Accepts one row when Maybe is the row container type" $ \conn -> do
|
||||
row <- Opium.fetch_ @(Only Int) @Maybe "SELECT 42 AS only" conn
|
||||
row `shouldBe` Right (Just (Only 42))
|
||||
|
||||
it "Does not accept two rows when Maybe is the row container type" $ \conn -> do
|
||||
row <- Opium.fetch_ @(Only Int) @Maybe "SELECT 17 AS only UNION ALL SELECT 25 AS only" conn
|
||||
row `shouldSatisfy` isLeft
|
||||
|
||||
Reference in New Issue
Block a user