From 6bcbc0e9e5b72fb604ca4b5fb18cbd1a075e8879 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Sat, 4 Jul 2026 14:26:25 -0500 Subject: [PATCH] Ensure game is updated when save path is added/updated/deleted --- .../SavePathService.cs | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/LANCommander.Server.Services/SavePathService.cs b/LANCommander.Server.Services/SavePathService.cs index 7d9f652b..eeab3d8e 100644 --- a/LANCommander.Server.Services/SavePathService.cs +++ b/LANCommander.Server.Services/SavePathService.cs @@ -1,6 +1,7 @@ -using AutoMapper; +using AutoMapper; using LANCommander.Server.Data; using LANCommander.Server.Data.Models; +using LANCommander.Server.Services.Extensions; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; @@ -18,18 +19,53 @@ namespace LANCommander.Server.Services { public override async Task AddAsync(SavePath entity) { - return await base.AddAsync(entity, async context => + var added = await base.AddAsync(entity, async context => { await context.UpdateRelationshipAsync(sp => sp.Game); }); + + await TouchGameAsync(added.GameId); + + return added; } public async override Task UpdateAsync(SavePath entity) { - return await base.UpdateAsync(entity, async context => + var updated = await base.UpdateAsync(entity, async context => { await context.UpdateRelationshipAsync(sp => sp.Game); }); + + await TouchGameAsync(updated.GameId); + + return updated; + } + + public override async Task DeleteAsync(SavePath entity) + { + var gameId = entity.GameId; + + await base.DeleteAsync(entity); + + await TouchGameAsync(gameId); + } + + private async Task TouchGameAsync(Guid? gameId) + { + if (!gameId.HasValue) + return; + + await using var context = await contextFactory.CreateDbContextAsync(); + + var game = await context.Games.FirstOrDefaultAsync(g => g.Id == gameId.Value); + + if (game != null) + { + game.UpdatedOn = DateTime.UtcNow; + await context.SaveChangesAsync(); + } + + await cache.ExpireGameCacheAsync(gameId.Value); } } }