From 1fe9114bacadae2c6257da6ca1363e835ff0928d Mon Sep 17 00:00:00 2001 From: Dejmenek Date: Sat, 12 Sep 2026 12:58:03 +0200 Subject: [PATCH 1/4] refactor: migrate BracketMutations from legacy UseProjection to QueryContext --- TournamentAPI/Brackets/BracketMutations.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/TournamentAPI/Brackets/BracketMutations.cs b/TournamentAPI/Brackets/BracketMutations.cs index c2e1d15..bd59232 100644 --- a/TournamentAPI/Brackets/BracketMutations.cs +++ b/TournamentAPI/Brackets/BracketMutations.cs @@ -1,3 +1,4 @@ +using GreenDonut.Data; using HotChocolate.Authorization; using HotChocolate.Resolvers; using Microsoft.EntityFrameworkCore; @@ -13,10 +14,10 @@ namespace TournamentAPI.Brackets; public static partial class BracketMutations { [UseFirstOrDefault] - [UseProjection] [Authorize] public static async Task?> GenerateBracket( int tournamentId, + QueryContext query, ClaimsPrincipal userClaims, ApplicationDbContext context, IResolverContext resolverContext, @@ -49,15 +50,15 @@ public static partial class BracketMutations return null; } - return context.Brackets.Where(b => b.Id == bracket.Id); + return context.Brackets.AsNoTracking().Where(b => b.Id == bracket.Id).With(query); } [UseFirstOrDefault] - [UseProjection] [Authorize] public static async Task?> UpdateRound( int bracketId, int roundNumber, + QueryContext query, ClaimsPrincipal userClaims, ApplicationDbContext context, IResolverContext resolverContext, @@ -97,6 +98,6 @@ public static partial class BracketMutations return null; } - return context.Brackets.Where(b => b.Id == bracket.Id); + return context.Brackets.AsNoTracking().Where(b => b.Id == bracket.Id).With(query); } } From 4b35a4aaf7352b02e0a9084d17d76270cacd9d33 Mon Sep 17 00:00:00 2001 From: Dejmenek Date: Sat, 12 Sep 2026 13:08:17 +0200 Subject: [PATCH 2/4] refactor: migrate ParticipantMutations from legacy UseProjection to QueryContext --- TournamentAPI/Participants/ParticipantMutations.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TournamentAPI/Participants/ParticipantMutations.cs b/TournamentAPI/Participants/ParticipantMutations.cs index 612a60f..546e1d7 100644 --- a/TournamentAPI/Participants/ParticipantMutations.cs +++ b/TournamentAPI/Participants/ParticipantMutations.cs @@ -1,3 +1,4 @@ +using GreenDonut.Data; using HotChocolate.Authorization; using HotChocolate.Resolvers; using Microsoft.EntityFrameworkCore; @@ -14,10 +15,10 @@ namespace TournamentAPI.Participants; public static partial class ParticipantMutations { [UseFirstOrDefault] - [UseProjection] [Authorize] public static async Task?> AddParticipant( AddParticipantInput input, + QueryContext query, ClaimsPrincipal userClaims, ApplicationDbContext context, IResolverContext resolverContext, @@ -64,7 +65,7 @@ public static partial class ParticipantMutations try { await context.SaveChangesAsync(token); - return context.Tournaments.AsNoTracking().Where(t => t.Id == input.TournamentId); + return context.Tournaments.AsNoTracking().Where(t => t.Id == input.TournamentId).With(query); } catch (DbUpdateException ex) when (ex.IsUniqueConstraintViolation(TournamentParticipant.SlotNumberUniqueIndexName)) { From c03656c68f7515c613f3c9d4e079fc7b32904321 Mon Sep 17 00:00:00 2001 From: Dejmenek Date: Sat, 12 Sep 2026 13:08:48 +0200 Subject: [PATCH 3/4] refactor: migrate TournamentMutations from legacy UseProjection to QueryContext --- TournamentAPI/Tournaments/TournamentMutations.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/TournamentAPI/Tournaments/TournamentMutations.cs b/TournamentAPI/Tournaments/TournamentMutations.cs index dc4951d..e2e5e4d 100644 --- a/TournamentAPI/Tournaments/TournamentMutations.cs +++ b/TournamentAPI/Tournaments/TournamentMutations.cs @@ -1,3 +1,4 @@ +using GreenDonut.Data; using HotChocolate.Authorization; using HotChocolate.Resolvers; using Microsoft.EntityFrameworkCore; @@ -69,10 +70,10 @@ public static partial class TournamentMutations } [UseFirstOrDefault] - [UseProjection] [Authorize] public static async Task?> CreateTournament( CreateTournamentInput input, + QueryContext query, ClaimsPrincipal userClaims, ApplicationDbContext context, IResolverContext resolverContext, @@ -106,14 +107,14 @@ public static partial class TournamentMutations if (tournament.Status == TournamentStatus.Open) tournamentMetrics.TournamentOpened(); - return context.Tournaments.Where(t => t.Id == tournament.Id); + return context.Tournaments.AsNoTracking().Where(t => t.Id == tournament.Id).With(query); } [UseFirstOrDefault] - [UseProjection] [Authorize] public static async Task?> UpdateTournament( UpdateTournamentInput input, + QueryContext query, ClaimsPrincipal userClaims, ApplicationDbContext context, IResolverContext resolverContext, @@ -185,7 +186,7 @@ public static partial class TournamentMutations await context.SaveChangesAsync(token); - return context.Tournaments.Where(t => t.Id == tournament.Id); + return context.Tournaments.AsNoTracking().Where(t => t.Id == tournament.Id).With(query); } [Authorize] From bfcdb6fd07f560b07a538f74fa2497896c238bf9 Mon Sep 17 00:00:00 2001 From: Dejmenek Date: Sat, 12 Sep 2026 13:09:29 +0200 Subject: [PATCH 4/4] refactor: remove .AddProjections() from GraphQL setup --- TournamentAPI/Configuration/Extensions/GraphQLExtensions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/TournamentAPI/Configuration/Extensions/GraphQLExtensions.cs b/TournamentAPI/Configuration/Extensions/GraphQLExtensions.cs index 340e860..acd5dec 100644 --- a/TournamentAPI/Configuration/Extensions/GraphQLExtensions.cs +++ b/TournamentAPI/Configuration/Extensions/GraphQLExtensions.cs @@ -26,7 +26,6 @@ internal static IServiceCollection AddApplicationGraphQL(this IServiceCollection .AddMutationConventions() .AddQueryConventions() .AddPagingArguments() - .AddProjections() .AddFiltering(x => x.AddDefaults().MaxAllowedFilterOperations(32)) .AddSorting() .AddMaxExecutionDepthRule(10)