La liste d'envies vit dans une table séparée (LivreSouhaite) plutôt que dans un statut de plus sur Livre : un livre souhaité n'est pas possédé, et le loger dans Livres l'aurait fait entrer dans le catalogue, les compteurs et les prêts, au prix d'un « et qui n'est pas souhaité » à répéter dans chaque lecture. La portée est personnelle, comme le statut de lecture — mais ici Utilisateur est une vraie frontière : toute lecture filtre dessus. Bibliographie : SRU BnF interrogé par bib.author, vérifié le 2026-08-18. Deux filtres mesurés sur des réponses réelles sont indispensables — le type de document (l'index mêle livres audio, jeux et spectacles) et surtout l'auteur réel de la notice, « all » rapprochant les mots sur l'ensemble des auteurs : « Émile Zola » remonte sinon toute l'œuvre de sa fille Denise Le Blond-Zola. Les rééditions sont regroupées par clé d'œuvre (183 notices Werber -> 51 œuvres). Le rapprochement avec l'étagère se fait par titre, pas par ISBN, qui désigne une édition et non une œuvre ; ses limites sont dites à l'écran. Export en deux formats, tous deux du texte sans dépendance : .txt groupé par auteur pour la librairie, .csv à séparateur point-virgule et BOM pour le tableur. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
299 lines
9.6 KiB
C#
299 lines
9.6 KiB
C#
// <auto-generated />
|
|
using System;
|
|
using MaBibli.Api.Data;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
|
|
#nullable disable
|
|
|
|
namespace MaBibli.Api.Data.Migrations
|
|
{
|
|
[DbContext(typeof(MaBibliDbContext))]
|
|
partial class MaBibliDbContextModelSnapshot : ModelSnapshot
|
|
{
|
|
protected override void BuildModel(ModelBuilder modelBuilder)
|
|
{
|
|
#pragma warning disable 612, 618
|
|
modelBuilder.HasAnnotation("ProductVersion", "10.0.11");
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.Auteur", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<string>("CleRegroupement")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Nom")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("NomNormalise")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("CleRegroupement")
|
|
.IsUnique();
|
|
|
|
b.HasIndex("NomNormalise");
|
|
|
|
b.ToTable("Auteurs");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.Livre", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<string>("AjoutePar")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("CoverUrl")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<DateTime>("DateAjout")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Editeur")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<int>("Format")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<string>("Isbn")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Titre")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("TitreNormalise")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Isbn");
|
|
|
|
b.HasIndex("TitreNormalise");
|
|
|
|
b.ToTable("Livres");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.LivreAuteur", b =>
|
|
{
|
|
b.Property<int>("LivreId")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<int>("AuteurId")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<int>("Position")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.HasKey("LivreId", "AuteurId");
|
|
|
|
b.HasIndex("AuteurId");
|
|
|
|
b.ToTable("LivreAuteurs");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.LivreSouhaite", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<string>("Annee")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Auteur")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("AuteurNormalise")
|
|
.IsRequired()
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("TEXT")
|
|
.HasDefaultValue("");
|
|
|
|
b.Property<string>("CoverUrl")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<DateTime>("DateAjout")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Editeur")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Isbn")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Note")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Titre")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("TitreNormalise")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Utilisateur")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex(new[] { "Utilisateur" }, "IX_LivresSouhaites_Utilisateur");
|
|
|
|
b.HasIndex(new[] { "Utilisateur", "TitreNormalise", "AuteurNormalise" }, "IX_LivresSouhaites_Utilisateur_Oeuvre")
|
|
.IsUnique();
|
|
|
|
b.ToTable("LivresSouhaites");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.Pret", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<DateTime>("DatePret")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<DateTime?>("DateRetour")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<string>("Emprunteur")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<int>("LivreId")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex(new[] { "LivreId" }, "IX_Prets_LivreId");
|
|
|
|
b.HasIndex(new[] { "LivreId" }, "IX_Prets_LivreId_EnCours")
|
|
.IsUnique()
|
|
.HasFilter("\"DateRetour\" IS NULL");
|
|
|
|
b.ToTable("Prets");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.RapprochementRefuse", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<int>("AuteurAId")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<int>("AuteurBId")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("AuteurAId", "AuteurBId")
|
|
.IsUnique();
|
|
|
|
b.ToTable("RapprochementsRefuses");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.StatutLecture", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<DateTime>("DateMaj")
|
|
.HasColumnType("TEXT");
|
|
|
|
b.Property<int>("LivreId")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<int>("Statut")
|
|
.HasColumnType("INTEGER");
|
|
|
|
b.Property<string>("Utilisateur")
|
|
.IsRequired()
|
|
.HasColumnType("TEXT");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Utilisateur");
|
|
|
|
b.HasIndex("LivreId", "Utilisateur")
|
|
.IsUnique();
|
|
|
|
b.ToTable("StatutsLecture");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.LivreAuteur", b =>
|
|
{
|
|
b.HasOne("MaBibli.Shared.Entites.Auteur", "Auteur")
|
|
.WithMany("Livres")
|
|
.HasForeignKey("AuteurId")
|
|
.OnDelete(DeleteBehavior.Restrict)
|
|
.IsRequired();
|
|
|
|
b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
|
|
.WithMany("Auteurs")
|
|
.HasForeignKey("LivreId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("Auteur");
|
|
|
|
b.Navigation("Livre");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.Pret", b =>
|
|
{
|
|
b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
|
|
.WithMany("Prets")
|
|
.HasForeignKey("LivreId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("Livre");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.StatutLecture", b =>
|
|
{
|
|
b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
|
|
.WithMany("Statuts")
|
|
.HasForeignKey("LivreId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("Livre");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.Auteur", b =>
|
|
{
|
|
b.Navigation("Livres");
|
|
});
|
|
|
|
modelBuilder.Entity("MaBibli.Shared.Entites.Livre", b =>
|
|
{
|
|
b.Navigation("Auteurs");
|
|
|
|
b.Navigation("Prets");
|
|
|
|
b.Navigation("Statuts");
|
|
});
|
|
#pragma warning restore 612, 618
|
|
}
|
|
}
|
|
}
|