public async Task EnsureSchemaInitialized() { // `receptionDelay` should include transaction timeout + clock drift. Otherwise, it may skip events during reception. var receptionDelay = TimeSpan.FromMilliseconds(3000); var eventStore = Wireup.Init() .UsingSqlPersistence(ConnectionString) .WithDialect(new PostgreSqlDialect()) .InitializeStorageEngine() .UsingJsonSerialization() .Build(); eventStore.Advanced.Purge(); _eventStore = eventStore; Outbox = new NEventStoreOutbox(eventStore, receptionDelay); var db = new TestDbContextWithOutbox(ConnectionString, Outbox); db.Database.CreateIfNotExists(); // Warm-up for (int i = 0; i < 2; i++) { using var warmUpDb = NewDbContext(); warmUpDb.Users.Add(new UserAggregate(Guid.NewGuid(), "")); await warmUpDb.SaveChangesAsync(); } }
public async Task InitializeAndWarmUp() { _outbox = new NEventStoreOutbox(Wireup.Init() .UsingSqlPersistence(ConnectionString) .WithDialect(new PostgreSqlDialect()) .InitializeStorageEngine() .UsingJsonSerialization() .Build(), TimeSpan.Zero); var db = new TestDbContextWithOutbox(ConnectionString, _outbox); db.Database.CreateIfNotExists(); await WarmUp(); }