using adas_core.Application.Services.Interfaces; using adas_core.Domain.Models.GroupedObservations; using MongoDB.Bson; namespace adas_core.Application.Services.Caching { /// /// Implementación nula de ICacheService. /// No almacena nada, no devuelve nada y no interfiere con el flujo. /// Se usa cuando el CacheMode es "None". /// public class NoCacheService : ICacheService { public void SetValue(string key, string value) { // No hacer nada } public string? GetValue(string key) { return null; } public Task GetObjectAsync(string key, bool updateExpiration = true) { return Task.FromResult(default); } public Task SetObjectAsync(string key, T obj, bool updateExpiration = true) { return Task.CompletedTask; } public Task GetObjectAsync(string key, TimeSpan? ttlOverride, bool updateExpiration) { return Task.FromResult(default); } public Task SetObjectAsync(string key, T obj, TimeSpan? ttlOverride, bool updateExpiration) { return Task.CompletedTask; } public Task DeleteByPatternAsync(string pattern) { return Task.FromResult(0L); } public Task DeleteObjectAsync(string key) { return Task.CompletedTask; } public void CleanCache() { // Nada que limpiar } // ============================================================ // GET OR SET - STRING KEY // ============================================================ public async Task GetOrSetObjectAsync( string key, Func> factory, TimeSpan? ttl = null, CancellationToken cancellationToken = default) { // En modo NONE no hay caché → siempre ejecutar factory return await factory(); } public async Task GetOrSetValueAsync( string key, Func> loader, TimeSpan? ttl = null) { var result = await loader(); return (string?)result; } // ============================================================ // GET OR SET - GroupedField + patientId // ============================================================ public async Task GetOrSetObjectAsync( GroupedField groupedField, ObjectId patientId, Func> factory, TimeSpan? ttl = null, CancellationToken cancellationToken = default) { // Igual que arriba: en modo NONE no hay caché return await factory(); } } }