on master help sign in
add :automergetohead command to tutd
977e1bcAgentM
src/bin/TutorialD/Interpreter.hs+5
@@ -43,6 +43,7 @@ data ParsedOperation = RODatabaseContextOp RODatabaseContextOperator |
43 DatabaseContextIOExprOp DatabaseContextIOExpr |
43 DatabaseContextIOExprOp DatabaseContextIOExpr |
44 InfoOp InformationOperator |
44 InfoOp InformationOperator |
45 GraphOp TransactionGraphOperator |
45 GraphOp TransactionGraphOperator |
46+ ConvenienceGraphOp ConvenienceTransactionGraphOperator |
46 ROGraphOp ROTransactionGraphOperator |
47 ROGraphOp ROTransactionGraphOperator |
47 ImportRelVarOp RelVarDataImportOperator |
48 ImportRelVarOp RelVarDataImportOperator |
48 ImportDBContextOp DatabaseContextDataImportOperator |
49 ImportDBContextOp DatabaseContextDataImportOperator |
@@ -64,6 +65,7 @@ safeInterpreterParserP :: Parser ParsedOperation
64safeInterpreterParserP = fmap RODatabaseContextOp (roDatabaseContextOperatorP <* eof) <|>
65safeInterpreterParserP = fmap RODatabaseContextOp (roDatabaseContextOperatorP <* eof) <|>
65 fmap InfoOp (infoOpP <* eof) <|>
66 fmap InfoOp (infoOpP <* eof) <|>
66 fmap GraphOp (transactionGraphOpP <* eof) <|>
67 fmap GraphOp (transactionGraphOpP <* eof) <|>
68+ fmap ConvenienceGraphOp (convenienceTransactionGraphOpP <* eof) <|>
67 fmap ROGraphOp (roTransactionGraphOpP <* eof) <|>
69 fmap ROGraphOp (roTransactionGraphOpP <* eof) <|>
68 fmap DatabaseContextExprOp (databaseExprOpP <* eof) <|>
70 fmap DatabaseContextExprOp (databaseExprOpP <* eof) <|>
69 fmap ImportBasicExampleOp (importBasicExampleOperatorP <* eof) <|>
71 fmap ImportBasicExampleOp (importBasicExampleOperatorP <* eof) <|>
@@ -103,6 +105,9 @@ evalTutorialD sessionId conn safe expr = case expr of
103
105
104 (GraphOp execOp) ->
106 (GraphOp execOp) ->
105 eHandler $ C.executeGraphExpr sessionId conn execOp
107 eHandler $ C.executeGraphExpr sessionId conn execOp
108+
109+ (ConvenienceGraphOp execOp) ->
110+ eHandler $ evalConvenienceGraphOp sessionId conn execOp
106
111
107 (ROGraphOp execOp) -> do
112 (ROGraphOp execOp) -> do
108 opResult <- evalROGraphOp sessionId conn execOp
113 opResult <- evalROGraphOp sessionId conn execOp
src/bin/TutorialD/Interpreter/TransactionGraphOperator.hs+15−1
@@ -3,11 +3,22 @@ module TutorialD.Interpreter.TransactionGraphOperator where
3import TutorialD.Interpreter.Base
3import TutorialD.Interpreter.Base
4import Text.Megaparsec.Text
4import Text.Megaparsec.Text
5import Text.Megaparsec
5import Text.Megaparsec
6−import ProjectM36.TransactionGraph
6+import ProjectM36.TransactionGraph hiding (autoMergeToHead)
7import ProjectM36.Client
7import ProjectM36.Client
8import ProjectM36.Error
8import ProjectM36.Error
9import ProjectM36.Base
9import ProjectM36.Base
10
10
11+data ConvenienceTransactionGraphOperator = AutoMergeToHead MergeStrategy HeadName
12+ deriving (Show)
13+
14+convenienceTransactionGraphOpP :: Parser ConvenienceTransactionGraphOperator
15+convenienceTransactionGraphOpP = autoMergeToHeadP
16+
17+autoMergeToHeadP :: Parser ConvenienceTransactionGraphOperator
18+autoMergeToHeadP = do
19+ reserved ":automergetohead"
20+ AutoMergeToHead <$> mergeTransactionStrategyP <*> identifier
21+
11jumpToHeadP :: Parser TransactionGraphOperator
22jumpToHeadP :: Parser TransactionGraphOperator
12jumpToHeadP = do
23jumpToHeadP = do
13 reservedOp ":jumphead"
24 reservedOp ":jumphead"
@@ -100,3 +111,6 @@ interpretOps newUUID trans@(DisconnectedTransaction _ context) transGraph instri
100
111
101evalROGraphOp :: SessionId -> Connection -> ROTransactionGraphOperator -> IO (Either RelationalError Relation)
112evalROGraphOp :: SessionId -> Connection -> ROTransactionGraphOperator -> IO (Either RelationalError Relation)
102evalROGraphOp sessionId conn ShowGraph = transactionGraphAsRelation sessionId conn
113evalROGraphOp sessionId conn ShowGraph = transactionGraphAsRelation sessionId conn
114+
115+evalConvenienceGraphOp :: SessionId -> Connection -> ConvenienceTransactionGraphOperator -> IO (Either RelationalError ())
116+evalConvenienceGraphOp sessionId conn (AutoMergeToHead strat head') = autoMergeToHead sessionId conn strat head'