import Control.Monad.Trans.Class (lift) import Data.CQRS import Data.CQRS.EventStore (withEventStore) import Data.CQRS.EventStore.Sqlite3 import Aggregates import Events import Instances () sqliteFile :: String sqliteFile = "example.db" test1 :: IO () test1 = withEventStore (openSqliteEventStore sqliteFile) $ \eventStore -> do runTransactionT eventStore $ do -- Create new project. projectId :: GUID Project <- lift $ newGUID (projectRef, _) <- getAggregateRoot projectId publishEvent projectRef $ CreateProject "my project" -- Add a couple of tasks taskId1 :: GUID Task <- lift $ newGUID (taskRef1, _) <- getAggregateRoot taskId1 publishEvent taskRef1 $ AddTask projectId "tweak knob" taskId2 :: GUID Task <- lift $ newGUID (taskRef2, _) <- getAggregateRoot taskId2 publishEvent taskRef2 $ AddTask projectId "pull lever" main :: IO () main = do putStrLn "Running test1..." test1 putStrLn "Done."