Files
mabibli/MaBibli.Shared/Dtos/DoublonsLivre.cs
T
mathieuandClaude Opus 5 383ed43227 Signaler les doublons à l'ajout d'un livre, sans jamais les refuser
Rien n'empêchait de rescanner un livre déjà catalogué. Plutôt qu'un index
unique — qui interdirait le second exemplaire, cas parfaitement légitime —
la création répond 409 avec les fiches semblables, et « confirmerDoublon »
enregistre la même saisie.

Deux critères, dont aucun n'est une clé : ISBN identique, ou clé d'œuvre
et auteur communs. La clé d'œuvre étant un préfixe de TitreNormalise, SQL
dégrossit sur la colonne indexée et l'égalité exacte se vérifie ensuite en
mémoire.

Vérifié en exécution : avertissement, retour au formulaire intact, et ajout
confirmé créant bien un second exemplaire.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 21:11:39 +02:00

25 lines
1.2 KiB
C#

namespace MaBibli.Shared.Dtos;
/// <summary>
/// Livres déjà catalogués qui ressemblent à celui qu'on est en train d'ajouter.
/// </summary>
/// <remarks>
/// <b>C'est un avertissement, jamais un refus.</b> Posséder deux exemplaires du même livre est
/// parfaitement légitime — on garde le sien et on prête l'autre — et l'ISBN est facultatif, donc
/// il ne peut pas servir de clé unique. Un index unique en base interdirait le second exemplaire
/// au lieu de rendre service ; ici l'utilisateur voit ce qu'il a déjà, et tranche.
/// <para>
/// Le rapprochement est <b>faillible dans les deux sens</b> : il rate une réédition retitrée
/// (<see cref="Textes.CleOeuvre"/>) et il signale le poche à côté du grand format, qui sont deux
/// exemplaires bien distincts. C'est exactement pourquoi la décision revient à l'utilisateur.
/// </para>
/// </remarks>
public record DoublonsLivre
{
/// <summary>Phrase destinée à l'utilisateur, nommant ce qu'il possède déjà.</summary>
public string Message { get; set; } = string.Empty;
/// <summary>Les fiches en cause, pour que l'écran les montre plutôt que de les décrire.</summary>
public List<LivreDto> Livres { get; set; } = [];
}