import Control.Monad.RWS import Database.HDBC import Database.HDBC.Sqlite3 import Database.SQLDeps exampleSelect = Select [("users", "name")] ["users"] [SmallerThan ("users", "age") $ IntVal 5] exampleInsert a = Insert "users" [ (("users", "name"), StrVal "Alex") , (("users", "age"), IntVal a) ] exampleUpdate = Update "users" [ (("users", "age"), IntVal 2) ] [SmallerThan ("users", "age") $ IntVal 10] getYoungUsers = do young <- query exampleSelect "getYoungUsers" getYoungUsers liftIO $ putStrLn "Looking for all users age < 5" liftIO $ putStrLn $ show young insertNewUser age = do liftIO $ putStrLn $ "Adding Alex with age " ++ (show age) change $ exampleInsert age main = do conn <- connectSqlite3 ":memory:" runRaw conn $ "CREATE TABLE users (name TEXT, age INT)" runEngine conn $ do getYoungUsers insertNewUser 4 insertNewUser 10 insertNewUser 1 change $ exampleUpdate commit conn disconnect conn