Ejemplo n.º 1
0
        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]),
Ejemplo n.º 2
0
        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),
            }));
        }
Ejemplo n.º 3
0
        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()}"
            }));
        }
Ejemplo n.º 4
0
 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);
         }
     }
 }