project-m36-0.8: src/lib/ProjectM36/DatabaseContextFunctionUtils.hs
module ProjectM36.DatabaseContextFunctionUtils where
import ProjectM36.RelationalExpression
import ProjectM36.Base
import ProjectM36.DatabaseContextFunctionError
import ProjectM36.Error
import ProjectM36.StaticOptimizer
executeDatabaseContextExpr :: DatabaseContextExpr -> TransactionId -> TransactionGraph -> DatabaseContext -> Either DatabaseContextFunctionError DatabaseContext
executeDatabaseContextExpr expr transId graph context' =
case run of
Right st -> pure (dbc_context st)
Left err -> error (show err)
where
env = mkDatabaseContextEvalEnv transId graph
run = runDatabaseContextEvalMonad context' env (optimizeAndEvalDatabaseContextExpr True expr)
executeRelationalExpr :: RelationalExpr -> DatabaseContext -> TransactionGraph -> Either RelationalError Relation
executeRelationalExpr expr context graph =
run
where
env = mkRelationalExprEnv context graph
run = optimizeAndEvalRelationalExpr env expr