@@ -1,15 +1,17 @@
1{-# LANGUAGE
1{-# LANGUAGE
3 , DeriveGeneric
3 , DeriveGeneric
4 , OverloadedLabels
5 , OverloadedLabels
5 , OverloadedStrings
6 , OverloadedStrings
6 , TypeApplications
7 , TypeApplications
7 , TypeOperators
8 , TypeOperators
10−module Main (main) where
11+module Main (main, main2) where
12−import Control.Monad.Base (liftBase)
13+import Control.Monad (void)
14+import Control.Monad.Base (liftBase, MonadBase)
13import Data.Int (Int32)
15import Data.Int (Int32)
14import Data.Monoid ((<>))
16import Data.Monoid ((<>))
15import Data.Text (Text)
17import Data.Text (Text)
@@ -86,6 +88,17 @@ users =
86 , User "Carole" (Just "carole@hotmail.com")
88 , User "Carole" (Just "carole@hotmail.com")
91+session :: (MonadBase IO pq, MonadPQ Schema pq) => pq ()
93+ liftBase $ Char8.putStrLn "manipulating"
94+ idResults <- traversePrepared insertUser (Only . userName <$> users)
95+ ids <- traverse (fmap fromOnly . getRow (RowNumber 0)) idResults
96+ traversePrepared_ insertEmail (zip (ids :: [Int32]) (userEmail <$> users))
97+ liftBase $ Char8.putStrLn "querying"
98+ usersResult <- runQuery getUsers
99+ usersRows <- getRows usersResult
100+ liftBase $ print (usersRows :: [User])
89main :: IO ()
102main :: IO ()
91 Char8.putStrLn "squeal"
104 Char8.putStrLn "squeal"
@@ -95,15 +108,14 @@ main = do
95 connection0 <- connectdb connectionString
108 connection0 <- connectdb connectionString
96 Char8.putStrLn "setting up schema"
109 Char8.putStrLn "setting up schema"
97 connection1 <- execPQ (define setup) connection0
110 connection1 <- execPQ (define setup) connection0
98− connection2 <- flip execPQ connection1 $ do
111+ connection2 <- execPQ session connection1
99− liftBase $ Char8.putStrLn "manipulating"
100− idResults <- traversePrepared insertUser (Only . userName <$> users)
101− ids <- traverse (fmap fromOnly . getRow (RowNumber 0)) idResults
102− traversePrepared_ insertEmail (zip (ids :: [Int32]) (userEmail <$> users))
103− liftBase $ Char8.putStrLn "querying"
104− usersResult <- runQuery getUsers
105− usersRows <- getRows usersResult
106− liftBase $ print (usersRows :: [User])
107 Char8.putStrLn "tearing down schema"
112 Char8.putStrLn "tearing down schema"
108 connection3 <- execPQ (define teardown) connection2
113 connection3 <- execPQ (define teardown) connection2
109 finish connection3
114 finish connection3
118+ withConnection "host=localhost port=5432 dbname=exampledb" . runPQ $
121+ & thenDefine teardown