public SQLiteStateEntitySaver( ChannelBatchOperator <StateEntity> .Factory batchOperatorFactory, IClaptrapIdentity identity, ISQLiteDbFactory sqLiteDbFactory, ISQLiteStateStoreOptions options, ISqlTemplateCache sqlTemplateCache, IBatchOperatorContainer batchOperatorContainer) { _sqlTemplateCache = sqlTemplateCache; var locator = options.RelationalStateStoreLocator; var stateTableName = locator.GetStateTableName(identity); _stateTableName = stateTableName; _connectionName = locator.GetConnectionName(identity); var operatorKey = new BatchOperatorKey() .With(nameof(SQLiteStateEntitySaver)) .With(_connectionName) .With(stateTableName); _batchOperator = (IBatchOperator <StateEntity>)batchOperatorContainer.GetOrAdd( operatorKey, () => batchOperatorFactory.Invoke( new BatchOperatorOptions <StateEntity>(options) { DoManyFunc = (entities, cacheData) => SaveManyCoreMany(sqLiteDbFactory, entities, (string[])cacheData ![UpsertSqlKey]),
public MySqlStateEntitySaver( BatchOperator <StateEntity> .Factory batchOperatorFactory, IClaptrapIdentity identity, IDbFactory dbFactory, IRelationalStateStoreLocatorOptions options, ISqlTemplateCache sqlTemplateCache, IBatchOperatorContainer batchOperatorContainer) { var locator = options.RelationalStateStoreLocator; _connectionName = locator.GetConnectionName(identity); _schemaName = locator.GetSchemaName(identity); _tableName = locator.GetStateTableName(identity); _sqlTemplateCache = sqlTemplateCache; var operatorKey = new BatchOperatorKey() .With(nameof(MySqlStateEntitySaver)) .With(_connectionName) .With(_tableName); _batchOperator = (IBatchOperator <StateEntity>)batchOperatorContainer.GetOrAdd( operatorKey, () => batchOperatorFactory.Invoke( new BatchOperatorOptions <StateEntity>(options) { DoManyFunc = (entities, cacheData) => SaveManyCoreMany(dbFactory, entities), })); }
public InsertValuesMySqlEventEntitySaver( ChannelBatchOperator <EventEntity> .Factory batchOperatorFactory, IClaptrapIdentity identity, IDbFactory dbFactory, IMySqlEventStoreOptions options, IBatchOperatorContainer batchOperatorContainer, ISqlTemplateCache sqlTemplateCache) { var locator = options.RelationalEventStoreLocator; _connectionName = locator.GetConnectionName(identity); _schemaName = locator.GetSchemaName(identity); _eventTableName = locator.GetEventTableName(identity); _dbFactory = dbFactory; _sqlTemplateCache = sqlTemplateCache; var operatorKey = new BatchOperatorKey() .With(nameof(InsertValuesMySqlEventEntitySaver)) .With(_connectionName) .With(_schemaName) .With(_eventTableName); _batchOperator = (IBatchOperator <EventEntity>)batchOperatorContainer.GetOrAdd( operatorKey, () => batchOperatorFactory.Invoke( new BatchOperatorOptions <EventEntity>(options) { DoManyFunc = (entities, cacheData) => SaveManyAsync(entities), DoManyFuncName = $"event batch saver for {operatorKey.AsStringKey()}" })); }
public static void RegisterParameters(ISqlTemplateCache sqlTemplateCache, int maxCount) { foreach (var name in RelationalStateEntity.ParameterNames()) { for (var i = 0; i < maxCount; i++) { sqlTemplateCache.AddParameterName(name, i); } } }