// <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
        }
    }
}
