Example #1
0
        private static void DropSequences(StorageDriver driver, IEnumerable <Sequence> sequences, ISqlExecutor executor)
        {
            var statements = BreakEvery(sequences
                                        .Select(s => driver.Compile(SqlDdl.Drop(s)).GetCommandText()), 25).ToChainedBuffer();

            executor.ExecuteMany(statements);
        }
Example #2
0
        private static void DropTables(StorageDriver driver, IEnumerable <Table> tables, ISqlExecutor executor)
        {
            var statements = BreakEvery(tables
                                        .Select(t => driver.Compile(SqlDdl.Drop(t)).GetCommandText()), 25);

            executor.ExecuteMany(statements);
        }
Example #3
0
        private void CreateAccessor()
        {
            var nodeConfiguration = new NodeConfiguration();
            var configuration     = DomainConfigurationFactory.Create();
            var descriptor        = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
            var driverFactory     = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
            var storageDriver     = StorageDriver.Create(driverFactory, configuration);
            var nameBuilder       = new NameBuilder(configuration, storageDriver.ProviderInfo);
            var handlerFactory    = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);

            var accessor = new UpgradeServiceAccessor {
                Configuration  = configuration,
                StorageDriver  = storageDriver,
                NameBuilder    = nameBuilder,
                HandlerFactory = handlerFactory
            };

            configuration.Lock();
            var connection = storageDriver.CreateConnection(null);

            connection.Open();
            accessor.MappingResolver = MappingResolver.Create(configuration, nodeConfiguration, storageDriver.GetDefaultSchema(connection));
            if (storageDriver.ProviderInfo.Supports(ProviderFeatures.SingleConnection))
            {
                accessor.RegisterTemporaryResource(connection);
            }
            else
            {
                accessor.RegisterResource(connection);
            }
            accessor.Connection = connection;
            accessor.Connection.Extensions.AddOne(new TypeDelegator(typeof(IProviderExecutor)));

            this.accessor = accessor;
        }
Example #4
0
        private void BuildServices()
        {
            var services      = context.Services;
            var configuration = context.Configuration;

            services.Configuration       = configuration;
            services.IndexFilterCompiler = new PartialIndexFilterCompiler();

            if (context.ParentDomain == null)
            {
                var descriptor     = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
                var driverFactory  = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
                var handlerFactory = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);
                var driver         = StorageDriver.Create(driverFactory, configuration);
                services.HandlerFactory = handlerFactory;
                services.StorageDriver  = driver;
                services.NameBuilder    = new NameBuilder(configuration, driver.ProviderInfo);
            }
            else
            {
                var handlers = context.ParentDomain.Handlers;
                services.HandlerFactory = handlers.Factory;
                services.StorageDriver  = handlers.StorageDriver;
                services.NameBuilder    = handlers.NameBuilder;
            }

            CreateConnection(services);
            context.DefaultSchemaInfo = defaultSchemaInfo = services.StorageDriver.GetDefaultSchema(services.Connection);
            services.MappingResolver  = MappingResolver.Create(configuration, context.NodeConfiguration, defaultSchemaInfo);
            BuildExternalServices(services, configuration);
            services.Lock();

            context.TypeIdProvider = new TypeIdProvider(context);
        }
        // Constructors

        public DomainModelConverter(
            HandlerAccessor handlers,
            ITypeIdProvider typeIdProvider,
            PartialIndexFilterCompiler compiler,
            MappingResolver resolver,
            IFullTextCatalogNameBuilder fulltextCatalogNameBuilder,
            bool isUpgradingStage)
        {
            ArgumentValidator.EnsureArgumentNotNull(handlers, "handlers");
            ArgumentValidator.EnsureArgumentNotNull(typeIdProvider, "typeIdProvider");
            ArgumentValidator.EnsureArgumentNotNull(compiler, "compiler");
            ArgumentValidator.EnsureArgumentNotNull(resolver, "resolver");

            this.handlers                   = handlers;
            this.compiler                   = compiler;
            this.typeIdProvider             = typeIdProvider;
            this.resolver                   = resolver;
            this.isUpgradingStage           = isUpgradingStage;
            this.fulltextCatalogNameBuilder = fulltextCatalogNameBuilder;

            sourceModel       = handlers.Domain.Model;
            configuration     = handlers.Domain.Configuration;
            providerInfo      = handlers.ProviderInfo;
            driver            = handlers.StorageDriver;
            nameBuilder       = handlers.NameBuilder;
            FieldMapping      = new Dictionary <StoredFieldInfo, StoredFieldInfo>();
            StorageModel      = null;
            CurrentModelTypes = new Dictionary <string, StoredTypeInfo>();
        }
Example #6
0
        private static void DropForeignKeys(StorageDriver driver, IEnumerable <Table> tables, ISqlExecutor executor)
        {
            var statements = BreakEvery(tables
                                        .SelectMany(t => t.TableConstraints.OfType <ForeignKey>())
                                        .Select(fk => driver.Compile(SqlDdl.Alter(fk.Table, SqlDdl.DropConstraint(fk))).GetCommandText()), 25);

            executor.ExecuteMany(statements);
        }
Example #7
0
        public QueryBuilder(Session session)
            : base(session)
        {
            var sqlSessionHandler = (SqlSessionHandler)session.Handler.GetRealHandler();

            driver         = session.Domain.Handlers.StorageDriver;
            commandFactory = sqlSessionHandler.CommandFactory;
            queryProvider  = session.Query.Provider;
        }
Example #8
0
        private static Task DropTablesAsync(
            StorageDriver driver, IEnumerable <Table> tables, ISqlExecutor executor, CancellationToken token)
        {
            var statements = tables
                             .Select(t => driver.Compile(SqlDdl.Drop(t)).GetCommandText())
                             .ToList();

            return(executor.ExecuteManyAsync(statements, token));
        }
Example #9
0
        private static Task DropForeignKeysAsync(
            StorageDriver driver, IEnumerable <Table> tables, ISqlExecutor executor, CancellationToken token)
        {
            var statements = tables
                             .SelectMany(t => t.TableConstraints.OfType <ForeignKey>())
                             .Select(fk => driver.Compile(SqlDdl.Alter(fk.Table, SqlDdl.DropConstraint(fk))).GetCommandText())
                             .ToList();

            return(executor.ExecuteManyAsync(statements, token));
        }
        // Constructors

        public UpgradeActionSequenceBuilder(StorageDriver driver, UpgradeActionSequence result, SqlUpgradeStage stage)
        {
            ArgumentValidator.EnsureArgumentNotNull(driver, "driver");
            ArgumentValidator.EnsureArgumentNotNull(result, "result");

            this.driver = driver;

            output = SelectOutput(result, stage);

            Result = result;
            Stage  = stage;
        }
        // Constructors

        public MetadataWriter(StorageDriver driver, MetadataMapping mapping, SqlExtractionTask task, IProviderExecutor executor)
        {
            ArgumentValidator.EnsureArgumentNotNull(driver, "driver");
            ArgumentValidator.EnsureArgumentNotNull(mapping, "mapping");
            ArgumentValidator.EnsureArgumentNotNull(task, "task");
            ArgumentValidator.EnsureArgumentNotNull(executor, "executor");

            this.driver   = driver;
            this.mapping  = mapping;
            this.task     = task;
            this.executor = executor;
        }
Example #12
0
        public void Dispose()
        {
            if (_ORM != null)
            {
                _ORM.Dispose();
                _ORM = null;
            }

            if (_StorageDriver != null)
            {
                _StorageDriver = null;
            }
        }
        // Constructors

        public SqlModelConverter(UpgradeServiceAccessor services, SchemaExtractionResult sourceModel,
                                 IEnumerable <StoredPartialIndexFilterInfo> partialIndexes)
        {
            ArgumentValidator.EnsureArgumentNotNull(services, "handlers");
            ArgumentValidator.EnsureArgumentNotNull(sourceModel, "sourceModel");
            ArgumentValidator.EnsureArgumentNotNull(partialIndexes, "partialIndexes");

            this.sourceModel = sourceModel;

            resolver     = services.MappingResolver;
            providerInfo = services.ProviderInfo;
            driver       = services.StorageDriver;

            partialIndexMap = new PartialIndexInfoMap(resolver, partialIndexes);
        }
Example #14
0
        private void InitializeStorageDriver()
        {
            switch (_Bucket.StorageType)
            {
            case StorageDriverType.Disk:
                if (!Directory.Exists(_Bucket.DiskDirectory))
                {
                    Directory.CreateDirectory(_Bucket.DiskDirectory);
                }
                _StorageDriver = new DiskStorageDriver(_Bucket.DiskDirectory);
                break;

            default:
                throw new ArgumentException("Unknown storage driver type '" + _Bucket.StorageType.ToString() + "' in bucket GUID " + _Bucket.GUID + ".");
            }
        }
Example #15
0
        // Constructors

        public SchemaUpgrader(UpgradeContext context, Session session)
        {
            this.context = context;
            this.session = session;

            services   = context.Services;
            connection = context.Services.Connection;
            executor   = session.Services.Demand <ISqlExecutor>();

            driver = services.StorageDriver;
            if (driver.ProviderInfo.Supports(ProviderFeatures.TransactionalDdl))
            {
                statementProcessor = ExecuteTransactionally;
            }
            else
            {
                statementProcessor = ExecuteNonTransactionally;
            }
        }
    // Constructors

    public MetadataMapping(StorageDriver driver, NameBuilder nameBuilder)
    {
      this.nameBuilder = nameBuilder;

      Assembly = TableOf(typeof (Assembly));
      AssemblyName = ColumnOf((Assembly x) => x.Name);
      AssemblyVersion = ColumnOf((Assembly x) => x.Version);

      Type = TableOf(typeof (Metadata.Type));
      TypeId = ColumnOf((Metadata.Type x) => x.Id);
      TypeName = ColumnOf((Metadata.Type x) => x.Name);

      Extension = TableOf(typeof (Extension));
      ExtensionName = ColumnOf((Extension x) => x.Name);
      ExtensionText = ColumnOf((Extension x) => x.Text);

      StringMapping = driver.GetTypeMapping(WellKnownTypes.String);
      IntMapping = driver.GetTypeMapping(WellKnownTypes.Int32);
    }
Example #17
0
        private async ValueTask BuildServices(bool isAsync, CancellationToken token = default)
        {
            var services      = context.Services;
            var configuration = context.Configuration;

            services.Configuration       = configuration;
            services.IndexFilterCompiler = new PartialIndexFilterCompiler();

            if (context.ParentDomain == null)
            {
                var descriptor     = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
                var driverFactory  = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
                var handlerFactory = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);
                var driver         = isAsync
          ? await StorageDriver.CreateAsync(driverFactory, configuration, token).ConfigureAwait(false)
          : StorageDriver.Create(driverFactory, configuration);

                services.HandlerFactory = handlerFactory;
                services.StorageDriver  = driver;
                services.NameBuilder    = new NameBuilder(configuration, driver.ProviderInfo);
            }
            else
            {
                var handlers = context.ParentDomain.Handlers;
                services.HandlerFactory = handlers.Factory;
                services.StorageDriver  = handlers.StorageDriver;
                services.NameBuilder    = handlers.NameBuilder;
            }

            await CreateConnection(services, isAsync, token).ConfigureAwait(false);

            context.DefaultSchemaInfo = defaultSchemaInfo = isAsync
        ? await services.StorageDriver.GetDefaultSchemaAsync(services.Connection, token).ConfigureAwait(false)
        : services.StorageDriver.GetDefaultSchema(services.Connection);

            services.MappingResolver = MappingResolver.Create(configuration, context.NodeConfiguration, defaultSchemaInfo);
            BuildExternalServices(services, configuration);
            services.Lock();

            context.TypeIdProvider = new TypeIdProvider(context);
        }
        internal DomainExtractedModelBuilder(UpgradeServiceAccessor services, StorageModel model, bool makeSharedFinally)
        {
            ArgumentValidator.EnsureArgumentNotNull(services, "services");
            ArgumentValidator.EnsureArgumentNotNull(model, "model");
            this.model             = model;
            this.mappingResolver   = services.MappingResolver;
            this.provider          = services.ProviderInfo;
            this.driver            = services.StorageDriver;
            this.makeSharedFinally = makeSharedFinally;

            this.targetResult = new SchemaExtractionResult();

            if (provider.Supports(ProviderFeatures.Collations))
            {
                var collation = services.Configuration.Collation;
                if (!string.IsNullOrEmpty(collation))
                {
                    collationName = collation;
                }
            }
        }
        private void BuildServices(UpgradeContext context)
        {
            var services      = context.Services;
            var configuration = context.Configuration;

            services.Configuration       = configuration;
            services.IndexFilterCompiler = new PartialIndexFilterCompiler();

            var descriptor     = ProviderDescriptor.Get(configuration.ConnectionInfo.Provider);
            var driverFactory  = (SqlDriverFactory)Activator.CreateInstance(descriptor.DriverFactory);
            var handlerFactory = (HandlerFactory)Activator.CreateInstance(descriptor.HandlerFactory);
            var driver         = StorageDriver.Create(driverFactory, configuration);

            services.HandlerFactory = handlerFactory;
            services.StorageDriver  = driver;
            services.NameBuilder    = new NameBuilder(configuration, driver.ProviderInfo);
            BuildExternalServices(services, context);

            services.Lock();

            context.TypeIdProvider = new TypeIdProvider(context);
        }
        // Constructors

        internal QueryCommand(StorageDriver driver, Session session, DbCommand realCommand)
        {
            this.driver      = driver;
            this.session     = session;
            this.realCommand = realCommand;
        }