Example #1
0
        private IMigrationBatch FetchMigrationsTo(ContainerConfiguration containerConfiguration, long timestamp)
        {
            IVersioning versioning = InitializeVersioning(containerConfiguration);
            IDictionary <string, IMigrationTimestampProvider> timestampProviders = InitializeTimestampProviders(containerConfiguration);
            var importer      = new MigrationImporter(containerConfiguration, timestampProviders);
            var batchPreparer = new MigrationBatchPreparer(importer, versioning, Configuration);

            return(batchPreparer.Prepare(timestamp, _options));
        }
Example #2
0
        private void ApplyCustomBootstrapping(Versioning versioning, ContainerConfiguration containerConfiguration)
        {
            var timestampProviders = InitializeTimestampProviders(containerConfiguration);

            using (IDbConnection connection = Configuration.OpenConnection())
            {
                using (IDbTransaction transaction = Configuration.ConnectionInfo.SupportsTransactions ? connection.BeginTransaction() : null)
                {
                    _customBootstrapper.BeginBootstrapping(connection, transaction);

                    // bootstrapping is a "global" operation; therefore we need to call IsContained on *all* migrations
                    var importer      = new MigrationImporter(containerConfiguration, timestampProviders);
                    var allMigrations = importer.ImportMigrations()
                                        .Select(m => m.Metadata);
                    var migrationsContainedAtBootstrapping = allMigrations.Where(m => _customBootstrapper.IsContained(m));
                    versioning.UpdateToInclude(migrationsContainedAtBootstrapping, connection, transaction);
                    _customBootstrapper.EndBootstrapping(connection, transaction);
                    if (transaction != null)
                    {
                        transaction.Commit();
                    }
                }
            }
        }