using Microsoft.AspNetCore.Mvc;
using TrajetKmTracker.Api.Models.DTOs;
using TrajetKmTracker.Api.Services;
namespace TrajetKmTracker.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);
}
}