on fbfa2ea help sign in
project-m36/src/lib/ProjectM36/DatabaseContextFunctionUtils.hs
15 lines 776 B history raw
1module ProjectM36.DatabaseContextFunctionUtils where
2import ProjectM36.RelationalExpression
3import ProjectM36.Base
4import ProjectM36.DatabaseContextFunctionError
5import ProjectM36.Error
6import Control.Monad.State
7import Control.Monad.Trans.Reader
9executeDatabaseContextExpr :: DatabaseContextExpr -> DatabaseContext -> Either DatabaseContextFunctionError DatabaseContext
10executeDatabaseContextExpr expr context = case runState (evalDatabaseContextExpr expr) (freshDatabaseState context) of
11 (Nothing, (context', _, _)) -> pure context'
12 (Just err, _) -> error (show err)
14executeRelationalExpr :: RelationalExpr -> DatabaseContext -> Either RelationalError Relation
15executeRelationalExpr expr context = runReader (evalRelationalExpr expr) (mkRelationalExprState context)