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 MySqlEventEntitySaver( BatchOperator <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); _sqlTemplateCache = sqlTemplateCache; var operatorKey = new BatchOperatorKey() .With(nameof(MySqlEventEntitySaver)) .With(_connectionName) .With(_schemaName) .With(_eventTableName); _batchOperator = (IBatchOperator <EventEntity>)batchOperatorContainer.GetOrAdd( operatorKey, () => batchOperatorFactory.Invoke( new BatchOperatorOptions <EventEntity>(options) { DoManyFunc = (entities, cacheData) => SaveManyCoreMany(dbFactory, entities) })); }