private async Task CopyTriggers()

in CosmosClone/CosmosCloneCommon/Migrator/DocumentMigrator.cs [293:332]


        private async Task CopyTriggers()
        {
            try
            {
                logger.LogInfo("-----------------------------------------------");
                logger.LogInfo("Begin CopyTriggers");
                FeedOptions feedOptions = new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true };
                var requestOptions = new RequestOptions { OfferEnableRUPerMinuteThroughput = true };
                var triggerFeedResponse = await sourceClient.ReadTriggerFeedAsync(UriFactory.CreateDocumentCollectionUri(CloneSettings.SourceSettings.DatabaseName, CloneSettings.SourceSettings.CollectionName), feedOptions);
                var triggerList = triggerFeedResponse.ToList();
                logger.LogInfo($"Triggers retrieved from source {triggerList.Count}");
                //summary.totalRecordsRetrieved += triggerList.Count;

                var targetResponse = await targetClient.ReadTriggerFeedAsync(UriFactory.CreateDocumentCollectionUri(CloneSettings.TargetSettings.DatabaseName, CloneSettings.TargetSettings.CollectionName), feedOptions);
                var targetTriggerList = targetResponse.ToList();
                logger.LogInfo($"Triggers already in target {targetTriggerList.Count}");
                var targetTriggerIds = new HashSet<string>();
                targetTriggerList.ForEach(sp => targetTriggerIds.Add(sp.Id));

                foreach (var trigger in triggerList)
                {
                    if (targetTriggerIds.Contains(trigger.Id))
                    {
                        logger.LogInfo($"Trigger {trigger.Id} already Exists in destination DB");
                        continue;
                    }
                    logger.LogInfo($"Create Trigger {trigger.Id} start");
                    await targetClient.CreateTriggerAsync(UriFactory.CreateDocumentCollectionUri(CloneSettings.TargetSettings.DatabaseName, CloneSettings.TargetSettings.CollectionName), trigger, requestOptions);
                    logger.LogInfo($"Create Trigger {trigger.Id} complete");
                    //summary.totalRecordsSent++;
                }
                logger.LogInfo("Copy Triggers end.");
                logger.LogInfo("");
            }
            catch (Exception ex)
            {
                logger.LogInfo("Exception while CopyTriggers");
                logger.LogError(ex);
            }
        }