public async Task ShouldSuccesfullyInitializeDatabaseAndCollection() { // ARRANGE var eventOffset = 0L; var projectionId = CombGuid.Generate(); var projectionType = "IntegrationTestProjection"; // Query Model Repository (DocumentDB) var queryModelRepository = new DocumentDbQueryModelRepository(_database, _collection, _offerThroughput, _noOfPartitions, _endpoint, _authKey); queryModelRepository.Initialize(); // Projection Metadata Repository (MSSQL); var projectionMetadataRepository = new SqlServerProjectionMetadataRepository(_sqlConnectionString); projectionMetadataRepository.InitializeProjection(projectionId, projectionType); // Dummy Query Model var queryModelId = CombGuid.Generate(); var testQueryModel = new TestQueryModel(queryModelId, "Hello Integration Test!"); // Query Model Store var queryModelStore = new QueryModelStore( queryModelRepository, projectionMetadataRepository, eventOffset, projectionId); // ACT await queryModelStore.SaveQueryModel(testQueryModel); // ASSERT }
public void Initialize() { // Configuration Parameters var eventDatabaseConnectionString = "Data Source=localhost;Initial Catalog=eventway-sample-db;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"; var projectionMetadataDatabaseConnectionString = eventDatabaseConnectionString; var cosmosDbEndpoint = "https://localhost:8081"; // This is the default endpoint for local emulator-instances of the Cosmos DB var cosmosDbAuthKey = "<REPLACE WITH YOUR COSMOS DB AUTH KEY>"; var cosmosDbDatabaseId = "eventway-sample-db"; var cosmosDbCollectionId = "projections"; var offerThroughput = 10000; var noOfPartitions = 1000; // Event Repository var eventRepository = new SqlServerEventRepository(eventDatabaseConnectionString); // Projection Metadata Repository var projectionMetadataRepository = new SqlServerProjectionMetadataRepository(projectionMetadataDatabaseConnectionString); // Query Model Repository var queryModelRepository = new DocumentDbQueryModelRepository(cosmosDbDatabaseId, cosmosDbCollectionId, offerThroughput, noOfPartitions, cosmosDbEndpoint, cosmosDbAuthKey); queryModelRepository.Initialize(); // Event Listener var eventListener = new BasicEventListener(); // Aggregate services var aggregateFactory = new DefaultAggregateFactory(); var aggregateRepository = new AggregateRepository(eventRepository, aggregateFactory); var aggregateStore = new AggregateStore(aggregateRepository, eventListener); // PROJECTIONS UserProjection = new UserProjection( eventRepository, eventListener, queryModelRepository, projectionMetadataRepository); // APPLICATION SERVICES UserApplicationService = new UserApplicationService( aggregateStore, queryModelRepository); // Start listening for events UserProjection.Listen(); }
public void Initialize() { // Configuration Parameters var eventDatabaseConnectionString = "Data Source=localhost;Initial Catalog=eventway;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"; var projectionMetadataDatabaseConnectionString = eventDatabaseConnectionString; var cosmosDbEndpoint = "https://localhost:8081"; // This is the default endpoint for local emulator-instances of the Cosmos DB var cosmosDbAuthKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="; var cosmosDbDatabaseId = "eventway"; var cosmosDbCollectionId = "projections"; var offerThroughput = 10000; var noOfPartitions = 1000; // Event Repository var eventRepository = new SqlServerEventRepository(eventDatabaseConnectionString); // Projection Metadata Repository var projectionMetadataRepository = new SqlServerProjectionMetadataRepository(projectionMetadataDatabaseConnectionString); // Query Model Repository var queryModelRepository = new CosmosDbQueryModelRepository(cosmosDbDatabaseId, cosmosDbCollectionId, offerThroughput, noOfPartitions, cosmosDbEndpoint, cosmosDbAuthKey); queryModelRepository.Initialize(); // Event Listener var eventListener = new BasicEventListener(); // Aggregate services var aggregateFactory = new DefaultAggregateFactory(); var aggregateRepository = new AggregateRepository(eventRepository, aggregateFactory); var aggregateStore = new AggregateStore(aggregateRepository, eventListener); // PROJECTIONS UserProjection = new UserProjection( eventRepository, eventListener, queryModelRepository, projectionMetadataRepository); // APPLICATION SERVICES UserApplicationService = new UserApplicationService( aggregateStore, queryModelRepository); // Start listening for events UserProjection.Listen(); }
public void ShouldSuccesfullyCreateAndHydrateProjectionMetadata() { // ARRANGE var repository = new SqlServerProjectionMetadataRepository(_connectionString); var projectionId = CombGuid.Generate(); var projectionType = "TestProjection"; // ACT repository.InitializeProjection(projectionId, projectionType); var hydratedProjectionMetadata = repository.GetByProjectionId(projectionId); // ASSERT Assert.AreEqual(projectionId, hydratedProjectionMetadata.ProjectionId); Assert.AreEqual(0L, hydratedProjectionMetadata.EventOffset); }