import BasePrelude import MTLPrelude import Data.Text (Text) import Data.Vector (Vector) import Data.Time import qualified Hasql as H import qualified Hasql.Postgres as H import qualified ListT import qualified Test.QuickCheck.Gen as Q import qualified Test.QuickCheck.Arbitrary as Q import qualified Test.QuickCheck.Instances main = do rows :: [(Text, Day)] <- liftIO $ replicateM 100 $ (,) <$> Q.generate Q.arbitrary <*> Q.generate Q.arbitrary H.session (H.Postgres host port user password db) (fromJust $ H.sessionSettings 1 30) $ do H.tx Nothing $ do H.unit [H.q|DROP TABLE IF EXISTS a|] H.unit [H.q|CREATE TABLE a (id SERIAL NOT NULL, name VARCHAR NOT NULL, birthday DATE, PRIMARY KEY (id))|] forM_ rows $ \(name, birthday) -> do H.unit $ [H.q|INSERT INTO a (name, birthday) VALUES (?, ?)|] name birthday replicateM_ 2000 $ do H.tx Nothing $ do H.list $ [H.q|SELECT * FROM a|] :: H.Tx H.Postgres s [(Int, Text, Day)] host = "localhost" port = 5432 user = "postgres" password = "" db = "postgres"