public async Task <IStreamStore> GetStreamStore(string schema) { var settings = new MsSqlStreamStoreSettings(ConnectionString) { Schema = schema, GetUtcNow = () => GetUtcNow() }; var store = new MsSqlStreamStore(settings); await store.CreateSchema(); return(store); }
public async Task <MsSqlStreamStore> GetStreamStore_v1Schema() { await CreateDatabase(); var settings = new MsSqlStreamStoreSettings(ConnectionString) { Schema = _schema, GetUtcNow = () => GetUtcNow() }; var store = new MsSqlStreamStore(settings); await store.CreateSchema_v1_ForTests(); return(store); }
public override async Task <IStreamStore> GetStreamStore() { await CreateDatabase(); var settings = new MsSqlStreamStoreSettings(ConnectionString) { Schema = _schema, GetUtcNow = () => GetUtcNow() }; var store = new MsSqlStreamStore(settings); await store.DropAll(ignoreErrors : true); await store.CreateSchema(); return(store); }
public MsSqlStreamStoreFixture( string schema, DockerMsSqlServerDatabase dockerInstance, string databaseName, Action onDispose) { _onDispose = onDispose; DatabaseName = databaseName; var connectionStringBuilder = dockerInstance.CreateConnectionStringBuilder(); connectionStringBuilder.MultipleActiveResultSets = true; connectionStringBuilder.InitialCatalog = DatabaseName; ConnectionString = connectionStringBuilder.ToString(); _settings = new MsSqlStreamStoreSettings(ConnectionString) { Schema = schema, GetUtcNow = () => GetUtcNow(), }; }
private MsSqlStreamStoreFixture( string schema, bool deleteDatabaseOnDispose = true, bool createSchema = true) { _schema = schema; _deleteDatabaseOnDispose = deleteDatabaseOnDispose; _createSchema = createSchema; _databaseName = $"sss-v3-{Guid.NewGuid():n}"; _databaseInstance = new DockerMsSqlServerDatabase(_databaseName); var connectionStringBuilder = _databaseInstance.CreateConnectionStringBuilder(); connectionStringBuilder.MultipleActiveResultSets = true; connectionStringBuilder.InitialCatalog = _databaseName; ConnectionString = connectionStringBuilder.ToString(); _settings = new MsSqlStreamStoreSettings(ConnectionString) { Schema = _schema, GetUtcNow = () => GetUtcNow(), }; }
private async Task Init(bool createV1Schema = false) { await _databaseInstance.CreateDatabase(); var settings = new MsSqlStreamStoreSettings(ConnectionString) { Schema = _schema, GetUtcNow = () => GetUtcNow(), }; Store = new MsSqlStreamStore(settings); if (_createSchema) { if (createV1Schema) { await Store.CreateSchema_v1_ForTests(); } else { await Store.CreateSchema(); } } }
/// <summary> /// Initializes a new instance of <see cref="MsSqlStreamStore"/> /// </summary> /// <param name="settings">A settings class to configure this instance.</param> public MsSqlStreamStore(MsSqlStreamStoreSettings settings) : base(settings.MetadataMaxAgeCacheExpire, settings.MetadataMaxAgeCacheMaxSize, settings.GetUtcNow, settings.LogName) { Ensure.That(settings, nameof(settings)).IsNotNull(); _createConnection = () => settings.ConnectionFactory(settings.ConnectionString); _streamStoreNotifier = new Lazy <IStreamStoreNotifier>(() => { if (settings.CreateStreamStoreNotifier == null) { throw new InvalidOperationException( "Cannot create notifier because supplied createStreamStoreNotifier was null"); } return(settings.CreateStreamStoreNotifier.Invoke(this)); }); _scripts = new Scripts(settings.Schema); var sqlMetaData = new List <SqlMetaData> { new SqlMetaData("StreamVersion", SqlDbType.Int, true, false, SortOrder.Unspecified, -1), new SqlMetaData("Id", SqlDbType.UniqueIdentifier), new SqlMetaData("Created", SqlDbType.DateTime, true, false, SortOrder.Unspecified, -1), new SqlMetaData("Type", SqlDbType.NVarChar, 128), new SqlMetaData("JsonData", SqlDbType.NVarChar, SqlMetaData.Max), new SqlMetaData("JsonMetadata", SqlDbType.NVarChar, SqlMetaData.Max) }; if (settings.GetUtcNow != null) { // Created column value will be client supplied so should prevent using of the column default function sqlMetaData[2] = new SqlMetaData("Created", SqlDbType.DateTime); } _appendToStreamSqlMetadata = sqlMetaData.ToArray(); _commandTimeout = settings.CommandTimeout; }