public override async Task Execute() { var state = GetLastMigrationState(); var migratedDocumentsOrAttachments = false; if (OperateOnTypes.HasFlag(DatabaseItemType.Documents)) { await MigrateDocuments(state?.LastDocsEtag ?? LastEtagsInfo.EtagEmpty); migratedDocumentsOrAttachments = true; } if (OperateOnTypes.HasFlag(DatabaseItemType.LegacyAttachments)) { await MigrateAttachments(state?.LastAttachmentsEtag ?? LastEtagsInfo.EtagEmpty); migratedDocumentsOrAttachments = true; } if (migratedDocumentsOrAttachments) { Result.Documents.Processed = true; OnProgress.Invoke(Result.Progress); await SaveLastOperationState(GenerateLastEtagsInfo()); } if (OperateOnTypes.HasFlag(DatabaseItemType.Indexes)) { await MigrateIndexes(); } DatabaseSmuggler.EnsureProcessed(Result); }
private ItemType GenerateOperateOnTypes() { var itemType = ItemType.None; if (OperateOnTypes.HasFlag(DatabaseItemType.Documents)) { itemType |= ItemType.Documents; } if (OperateOnTypes.HasFlag(DatabaseItemType.LegacyAttachments)) { itemType |= ItemType.Attachments; } if (OperateOnTypes.HasFlag(DatabaseItemType.Indexes)) { itemType |= ItemType.Indexes; } if (RemoveAnalyzers) { itemType |= ItemType.RemoveAnalyzers; } return(itemType); }