@@ -4,9 +4,14 @@ import TutorialD.Interpreter.Base
4import TutorialD.Interpreter.RODatabaseContextOperator
4import TutorialD.Interpreter.RODatabaseContextOperator
5import TutorialD.Interpreter.DatabaseExpr
5import TutorialD.Interpreter.DatabaseExpr
6import TutorialD.Interpreter.TransactionGraphOperator
6import TutorialD.Interpreter.TransactionGraphOperator
7import TutorialD.Interpreter.Import.CSV
8import TutorialD.Interpreter.Import.CSV
8import TutorialD.Interpreter.Import.TutorialD
9import TutorialD.Interpreter.Import.TutorialD
9import TutorialD.Interpreter.Import.Base
10import TutorialD.Interpreter.Import.Base
12+import TutorialD.Interpreter.Export.CSV
13+import TutorialD.Interpreter.Export.Base
10import ProjectM36.Base
15import ProjectM36.Base
11import ProjectM36.Relation.Show.Term
16import ProjectM36.Relation.Show.Term
12import ProjectM36.TransactionGraph
17import ProjectM36.TransactionGraph
@@ -28,14 +33,16 @@ data ParsedOperation = RODatabaseContextOp RODatabaseContextOperator |
28 DatabaseExprOp DatabaseExpr |
33 DatabaseExprOp DatabaseExpr |
29 GraphOp TransactionGraphOperator |
34 GraphOp TransactionGraphOperator |
30 ROGraphOp ROTransactionGraphOperator |
35 ROGraphOp ROTransactionGraphOperator |
31− ImportOp DataImportOperator
36+ ImportOp DataImportOperator |
37+ ExportOp DataExportOperator
33interpreterParserP :: Parser ParsedOperation
39interpreterParserP :: Parser ParsedOperation
34interpreterParserP = liftM RODatabaseContextOp (roDatabaseContextOperatorP <* eof) <|>
40interpreterParserP = liftM RODatabaseContextOp (roDatabaseContextOperatorP <* eof) <|>
35 liftM GraphOp (transactionGraphOpP <* eof) <|>
41 liftM GraphOp (transactionGraphOpP <* eof) <|>
36 liftM ROGraphOp (roTransactionGraphOpP <* eof) <|>
42 liftM ROGraphOp (roTransactionGraphOpP <* eof) <|>
37 liftM DatabaseExprOp (databaseExprOpP <* eof) <|>
43 liftM DatabaseExprOp (databaseExprOpP <* eof) <|>
38− liftM ImportOp ((importCSVP <|> tutdImportP) <* eof)
44+ liftM ImportOp ((importCSVP <|> tutdImportP) <* eof) <|>
45+ liftM ExportOp (exportCSVP <* eof)
40promptText :: DisconnectedTransaction -> TransactionGraph -> StringType
47promptText :: DisconnectedTransaction -> TransactionGraph -> StringType
41promptText (DisconnectedTransaction parentUUID _) graph = "TutorialD (" `T.append` transInfo `T.append` "): "
48promptText (DisconnectedTransaction parentUUID _) graph = "TutorialD (" `T.append` transInfo `T.append` "): "
@@ -63,13 +70,13 @@ evalTutorialD conn expr = case expr of
63 maybeErr <- executeDatabaseContextExpr conn execOp
70 maybeErr <- executeDatabaseContextExpr conn execOp
64 case maybeErr of
71 case maybeErr of
65 Just err -> barf err
72 Just err -> barf err
66− Nothing -> return $ QuietSuccessResult
73+ Nothing -> return QuietSuccessResult
68 (GraphOp execOp) -> do
75 (GraphOp execOp) -> do
69 maybeErr <- executeGraphExpr conn execOp
76 maybeErr <- executeGraphExpr conn execOp
70 case maybeErr of
77 case maybeErr of
71 Just err -> barf err
78 Just err -> barf err
72− Nothing -> return $ QuietSuccessResult
79+ Nothing -> return QuietSuccessResult
74 (ROGraphOp execOp) -> do
81 (ROGraphOp execOp) -> do
75 discon <- disconnectedTransaction conn
82 discon <- disconnectedTransaction conn
@@ -84,6 +91,13 @@ evalTutorialD conn expr = case expr of
84 case exprErr of
91 case exprErr of
85 Left err -> barf err
92 Left err -> barf err
86 Right dbexpr -> evalTutorialD conn (DatabaseExprOp dbexpr)
93 Right dbexpr -> evalTutorialD conn (DatabaseExprOp dbexpr)
95+ (ExportOp execOp) -> do
96+ (DisconnectedTransaction _ context) <- disconnectedTransaction conn
97+ exprErr <- evalDataExportOperator execOp context
100+ Nothing -> return QuietSuccessResult
89 barf err = return $ DisplayErrorResult (T.pack (show err))
103 barf err = return $ DisplayErrorResult (T.pack (show err))