private Task <Version> AutoUpgdrateToNewVersionAsync(SyncContext context, Version newVersion, DbConnection connection, DbTransaction transaction, CancellationToken cancellationToken, IProgress <ProgressArgs> progress) { var message = $"Upgrade to {newVersion}:"; var args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); return(Task.FromResult(newVersion)); }
private async Task <Version> UpgdrateTo601Async(SyncContext context, SyncSet schema, DbConnection connection, DbTransaction transaction, CancellationToken cancellationToken, IProgress <ProgressArgs> progress) { var newVersion = new Version(0, 6, 1); // Sorting tables based on dependencies between them var schemaTables = schema.Tables .SortByDependencies(tab => tab.GetRelations() .Select(r => r.GetParentTable())); var message = $"Upgrade to {newVersion}:"; var args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); foreach (var schemaTable in schemaTables) { var tableBuilder = this.GetTableBuilder(schemaTable, this.Setup); // Upgrade Select Initial Changes var exists = await InternalExistsStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.SelectInitializedChanges, connection, transaction, cancellationToken, progress).ConfigureAwait(false); if (exists) { await InternalDropStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.SelectInitializedChanges, connection, transaction, cancellationToken, progress).ConfigureAwait(false); } await InternalCreateStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.SelectInitializedChanges, connection, transaction, cancellationToken, progress).ConfigureAwait(false); args = new UpgradeProgressArgs(context, $"SelectInitializedChanges stored procedure for table {tableBuilder.TableDescription.GetFullName()} updated", newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); // Upgrade Select Initial Changes With Filter if (tableBuilder.TableDescription.GetFilter() != null) { var existsWithFilter = await InternalExistsStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.SelectInitializedChangesWithFilters, connection, transaction, cancellationToken, progress).ConfigureAwait(false); if (existsWithFilter) { await InternalDropStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.SelectInitializedChangesWithFilters, connection, transaction, cancellationToken, progress).ConfigureAwait(false); } await InternalCreateStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.SelectInitializedChangesWithFilters, connection, transaction, cancellationToken, progress).ConfigureAwait(false); args = new UpgradeProgressArgs(context, $"SelectInitializedChangesWithFilters stored procedure for table {tableBuilder.TableDescription.GetFullName()} updated", newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); } } message = "Upgrade to 0.6.1 done."; args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); return(newVersion); }
private ValueTask <Version> UpgdrateTo600Async(SyncContext context, SyncSet schema, SyncSetup setup, DbConnection connection, DbTransaction transaction, CancellationToken cancellationToken, IProgress <ProgressArgs> progress) { var newVersion = new Version(0, 6, 0); var message = $"Upgrade to {newVersion}:"; var args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); return(new ValueTask <Version>(newVersion)); //Task.FromResult(newVersion); }
private async Task <Version> UpgdrateTo602Async(SyncContext context, SyncSet schema, SyncSetup setup, DbConnection connection, DbTransaction transaction, CancellationToken cancellationToken, IProgress <ProgressArgs> progress) { var newVersion = new Version(0, 6, 2); var message = $"Upgrade to {newVersion}:"; var args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); // Update the "Update trigger" for all tables // Sorting tables based on dependencies between them var schemaTables = schema.Tables .SortByDependencies(tab => tab.GetRelations() .Select(r => r.GetParentTable())); foreach (var schemaTable in schemaTables) { var tableBuilder = this.GetTableBuilder(schemaTable, setup); // Upgrade Select Initial Changes var exists = await InternalExistsTriggerAsync(context, tableBuilder, DbTriggerType.Update, connection, transaction, cancellationToken, progress).ConfigureAwait(false); if (exists) { await InternalDropTriggerAsync(context, tableBuilder, DbTriggerType.Update, connection, transaction, cancellationToken, progress).ConfigureAwait(false); } await InternalCreateTriggerAsync(context, tableBuilder, DbTriggerType.Update, connection, transaction, cancellationToken, progress).ConfigureAwait(false); args = new UpgradeProgressArgs(context, $"Update Trigger for table {tableBuilder.TableDescription.GetFullName()} updated", newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); } message = $"Upgrade to {newVersion} done."; args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); return(newVersion); }
private async Task <Version> UpgdrateTo700Async(SyncContext context, SyncSet schema, SyncSetup setup, DbConnection connection, DbTransaction transaction, CancellationToken cancellationToken, IProgress <ProgressArgs> progress) { var newVersion = new Version(0, 7, 0); // Sorting tables based on dependencies between them var schemaTables = schema.Tables .SortByDependencies(tab => tab.GetRelations() .Select(r => r.GetParentTable())); var message = $"Upgrade to {newVersion}:"; var args = new UpgradeProgressArgs(context, message, newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); foreach (var schemaTable in schemaTables) { var tableBuilder = this.GetTableBuilder(schemaTable, setup); // Upgrade Reset stored procedure var exists = await InternalExistsStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.Reset, connection, transaction, cancellationToken, progress).ConfigureAwait(false); if (exists) { await InternalDropStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.Reset, connection, transaction, cancellationToken, progress).ConfigureAwait(false); } await InternalCreateStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.Reset, connection, transaction, cancellationToken, progress).ConfigureAwait(false); args = new UpgradeProgressArgs(context, $"Reset stored procedure for table {tableBuilder.TableDescription.GetFullName()} updated", newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); // Upgrade Update stored procedure var existsUpdateSP = await InternalExistsStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.UpdateRow, connection, transaction, cancellationToken, progress).ConfigureAwait(false); if (existsUpdateSP) { await InternalDropStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.UpdateRow, connection, transaction, cancellationToken, progress).ConfigureAwait(false); } await InternalCreateStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.UpdateRow, connection, transaction, cancellationToken, progress).ConfigureAwait(false); args = new UpgradeProgressArgs(context, $"Update stored procedure for table {tableBuilder.TableDescription.GetFullName()} updated", newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); // Upgrade Bulk Update stored procedure if (this.Provider.SupportBulkOperations) { var existsBulkUpdateSP = await InternalExistsStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.BulkUpdateRows, connection, transaction, cancellationToken, progress).ConfigureAwait(false); if (existsBulkUpdateSP) { await InternalDropStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.BulkUpdateRows, connection, transaction, cancellationToken, progress).ConfigureAwait(false); } await InternalCreateStoredProcedureAsync(context, tableBuilder, DbStoredProcedureType.BulkUpdateRows, connection, transaction, cancellationToken, progress).ConfigureAwait(false); args = new UpgradeProgressArgs(context, $"Bulk Update stored procedure for table {tableBuilder.TableDescription.GetFullName()} updated", newVersion, connection, transaction); this.ReportProgress(context, progress, args, connection, transaction); } } return(newVersion); }