//
using System;
using BookHive;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace BookHive.Migrations
{
[DbContext(typeof(BookHiveDbContext))]
partial class BookHiveDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.3")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("BookHive.Models.Author", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Biography")
.HasMaxLength(2000)
.HasColumnType("nvarchar(2000)");
b.Property("BirthDate")
.HasColumnType("date");
b.Property("FirstName")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("LastName")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("Nationality")
.IsRequired()
.HasMaxLength(60)
.HasColumnType("nvarchar(60)");
b.HasKey("Id");
b.ToTable("Authors");
b.HasData(
new
{
Id = 1,
Biography = "Auteur britannique connu pour ses romans dystopiques.",
BirthDate = new DateOnly(1903, 6, 25),
FirstName = "George",
LastName = "Orwell",
Nationality = "Britannique"
},
new
{
Id = 2,
Biography = "Romancière anglaise célèbre pour ses romans sur la société.",
BirthDate = new DateOnly(1775, 12, 16),
FirstName = "Jane",
LastName = "Austen",
Nationality = "Britannique"
},
new
{
Id = 3,
Biography = "Poète et écrivain français du XIXe siècle.",
BirthDate = new DateOnly(1802, 2, 26),
FirstName = "Victor",
LastName = "Hugo",
Nationality = "Française"
});
});
modelBuilder.Entity("BookHive.Models.Book", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("AuthorId")
.HasColumnType("int");
b.Property("Genre")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("Isbn")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("PageCount")
.HasColumnType("int");
b.Property("PublishedDate")
.HasColumnType("date");
b.Property("Summary")
.HasMaxLength(3000)
.HasColumnType("nvarchar(3000)");
b.Property("Title")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.HasIndex("AuthorId");
b.ToTable("Books");
b.HasData(
new
{
Id = 1,
AuthorId = 1,
Genre = "Dystopie",
Isbn = "9780451524935",
PageCount = 328,
PublishedDate = new DateOnly(1949, 6, 8),
Summary = "Roman dystopique sur un régime totalitaire.",
Title = "1984"
},
new
{
Id = 2,
AuthorId = 1,
Genre = "Satire",
Isbn = "9780451526342",
PageCount = 112,
PublishedDate = new DateOnly(1945, 8, 17),
Summary = "Satire politique sous forme de fable animale.",
Title = "Animal Farm"
},
new
{
Id = 3,
AuthorId = 2,
Genre = "Roman",
Isbn = "9780141439518",
PageCount = 279,
PublishedDate = new DateOnly(1813, 1, 28),
Summary = "Histoire romantique dans l'Angleterre du XIXe siècle.",
Title = "Pride and Prejudice"
},
new
{
Id = 4,
AuthorId = 2,
Genre = "Roman",
Isbn = "9780141439662",
PageCount = 226,
PublishedDate = new DateOnly(1811, 10, 30),
Summary = "Roman sur les sœurs Dashwood.",
Title = "Sense and Sensibility"
},
new
{
Id = 5,
AuthorId = 3,
Genre = "Roman historique",
Isbn = "9782070409189",
PageCount = 1463,
PublishedDate = new DateOnly(1862, 4, 3),
Summary = "Grande fresque sociale sur la misère et la justice.",
Title = "Les Misérables"
},
new
{
Id = 6,
AuthorId = 3,
Genre = "Roman historique",
Isbn = "9782253004226",
PageCount = 940,
PublishedDate = new DateOnly(1831, 1, 14),
Summary = "Roman historique se déroulant à Paris.",
Title = "Notre-Dame de Paris"
});
});
modelBuilder.Entity("BookHive.Models.Loan", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("BookId")
.HasColumnType("int");
b.Property("DueDate")
.HasColumnType("date");
b.Property("LoanDate")
.HasColumnType("date");
b.Property("MemberId")
.HasColumnType("int");
b.Property("ReturnDate")
.HasColumnType("date");
b.HasKey("Id");
b.HasIndex("BookId");
b.HasIndex("MemberId");
b.ToTable("Loans");
b.HasData(
new
{
Id = 1,
BookId = 1,
DueDate = new DateOnly(2025, 12, 15),
LoanDate = new DateOnly(2025, 12, 1),
MemberId = 1,
ReturnDate = new DateOnly(2025, 12, 10)
},
new
{
Id = 2,
BookId = 2,
DueDate = new DateOnly(2025, 12, 20),
LoanDate = new DateOnly(2025, 12, 5),
MemberId = 2,
ReturnDate = new DateOnly(2025, 12, 18)
},
new
{
Id = 3,
BookId = 3,
DueDate = new DateOnly(2025, 12, 25),
LoanDate = new DateOnly(2025, 12, 10),
MemberId = 3
},
new
{
Id = 4,
BookId = 4,
DueDate = new DateOnly(2025, 12, 27),
LoanDate = new DateOnly(2025, 12, 12),
MemberId = 1
},
new
{
Id = 5,
BookId = 5,
DueDate = new DateOnly(2025, 11, 15),
LoanDate = new DateOnly(2025, 11, 1),
MemberId = 2,
ReturnDate = new DateOnly(2025, 11, 14)
});
});
modelBuilder.Entity("BookHive.Models.Member", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("FirstName")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("LastName")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("MembershipDate")
.HasColumnType("date");
b.HasKey("Id");
b.ToTable("Members");
b.HasData(
new
{
Id = 1,
Email = "alice@example.com",
FirstName = "Alice",
IsActive = true,
LastName = "Martin",
MembershipDate = new DateOnly(2023, 1, 10)
},
new
{
Id = 2,
Email = "bob@example.com",
FirstName = "Bob",
IsActive = true,
LastName = "Durand",
MembershipDate = new DateOnly(2023, 5, 12)
},
new
{
Id = 3,
Email = "claire@example.com",
FirstName = "Claire",
IsActive = true,
LastName = "Petit",
MembershipDate = new DateOnly(2024, 2, 2)
},
new
{
Id = 4,
Email = "david@example.com",
FirstName = "David",
IsActive = true,
LastName = "Bernard",
MembershipDate = new DateOnly(2024, 6, 15)
});
});
modelBuilder.Entity("BookHive.Models.Review", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("BookId")
.HasColumnType("int");
b.Property("Comment")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("MemberId")
.HasColumnType("int");
b.Property("Rating")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("MemberId");
b.HasIndex("BookId", "MemberId")
.IsUnique();
b.ToTable("Reviews");
b.HasData(
new
{
Id = 1,
BookId = 1,
Comment = "Un chef-d'œuvre dystopique.",
CreatedAt = new DateTime(2025, 12, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
MemberId = 1,
Rating = 5
},
new
{
Id = 2,
BookId = 3,
Comment = "Très bon roman classique.",
CreatedAt = new DateTime(2025, 12, 2, 0, 0, 0, 0, DateTimeKind.Unspecified),
MemberId = 2,
Rating = 4
},
new
{
Id = 3,
BookId = 5,
Comment = "Incroyable roman historique.",
CreatedAt = new DateTime(2025, 12, 3, 0, 0, 0, 0, DateTimeKind.Unspecified),
MemberId = 3,
Rating = 5
},
new
{
Id = 4,
BookId = 2,
Comment = "Drôle et intelligent.",
CreatedAt = new DateTime(2025, 12, 4, 0, 0, 0, 0, DateTimeKind.Unspecified),
MemberId = 4,
Rating = 4
});
});
modelBuilder.Entity("BookHive.Models.Book", b =>
{
b.HasOne("BookHive.Models.Author", "Author")
.WithMany("Books")
.HasForeignKey("AuthorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Author");
});
modelBuilder.Entity("BookHive.Models.Loan", b =>
{
b.HasOne("BookHive.Models.Book", "Book")
.WithMany("Loans")
.HasForeignKey("BookId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("BookHive.Models.Member", "Member")
.WithMany("Loans")
.HasForeignKey("MemberId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Book");
b.Navigation("Member");
});
modelBuilder.Entity("BookHive.Models.Review", b =>
{
b.HasOne("BookHive.Models.Book", "Book")
.WithMany("Reviews")
.HasForeignKey("BookId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("BookHive.Models.Member", "Member")
.WithMany("Reviews")
.HasForeignKey("MemberId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Book");
b.Navigation("Member");
});
modelBuilder.Entity("BookHive.Models.Author", b =>
{
b.Navigation("Books");
});
modelBuilder.Entity("BookHive.Models.Book", b =>
{
b.Navigation("Loans");
b.Navigation("Reviews");
});
modelBuilder.Entity("BookHive.Models.Member", b =>
{
b.Navigation("Loans");
b.Navigation("Reviews");
});
#pragma warning restore 612, 618
}
}
}