using SchotzIadKmTracker.Api.Models.Entities;
namespace SchotzIadKmTracker.Api.Repositories;
///
/// Accès aux données du Cache_Adresses (table AdresseCache).
/// Toutes les correspondances d'adresse s'effectuent sur le texte normalisé
/// (voir ).
///
public interface IAdresseCacheRepository
{
///
/// Retourne les entrées dont l'adresse normalisée contient le fragment normalisé fourni,
/// triées de la plus récemment utilisée à la plus ancienne, limitées à .
///
Task> RechercherAsync(
string fragmentNormalise,
int limite,
CancellationToken cancellationToken = default);
/// Retourne l'entrée correspondant exactement à l'adresse normalisée, ou null.
Task ObtenirParAdresseNormaliseeAsync(
string adresseNormalisee,
CancellationToken cancellationToken = default);
/// Ajoute une nouvelle entrée au cache.
Task AjouterAsync(AdresseCache entree, CancellationToken cancellationToken = default);
/// Compte le nombre total d'entrées du cache.
Task CompterAsync(CancellationToken cancellationToken = default);
///
/// Retourne les entrées les plus anciennes (par DerniereUtilisation croissante),
/// limitées à . Utilisé pour l'éviction LRU.
///
Task> ObtenirPlusAnciennesAsync(
int nombre,
CancellationToken cancellationToken = default);
/// Supprime les entrées fournies du cache.
void Supprimer(IEnumerable entrees);
/// Persiste les modifications en attente.
Task SauvegarderAsync(CancellationToken cancellationToken = default);
}