on f7fc888 help sign in
project-m36/src/lib/ProjectM36/DatabaseContextFunctionUtils.hs
22 lines 946 B history raw
1module ProjectM36.DatabaseContextFunctionUtils where
2import ProjectM36.RelationalExpression
3import ProjectM36.Base
4import ProjectM36.DatabaseContextFunctionError
5import ProjectM36.Error
6import ProjectM36.StaticOptimizer
8executeDatabaseContextExpr :: DatabaseContextExpr -> TransactionId -> TransactionGraph -> DatabaseContext -> Either DatabaseContextFunctionError DatabaseContext
9executeDatabaseContextExpr expr transId graph context' =
10 case run of
11 Right st -> pure (dbc_context st)
12 Left err -> error (show err)
13 where
14 env = mkDatabaseContextEvalEnv transId graph
15 run = runDatabaseContextEvalMonad context' env (optimizeAndEvalDatabaseContextExpr True expr)
17executeRelationalExpr :: RelationalExpr -> DatabaseContext -> TransactionGraph -> Either RelationalError Relation
18executeRelationalExpr expr context graph =
19 run
20 where
21 env = mkRelationalExprEnv context graph
22 run = optimizeAndEvalRelationalExpr env expr