using MaBibli.Shared.Entites; namespace MaBibli.Shared.Catalogue; /// /// Critères de consultation du catalogue. /// /// /// Il n'existe volontairement aucun critère sur AjoutePar. La bibliothèque est /// commune à tout le foyer : filtrer les lectures sur ce champ serait un bug de conception. /// L'absence de ce critère est l'endroit où l'invariant est le plus visible. /// /// n'est pas une exception : il filtre sur le statut de l'appelant, /// que le serveur connaît par les en-têtes SSOwat. Le client ne désigne jamais de qui il parle. /// /// public record CritereLivres { /// /// Texte cherché dans le titre ou les auteurs. Insensible à la casse /// et aux accents : « emile » trouve « Émile ». /// public string? Recherche { get; init; } /// Physique ou numérique. null = les deux : le catalogue est unique. public Format? Format { get; init; } /// /// Roman, bande dessinée… null = tous. /// /// /// TypeDocument.NonPrecise est une valeur filtrable : « ce que je n'ai pas /// encore rangé » est justement la question qu'on se pose après avoir introduit ce champ. /// C'est ce qui la distingue du statut de lecture, dont l'absence n'est pas une valeur. /// public TypeDocument? TypeDocument { get; init; } /// /// Statut de lecture de l'utilisateur courant. null = tous. /// /// /// Un livre sans statut pour cette personne ne remonte sous aucune valeur : « non /// commencé » n'est pas un statut, c'est l'absence de statut. Il reste visible sans filtre. /// public Statut? Statut { get; init; } /// Ne garder que les livres d'un auteur — le « cliquer sur un auteur » d'IDEES.md. public int? AuteurId { get; init; } }