@@ -9,6 +9,7 @@ import ProjectM36.Tuple
99import ProjectM36.TupleSet
1010import ProjectM36.Error
1111import ProjectM36.Base
12+import qualified ProjectM36.Base as Base
1213import ProjectM36.TransactionGraph
1314import ProjectM36.Client
1415import ProjectM36.Atom
@@ -24,6 +25,7 @@ import Data.Text (Text)
2425import Data.Time.Clock (UTCTime(..))
2526import Data.Time.Calendar (fromGregorian)
2627import Data.Interval (interval, Interval, Extended(Finite))
28+import Control.Concurrent.STM
2729
2830main :: IO ()
2931main = do
@@ -131,7 +133,7 @@ transactionGraphBasicTest = TestCase $ do
131133transactionGraphAddCommitTest :: Test
132134transactionGraphAddCommitTest = TestCase $ do
133135 dbconn <- dateExamplesConnection
134− case parseTutorialD dbconn "x:=S" of
136+ case parseTutorialD "x:=S" of
135137 Left err -> assertFailure (show err)
136138 Right parsed -> do
137139 result <- evalTutorialD dbconn parsed
@@ -218,17 +220,35 @@ simpleJoinTest = TestCase $ assertTutdEqual dateExamples joinedRel "x:=S join SP
218220 [stringAtom "London", intAtom 200, stringAtom "P4", stringAtom "S1", stringAtom "Smith", intAtom 20],
219221 [stringAtom "London", intAtom 200, stringAtom "P2", stringAtom "S4", stringAtom "Clark", intAtom 20]
220222 ]
223+transactionGraph :: Connection -> IO TransactionGraph
224+transactionGraph (InProcessConnection _ tvar) = atomically $ do
225+ (_, graph) <- readTVar tvar
226+ pure graph
227+transactionGraph _ = error "remote connection used"
221228
229+disconnectedTransaction :: Connection -> IO DisconnectedTransaction
230+disconnectedTransaction (InProcessConnection _ tvar) = atomically $ do
231+ (discon, _) <- readTVar tvar
232+ pure discon
233+disconnectedTransaction _ = error "remote connection used"
234+
235+{-
236+inclusionDependencies :: Connection -> M.Map IncDepName InclusionDependency
237+inclusionDependencies (InProcessConnection (DisconnectedTransaction _ context)) = inclusionDependencies context
238+inclusionDependencies _ = error "remote connection used"
239+-}
240+
222241dateExamplesConnection :: IO (Connection)
223242dateExamplesConnection = do
224243 dbconn <- connectProjectM36 (InProcessConnectionInfo NoPersistence)
244+ let incDeps = Base.inclusionDependencies dateExamples
225245 case dbconn of
226246 Left err -> do
227247 hPutStrLn stderr (show err)
228248 exitFailure
229249 Right conn -> do
230250 mapM_ (\(rvName,rvRel) -> executeDatabaseContextExpr conn (Assign rvName (ExistingRelation rvRel))) (M.toList (relationVariables dateExamples))
231− mapM_ (\(idName,incDep) -> executeDatabaseContextExpr conn (AddInclusionDependency idName incDep)) (M.toList (inclusionDependencies dateExamples))
251+ mapM_ (\(idName,incDep) -> executeDatabaseContextExpr conn (AddInclusionDependency idName incDep)) (M.toList incDeps)
232252 --skipping atom functions for now- there are no atom function manipulation operators yet
233253 commit conn >>= maybeFail
234254 return conn