using SchotzIadKmTracker.Api.Models.Entities; namespace SchotzIadKmTracker.Api.Repositories; /// /// Accès aux données des véhicules et aux trajets impactés par une réaffectation. /// L'historique des véhicules est conservé (aucune suppression) — Exigence 10.12 / Property 22. /// public interface IVehiculeRepository { /// Retourne l'historique complet des véhicules, trié par Date_Effet décroissante puis Id décroissant. Task> GetHistoriqueAsync(CancellationToken cancellationToken = default); /// Retourne le véhicule par identifiant, ou null s'il n'existe pas. Task GetByIdAsync(int id, CancellationToken cancellationToken = default); /// /// Résout le véhicule courant à une date donnée : Date_Effet la plus récente parmi /// celles <= (ORDER BY DateEffet DESC, Id DESC LIMIT 1). /// Retourne null si aucun véhicule n'a de Date_Effet <= . /// Task GetVehiculeCourantAsync(DateOnly date, CancellationToken cancellationToken = default); /// Ajoute un nouveau véhicule (sans persister). L'appelant gère la transaction. Task AddAsync(Vehicule vehicule, CancellationToken cancellationToken = default); /// /// Retourne les trajets dont la Date est >= et dont la /// PuissanceFiscale diffère de (candidats à la réaffectation). /// Task> GetTrajetsAReaffecterAsync( DateOnly dateEffet, int puissanceFiscale, CancellationToken cancellationToken = default); }