39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
using adas_core.Domain.Models.GroupedObservations;
|
|
using MongoDB.Bson;
|
|
|
|
namespace adas_core.Application.Services.Interfaces
|
|
{
|
|
public interface ICacheService
|
|
{
|
|
//Métodos básicos
|
|
void SetValue(string key, string value);
|
|
string? GetValue(string key);
|
|
Task<T?> GetObjectAsync<T>(string key, bool updateExpiration = true);
|
|
Task SetObjectAsync<T>(string key, T obj, bool updateExpiration = true);
|
|
Task<T?> GetObjectAsync<T>(string key, TimeSpan? ttlOverride, bool updateExpiration);
|
|
Task SetObjectAsync<T>(string key, T obj, TimeSpan? ttlOverride, bool updateExpiration);
|
|
Task DeleteObjectAsync(string key);
|
|
Task<long> DeleteByPatternAsync(string pattern);
|
|
void CleanCache();
|
|
|
|
|
|
// Métodos para transparencia y gestión de locks
|
|
|
|
// GetOrSet (string key)
|
|
Task<string?> GetOrSetValueAsync(string key, Func<Task<string>> loader, TimeSpan? ttlOverride = null);
|
|
Task<T> GetOrSetObjectAsync<T>(
|
|
string key,
|
|
Func<Task<T>> factory,
|
|
TimeSpan? ttl = null,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
// GetOrSet especializado para GroupedObservations
|
|
Task<T> GetOrSetObjectAsync<T>(
|
|
GroupedField groupedField,
|
|
ObjectId patientId,
|
|
Func<Task<T>> factory,
|
|
TimeSpan? ttl = null,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
}
|
|
} |