using AutoMapper; using LANCommander.Server.Data; using LANCommander.Server.Data.Models; using LANCommander.Server.Services.Extensions; using System.Linq.Expressions; using ZiggyCreatures.Caching.Fusion; using LANCommander.Server.Services.Models; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; namespace LANCommander.Server.Services { public class GameCustomFieldService( ILogger logger, SettingsProvider settingsProvider, IFusionCache cache, IMapper mapper, IHttpContextAccessor httpContextAccessor, IDbContextFactory contextFactory) : BaseDatabaseService(logger, settingsProvider, cache, mapper, httpContextAccessor, contextFactory) { public override async Task AddAsync(GameCustomField entity) { return await base.AddAsync(entity, async context => { await context.UpdateRelationshipAsync(cf => cf.Game); }); } public override async Task> AddMissingAsync(Expression> predicate, GameCustomField entity) { await cache.ExpireGameCacheAsync(entity.Id); return await base.AddMissingAsync(predicate, entity); } public override async Task UpdateAsync(GameCustomField entity) { await cache.ExpireGameCacheAsync(entity.Id); var update = await base.UpdateAsync(entity, async context => { await context.UpdateRelationshipAsync(g => g.Game); }); return update; } public override async Task DeleteAsync(GameCustomField gameCustomField) { gameCustomField = await GetAsync(gameCustomField.Id); await cache.ExpireGameCacheAsync(gameCustomField.GameId); await base.DeleteAsync(gameCustomField); } } }