Пример #1
0
 internal static Task CompleteMigrationAsync(
     Func <RepositoryMigrationAsync, Task> upsertMigration,
     RepositoryMigrationAsync migrationToComplete)
 {
     migrationToComplete.CompleteMigration();
     return(upsertMigration(migrationToComplete));
 }
Пример #2
0
        private static async Task ApplyMigrationAsync(
            IRepositoryToMigrate repositoryToMigrate,
            IRepositoryAsync repository,
            RepositoryMigrationAsync startedMigration)
        {
            try
            {
                await MigrationHelpersAsync.StartMigrationAsync(
                    repository.AddMigrationAsync,
                    startedMigration).ConfigureAwait(false);

                await startedMigration.Migration.UpdateAsync(
                    repository,
                    repositoryToMigrate).ConfigureAwait(false);

                await MigrationHelpersAsync.CompleteMigrationAsync(
                    repository.UpsertMigrationAsync,
                    startedMigration).ConfigureAwait(false);
            }
            catch (Exception exception)
            {
                await OnUpgradeExceptionAsync(
                    repositoryToMigrate,
                    repository,
                    startedMigration,
                    exception).ConfigureAwait(false);
            }
        }
Пример #3
0
        private static async Task OnUpgradeExceptionAsync(
            IRepositoryToMigrate repositoryToMigrate,
            IRepositoryAsync repository,
            RepositoryMigrationAsync repositoryMigration,
            Exception exception)
        {
            try
            {
                await repositoryMigration.Migration.RollbackAsync(
                    repository,
                    repositoryToMigrate).ConfigureAwait(false);

                await MigrationHelpersAsync.FailMigrationAsync(
                    repository.DeleteMigrationAsync,
                    repositoryMigration).ConfigureAwait(false);

                throw new MigrationException(
                          exception,
                          repositoryMigration.Version);
            }
            catch (Exception rollbackEx)
            {
                await OnRollbackExceptionAsync(
                    repositoryMigration.Migration,
                    rollbackEx).ConfigureAwait(false);
            }
        }
Пример #4
0
 internal static Task FailMigrationAsync(
     Func <RepositoryMigrationAsync, Task> deleteMigration,
     RepositoryMigrationAsync migrationToComplete)
 {
     return(deleteMigration(migrationToComplete));
 }
Пример #5
0
 internal static Task StartMigrationAsync(
     Func <RepositoryMigrationAsync, Task> addMigration,
     RepositoryMigrationAsync migrationToStart)
 {
     return(addMigration(migrationToStart));
 }