public static async ValueTask PerformManualMutationAndGetResult()

in src/Epam.GraphQL/Savers/DbContextSaver.cs [26:66]


        public static async ValueTask<object?> PerformManualMutationAndGetResult<TExecutionContext>(
            SubmitInputTypeRegistry<TExecutionContext> submitInputTypeRegistry,
            IEnumerable<object> entities,
            Mutation<TExecutionContext> mutation,
            IResolveFieldContext context,
            ResolveOptions options)
        {
            var executionContext = (GraphQLContext<TExecutionContext>?)context.UserContext["ctx"];
            Guards.AssertIfNull(executionContext);
            var profiler = executionContext.Profiler;

            using (profiler.Step(nameof(PerformManualMutationAndGetResult)))
            {
                var results = await SaveChangesAndReload(submitInputTypeRegistry, entities, context, options).ConfigureAwait(false);

                var afterSaveEntities = await mutation.DoAfterSave(
                    context,
                    results
                        .SelectMany(result => result.ProcessedItems)
                        .Where(item => item.Payload != null)
                        .Select(item => item.Payload!)).ConfigureAwait(false);

                var afterSaveResults = afterSaveEntities.Any()
                    ? await SaveChangesAndReload(
                        submitInputTypeRegistry,
                        afterSaveEntities,
                        context,
                        DefaultOptions).ConfigureAwait(false)
                    : Enumerable.Empty<ISaveResult<TExecutionContext>>();

                using (profiler.Step("Prepare output"))
                {
                    results = results
                        .Concat(afterSaveResults)
                        .GroupBy(r => r.EntityType)
                        .Select(group => group.Aggregate((first, second) => first.Merge(second)));

                    return mutation.CreateSubmitOutput(ConvertItems(results));
                }
            }
        }