private async Task CopyStoredProcedures()

in CosmosClone/CosmosCloneCommon/Migrator/CodeMigrator.cs [168:207]


        private async Task CopyStoredProcedures()
        {
            try
            {
                logger.LogInfo("-----------------------------------------------");
                logger.LogInfo("Begin CopyStoredProcedures");
                FeedOptions feedOptions = new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true };
                var requestOptions = new RequestOptions { OfferEnableRUPerMinuteThroughput = true };
                var sourceResponse = await sourceClient.ReadStoredProcedureFeedAsync(UriFactory.CreateDocumentCollectionUri(sourceDatabaseName, sourceCollectionName), feedOptions);
                var splist = sourceResponse.ToList<StoredProcedure>();
                logger.LogInfo($"StoredProcedures retrieved from source {splist.Count}");
                //summary.totalRecordsRetrieved += splist.Count;

                var targetResponse = await targetClient.ReadStoredProcedureFeedAsync(UriFactory.CreateDocumentCollectionUri(TargetDatabaseName, TargetCollectionName), feedOptions);
                var targetSPList = targetResponse.ToList();
                logger.LogInfo($"StoredProcedures already retrieved in target {targetSPList.Count}");
                var targetSPIds = new HashSet<string>();
                targetSPList.ForEach(sp => targetSPIds.Add(sp.Id));

                foreach (var sp in splist)
                {
                    if (targetSPIds.Contains(sp.Id))
                    {
                        logger.LogInfo($"StoredProcedure {sp.Id} already Exists in destination DB");
                        continue;
                    }
                    logger.LogInfo($"Create StoredProcedure {sp.Id} start");
                    await targetClient.CreateStoredProcedureAsync(UriFactory.CreateDocumentCollectionUri(TargetDatabaseName, TargetCollectionName), sp, requestOptions);
                    logger.LogInfo($"Create StoredProcedure {sp.Id} complete");
                    //summary.totalRecordsSent++;
                }
                logger.LogInfo("CopyStoredProcedures end.");
            }
            catch (Exception ex)
            {
                logger.LogInfo("Exception while CopyStoredProcedures");
                logger.LogError(ex);
                logger.LogInfo("");
            }
        }