Пример #1
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),
            }));
        }
Пример #2
0
        public MySqlStateStoreMigration(
            ILogger <MySqlStateStoreMigration> logger,
            DbUpMigration.Factory factory,
            IClaptrapIdentity identity,
            IDbFactory dbFactory,
            IStorageMigrationContainer storageMigrationContainer,
            IRelationalStateStoreLocatorOptions options)
        {
            var locator          = options.RelationalStateStoreLocator;
            var connectionName   = locator.GetConnectionName(identity);
            var schemaName       = locator.GetSchemaName(identity);
            var stateTableName   = locator.GetStateTableName(identity);
            var migrationOptions = new DbUpMigrationOptions(
                new[] { Assembly.GetExecutingAssembly() },
                fileName => fileName.EndsWith("-state.sql"),
                new Dictionary <string, string>
            {
                { "SchemaName", schemaName },
                { "StateTableName", stateTableName },
            },
                () =>
                (DeployChanges
                 .To.MySqlDatabase(dbFactory.GetConnectionString(connectionName)), null));

            var migration    = factory.Invoke(logger, migrationOptions);
            var migrationKey =
                $"{nameof(MySqlStateStoreMigration)}_{connectionName}_{schemaName}_{stateTableName}";

            _migrationTask = storageMigrationContainer.CreateTask(migrationKey, migration);
        }
Пример #3
0
        public PostgreSQLStateEntityLoader(
            IClaptrapIdentity identity,
            IDbFactory dbFactory,
            IRelationalStateStoreLocatorOptions options)
        {
            _identity  = identity;
            _dbFactory = dbFactory;
            var locator = options.RelationalStateStoreLocator;

            var(connectionName, schemaName, stateTableName) = locator.GetNames(identity);
            _connectionName = connectionName;
            _selectSql      =
                $"SELECT * FROM {schemaName}.{stateTableName} WHERE claptrap_type_code=@ClaptrapTypeCode AND claptrap_id=@ClaptrapId LIMIT 1";
        }
        public MySqlStateEntityLoader(
            IClaptrapIdentity identity,
            IDbFactory dbFactory,
            IRelationalStateStoreLocatorOptions options)
        {
            var locator = options.RelationalStateStoreLocator;

            _connectionName = locator.GetConnectionName(identity);
            var schemaName = locator.GetSchemaName(identity);
            var tableName  = locator.GetStateTableName(identity);

            _identity  = identity;
            _dbFactory = dbFactory;
            _selectSql =
                $"SELECT * FROM {schemaName}.{tableName} WHERE claptrap_type_code=@ClaptrapTypeCode AND claptrap_id=@ClaptrapId LIMIT 1";
        }