MaBibli 1.0.0
Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts, scan de code-barres, consultation hors-ligne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
namespace MaBibli.Shared.Dtos;
|
||||
|
||||
/// <summary>
|
||||
/// Une revue et les numéros qu'on en possède.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Comme pour les séries, <b>une seule lecture rend tout</b> : la liste des revues sert aussi
|
||||
/// le détail de chacune, ce qui donne un unique instantané hors-ligne à tenir à jour.
|
||||
/// </remarks>
|
||||
public record RevueDto
|
||||
{
|
||||
public required int Id { get; init; }
|
||||
|
||||
public required string Titre { get; init; }
|
||||
|
||||
/// <summary>ISSN à tiret, quand il est connu. Identifiant de la <b>revue</b>, jamais un ISBN.</summary>
|
||||
public string? Issn { get; init; }
|
||||
|
||||
public string? Editeur { get; init; }
|
||||
|
||||
public string? AjoutePar { get; init; }
|
||||
|
||||
/// <summary>Numéros possédés, du plus récent au plus ancien.</summary>
|
||||
public IReadOnlyList<NumeroRevueDto> Numeros { get; init; } = [];
|
||||
}
|
||||
|
||||
/// <summary>Un numéro possédé. Recensé seulement : ni prêt, ni statut de lecture.</summary>
|
||||
public record NumeroRevueDto
|
||||
{
|
||||
public required int Id { get; init; }
|
||||
|
||||
public required string Numero { get; init; }
|
||||
|
||||
public DateTime? DateParution { get; init; }
|
||||
|
||||
public string? Note { get; init; }
|
||||
|
||||
/// <summary>Couverture du numéro, quand une URL a été collée. Aucune source ne la fournit.</summary>
|
||||
public string? CoverUrl { get; init; }
|
||||
|
||||
/// <summary>Articles annoncés à la une, dans l'ordre de saisie.</summary>
|
||||
public IReadOnlyList<string> Articles { get; init; } = [];
|
||||
}
|
||||
|
||||
/// <summary>Charge utile de création ou de modification d'une revue.</summary>
|
||||
public record EnregistrementRevue
|
||||
{
|
||||
public string Titre { get; set; } = string.Empty;
|
||||
|
||||
public string? Issn { get; set; }
|
||||
|
||||
public string? Editeur { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>Charge utile d'ajout ou de modification d'un numéro.</summary>
|
||||
public record AjoutNumeroRevue
|
||||
{
|
||||
/// <summary>Obligatoire : deux numéros sans numéro seraient indiscernables.</summary>
|
||||
public string Numero { get; set; } = string.Empty;
|
||||
|
||||
public DateTime? DateParution { get; set; }
|
||||
|
||||
public string? Note { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// URL d'une image de couverture. <b>Aucune source ne peut la fournir</b> — l'ISSN désigne
|
||||
/// la revue, pas la parution : elle est collée à la main, ou absente.
|
||||
/// </summary>
|
||||
public string? CoverUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Articles à la une, dans l'ordre de la couverture.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// ⚠️ <b>La liste est la donnée, et il n'y a plus de vue « une seule ligne ».</b> Elle a
|
||||
/// existé — un champ texte à points-virgules, relié à chaque frappe sur une propriété qui
|
||||
/// découpait puis recomposait — et c'était un champ dans lequel on ne pouvait taper ni le
|
||||
/// séparateur (aussitôt élagué comme entrée vide) ni l'espace qui le suit. Un titre s'ajoute
|
||||
/// désormais un par un.
|
||||
/// </remarks>
|
||||
public List<string> Articles { get; set; } = [];
|
||||
}
|
||||
Reference in New Issue
Block a user