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 :: DatabaseContextExpr -> TransactionId -> TransactionGraph -> DatabaseContext -> Either DatabaseContextFunctionError DatabaseContext executeDatabaseContextExpr DatabaseContextExpr expr TransactionId transId TransactionGraph graph DatabaseContext context' = case Either RelationalError DatabaseContextEvalState run of Right DatabaseContextEvalState st -> forall (f :: * -> *) a. Applicative f => a -> f a pure (DatabaseContextEvalState -> DatabaseContext dbc_context DatabaseContextEvalState st) Left RelationalError err -> forall a. HasCallStack => [Char] -> a error (forall a. Show a => a -> [Char] show RelationalError err) where env :: DatabaseContextEvalEnv env = TransactionId -> TransactionGraph -> DatabaseContextEvalEnv mkDatabaseContextEvalEnv TransactionId transId TransactionGraph graph run :: Either RelationalError DatabaseContextEvalState run = DatabaseContext -> DatabaseContextEvalEnv -> DatabaseContextEvalMonad () -> Either RelationalError DatabaseContextEvalState runDatabaseContextEvalMonad DatabaseContext context' DatabaseContextEvalEnv env (Bool -> DatabaseContextExpr -> DatabaseContextEvalMonad () optimizeAndEvalDatabaseContextExpr Bool True DatabaseContextExpr expr) executeRelationalExpr :: RelationalExpr -> DatabaseContext -> TransactionGraph -> Either RelationalError Relation executeRelationalExpr :: RelationalExpr -> DatabaseContext -> TransactionGraph -> Either RelationalError Relation executeRelationalExpr RelationalExpr expr DatabaseContext context TransactionGraph graph = Either RelationalError Relation run where env :: RelationalExprEnv env = DatabaseContext -> TransactionGraph -> RelationalExprEnv mkRelationalExprEnv DatabaseContext context TransactionGraph graph run :: Either RelationalError Relation run = RelationalExprEnv -> RelationalExpr -> Either RelationalError Relation optimizeAndEvalRelationalExpr RelationalExprEnv env RelationalExpr expr