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