on 1656f99 help sign in
project-m36/src/lib/ProjectM36/DatabaseContextFunctionUtils.hs
17 lines 940 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 -> TransactionId -> TransactionGraph -> DatabaseContext -> Either DatabaseContextFunctionError DatabaseContext
10executeDatabaseContextExpr expr tid graph context' = case runState (evalDatabaseContextExpr expr tid graph) (freshDatabaseState context') of
11 (Right (), st) -> pure (context st)
12 (Left err, _) -> error (show err)
14executeRelationalExpr :: RelationalExpr -> DatabaseContext -> TransactionId -> TransactionGraph -> Either RelationalError Relation
15executeRelationalExpr expr context tid graph = do
16 gfExpr <- runReader (evalRelationalExpr expr) (mkRelationalExprState context tid graph)
17 evalGraphRefRelationalExpr gfExpr graph