Phase 1 : squelette de la solution (3 projets .NET 10)
Mise en place de la structure de base, sans aucune fonctionnalité métier : - MaBibli.sln à la racine, avec trois projets ciblant net10.0 - MaBibli.Client : Blazor WebAssembly PWA (dotnet new blazorwasm --pwa), pages d'exemple du modèle (Counter, Weather) retirées - MaBibli.Api : ASP.NET Core, sert aussi les fichiers statiques du client (UseBlazorFrameworkFiles + MapFallbackToFile), via le package Microsoft.AspNetCore.Components.WebAssembly.Server - MaBibli.Shared : entités et enums partagés (Livre, Pret, Format, Statut), conformes au modèle de données de CLAUDE.md — AjoutePar est une simple traçabilité, Pret est une table séparée pour garder l'historique complet - EF Core + SQLite dans l'API : MaBibliDbContext, chaîne de connexion, et migration initiale InitialCreate vérifiée par un database update - dotnet-tools.json : dotnet-ef épinglé en outil local Vérifié : dotnet build sans avertissement, et dotnet publish MaBibli.Api -c Release -r linux-x64 --self-contained produit un dossier unique dont le wwwroot contient bien _framework/. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
namespace MaBibli.Shared.Entites;
|
||||
|
||||
/// <summary>
|
||||
/// Support du livre. Les ebooks sont de simples fiches : aucun fichier n'est stocké.
|
||||
/// </summary>
|
||||
public enum Format
|
||||
{
|
||||
Physique = 0,
|
||||
Numerique = 1,
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
namespace MaBibli.Shared.Entites;
|
||||
|
||||
/// <summary>
|
||||
/// Un livre du catalogue. La bibliothèque est <b>commune</b> à tous les utilisateurs.
|
||||
/// </summary>
|
||||
public class Livre
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>ISBN tel que saisi ou scanné (EAN-13 le plus souvent). Peut être absent.</summary>
|
||||
public string? Isbn { get; set; }
|
||||
|
||||
public string Titre { get; set; } = string.Empty;
|
||||
|
||||
public string? Auteur { get; set; }
|
||||
|
||||
public string? Editeur { get; set; }
|
||||
|
||||
public Format Format { get; set; }
|
||||
|
||||
public Statut Statut { get; set; }
|
||||
|
||||
/// <summary>URL de la couverture (OpenLibrary), pas de fichier stocké localement.</summary>
|
||||
public string? CoverUrl { get; set; }
|
||||
|
||||
public DateTime DateAjout { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <c>YNH_USER</c> de la personne qui a saisi le livre.
|
||||
/// <b>Traçabilité uniquement : ne JAMAIS filtrer les lectures sur ce champ.</b>
|
||||
/// La bibliothèque est commune ; ce champ existe pour savoir qui a ajouté quoi,
|
||||
/// et pour permettre un cloisonnement ultérieur sans migration de schéma.
|
||||
/// </summary>
|
||||
public string? AjoutePar { get; set; }
|
||||
|
||||
/// <summary>Historique complet des prêts de ce livre (pas seulement le prêt en cours).</summary>
|
||||
public List<Pret> Prets { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
namespace MaBibli.Shared.Entites;
|
||||
|
||||
/// <summary>
|
||||
/// Un prêt d'un livre à une personne. Table <b>séparée</b> de <see cref="Livre"/>
|
||||
/// afin de conserver l'historique complet des prêts passés, et pas seulement l'état courant.
|
||||
/// En pratique seuls les livres physiques sont prêtés.
|
||||
/// </summary>
|
||||
public class Pret
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public int LivreId { get; set; }
|
||||
|
||||
public Livre? Livre { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Nom de l'emprunteur, en <b>texte libre</b> : aucun lien avec les comptes YunoHost.
|
||||
/// On suit des prêts à des personnes extérieures au foyer.
|
||||
/// </summary>
|
||||
public string Emprunteur { get; set; } = string.Empty;
|
||||
|
||||
public DateTime DatePret { get; set; }
|
||||
|
||||
/// <summary><c>null</c> tant que le livre n'a pas été rendu.</summary>
|
||||
public DateTime? DateRetour { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace MaBibli.Shared.Entites;
|
||||
|
||||
/// <summary>
|
||||
/// Statut de lecture d'un livre.
|
||||
/// </summary>
|
||||
public enum Statut
|
||||
{
|
||||
ALire = 0,
|
||||
EnCours = 1,
|
||||
Lu = 2,
|
||||
}
|
||||
Reference in New Issue
Block a user