private async Task CopyUDFs()

in CosmosClone/CosmosCloneCommon/Migrator/CodeMigrator.cs [127:166]


        private async Task CopyUDFs()
        {
            try
            {
                logger.LogInfo("-----------------------------------------------");
                logger.LogInfo("Begin CopyUDFs");
                FeedOptions feedOptions = new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true };
                var udfFeedResponse = await sourceClient.ReadUserDefinedFunctionFeedAsync(UriFactory.CreateDocumentCollectionUri(sourceDatabaseName, sourceCollectionName), feedOptions);
                var udfList = udfFeedResponse.ToList<UserDefinedFunction>();
                logger.LogInfo($"UDFs retrieved from source {udfList.Count}");
                //summary.totalRecordsRetrieved += udfList.Count;

                var targetResponse = await targetClient.ReadUserDefinedFunctionFeedAsync(UriFactory.CreateDocumentCollectionUri(TargetDatabaseName, TargetCollectionName), feedOptions);
                var targetUdfList = targetResponse.ToList();
                logger.LogInfo($"Triggers already in target {targetUdfList.Count}");
                var targetUDFIds = new HashSet<string>();
                targetUdfList.ForEach(sp => targetUDFIds.Add(sp.Id));

                var requestOptions = new RequestOptions { OfferEnableRUPerMinuteThroughput = true };
                foreach (var udf in udfList)
                {
                    if (targetUDFIds.Contains(udf.Id))
                    {
                        logger.LogInfo($"UDF {udf.Id} already Exists in destination DB");
                        continue;
                    }
                    logger.LogInfo($"Create Trigger {udf.Id} start");
                    await targetClient.CreateUserDefinedFunctionAsync(UriFactory.CreateDocumentCollectionUri(TargetDatabaseName, TargetCollectionName), udf, requestOptions);
                    logger.LogInfo($"Create Trigger {udf.Id} complete");
                    //summary.totalRecordsSent++;
                }
                logger.LogInfo("CopyUDFs end.");
                logger.LogInfo("");
            }
            catch (Exception ex)
            {
                logger.LogInfo("Exception while CopyUDFs");
                logger.LogError(ex);
            }
        }