示例#1
0
        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);
        }
示例#2
0
        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);
        }