using Microsoft.AspNetCore.Mvc; using SchotzIadKmTracker.Api.Models.DTOs; using SchotzIadKmTracker.Api.Services; namespace SchotzIadKmTracker.Api.Controllers; /// /// Endpoint d'autocomplétion locale des adresses déjà géocodées (Cache_Adresses). /// La recherche exige au moins 3 caractères ; en deçà, une liste vide est retournée /// (Exigence 9.3). /// [ApiController] [Route("api/adresses")] public class AdressesController : ControllerBase { private readonly IAdresseCacheService _adresseCacheService; public AdressesController(IAdresseCacheService adresseCacheService) { _adresseCacheService = adresseCacheService; } /// /// Recherche dans le Cache_Adresses les suggestions correspondant au fragment /// (min. 3 caractères), ordonnées de la plus récemment utilisée à la plus ancienne. /// [HttpGet("search")] [ProducesResponseType(typeof(IReadOnlyList), StatusCodes.Status200OK)] public async Task>> Search( [FromQuery] string? q, CancellationToken cancellationToken) { var suggestions = await _adresseCacheService.RechercherLocalAsync( q ?? string.Empty, cancellationToken: cancellationToken); return Ok(suggestions); } }