import 'package:hl_lieferservice/domain/entity/car.dart'; /// Port für Fahrzeug-Stammdaten des angemeldeten Fahrers. /// /// Bewusst **kein** `personalnummer`/`teamId`-Parameter: der Account /// wird serverseitig aus dem JWT abgeleitet, der Client muss nichts /// mitschicken. Eine Methode, die einen Account-Filter ermöglicht, /// ist konsequent nicht vorgesehen. /// /// Implementierungen werfen anwendungs-spezifische Exceptions /// (z. B. `CarsRepositoryException`) — der Aufrufer fängt sie und /// übersetzt in UI-Zustand. abstract interface class CarsRepository { /// Liste der Fahrzeuge des angemeldeten Accounts. /// `includeInactive=false` blendet deaktivierte Fahrzeuge aus /// (Default für die App-UI). Future> listMine({bool includeInactive = false}); /// Legt ein neues Fahrzeug mit dem gegebenen Kennzeichen an. /// Wirft, wenn das Kennzeichen für den Account schon existiert. Future create({required String plate}); /// Aktualisiert ein bestehendes Fahrzeug. /// Beide Optional-Parameter `null` ist ein No-Op-PATCH. /// Soft-Delete erfolgt über `update(carId: ..., active: false)`. Future update({ required String carId, String? plate, bool? active, }); } /// Allgemeine Repository-Exception. Konkrete Implementierungen /// können spezifischere Subtypen werfen (z. B. `CarsUnauthorized`). class CarsRepositoryException implements Exception { const CarsRepositoryException(this.message, [this.cause]); final String message; final Object? cause; @override String toString() => 'CarsRepositoryException: $message'; }