module Example.UpdateMonad where
import Company
import Query (showTable, )
import qualified Query
import qualified Table
import Control.Monad (guard, )
main :: IO ()
main = do
empTable <- Table.create emp
deptTable <- Table.create dept
Table.insert empTable
(Emp
(EmpNo 7974)
"LEHMAN"
Clerk
(Just (EmpNo 7788))
1020
(DeptNo 20))
emp0 <- Table.from empTable
showTable (do
e <- emp0
guard (job e == Clerk)
return e)
Table.delete empTable
(\e -> ename e == "WARD")
Table.update empTable
(\e -> e{sal = sal e + 100})
emp1 <- Table.from empTable
dept0 <- Table.from deptTable
showTable (do
(dm,es) <- Query.groupBy deptno emp1
d <- dept0
guard (deptno d == dm)
return (dname d, Query.averageInt (map sal es)))