packages feed

SQLDeps-0.1: Example.hs

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