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