first commit
This commit is contained in:
274
BookHive/BookHiveDbContext.cs
Normal file
274
BookHive/BookHiveDbContext.cs
Normal file
@@ -0,0 +1,274 @@
|
||||
using BookHive.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace BookHive;
|
||||
|
||||
public class BookHiveDbContext : DbContext
|
||||
{
|
||||
public DbSet<Author> Authors { get; set; }
|
||||
public DbSet<Book> Books { get; set; }
|
||||
public DbSet<Member> Members { get; set; }
|
||||
public DbSet<Loan> Loans { get; set; }
|
||||
public DbSet<Review> Reviews { get; set; }
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
string connectionString =
|
||||
"Server=romaric-thibault.fr;" + // Serveur SQL
|
||||
"Database=mathys_BookHive;" + // Nom de la base
|
||||
"User Id=mathys;" + // Utilisateur
|
||||
"Password=Onto9-Cage-Afflicted;" + // Mot de passe
|
||||
"TrustServerCertificate=true;"; // Accepte certificat auto-signé
|
||||
|
||||
optionsBuilder.UseSqlServer(connectionString);
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<Review>()
|
||||
.HasIndex(x => new { x.BookId, x.MemberId })
|
||||
.IsUnique();
|
||||
|
||||
// -------------------
|
||||
// AUTHORS
|
||||
// -------------------
|
||||
modelBuilder.Entity<Author>().HasData(
|
||||
new Author
|
||||
{
|
||||
Id = 1,
|
||||
FirstName = "George",
|
||||
LastName = "Orwell",
|
||||
Biography = "Auteur britannique connu pour ses romans dystopiques.",
|
||||
BirthDate = new DateOnly(1903, 6, 25),
|
||||
Nationality = "Britannique"
|
||||
},
|
||||
new Author
|
||||
{
|
||||
Id = 2,
|
||||
FirstName = "Jane",
|
||||
LastName = "Austen",
|
||||
Biography = "Romancière anglaise célèbre pour ses romans sur la société.",
|
||||
BirthDate = new DateOnly(1775, 12, 16),
|
||||
Nationality = "Britannique"
|
||||
},
|
||||
new Author
|
||||
{
|
||||
Id = 3,
|
||||
FirstName = "Victor",
|
||||
LastName = "Hugo",
|
||||
Biography = "Poète et écrivain français du XIXe siècle.",
|
||||
BirthDate = new DateOnly(1802, 2, 26),
|
||||
Nationality = "Française"
|
||||
}
|
||||
);
|
||||
|
||||
// -------------------
|
||||
// BOOKS
|
||||
// -------------------
|
||||
modelBuilder.Entity<Book>().HasData(
|
||||
new Book
|
||||
{
|
||||
Id = 1,
|
||||
Title = "1984",
|
||||
Isbn = "9780451524935",
|
||||
Summary = "Roman dystopique sur un régime totalitaire.",
|
||||
PageCount = 328,
|
||||
PublishedDate = new DateOnly(1949, 6, 8),
|
||||
Genre = "Dystopie",
|
||||
AuthorId = 1
|
||||
},
|
||||
new Book
|
||||
{
|
||||
Id = 2,
|
||||
Title = "Animal Farm",
|
||||
Isbn = "9780451526342",
|
||||
Summary = "Satire politique sous forme de fable animale.",
|
||||
PageCount = 112,
|
||||
PublishedDate = new DateOnly(1945, 8, 17),
|
||||
Genre = "Satire",
|
||||
AuthorId = 1
|
||||
},
|
||||
new Book
|
||||
{
|
||||
Id = 3,
|
||||
Title = "Pride and Prejudice",
|
||||
Isbn = "9780141439518",
|
||||
Summary = "Histoire romantique dans l'Angleterre du XIXe siècle.",
|
||||
PageCount = 279,
|
||||
PublishedDate = new DateOnly(1813, 1, 28),
|
||||
Genre = "Roman",
|
||||
AuthorId = 2
|
||||
},
|
||||
new Book
|
||||
{
|
||||
Id = 4,
|
||||
Title = "Sense and Sensibility",
|
||||
Isbn = "9780141439662",
|
||||
Summary = "Roman sur les sœurs Dashwood.",
|
||||
PageCount = 226,
|
||||
PublishedDate = new DateOnly(1811, 10, 30),
|
||||
Genre = "Roman",
|
||||
AuthorId = 2
|
||||
},
|
||||
new Book
|
||||
{
|
||||
Id = 5,
|
||||
Title = "Les Misérables",
|
||||
Isbn = "9782070409189",
|
||||
Summary = "Grande fresque sociale sur la misère et la justice.",
|
||||
PageCount = 1463,
|
||||
PublishedDate = new DateOnly(1862, 4, 3),
|
||||
Genre = "Roman historique",
|
||||
AuthorId = 3
|
||||
},
|
||||
new Book
|
||||
{
|
||||
Id = 6,
|
||||
Title = "Notre-Dame de Paris",
|
||||
Isbn = "9782253004226",
|
||||
Summary = "Roman historique se déroulant à Paris.",
|
||||
PageCount = 940,
|
||||
PublishedDate = new DateOnly(1831, 1, 14),
|
||||
Genre = "Roman historique",
|
||||
AuthorId = 3
|
||||
}
|
||||
);
|
||||
|
||||
// -------------------
|
||||
// MEMBERS
|
||||
// -------------------
|
||||
modelBuilder.Entity<Member>().HasData(
|
||||
new Member
|
||||
{
|
||||
Id = 1,
|
||||
Email = "alice@example.com",
|
||||
FirstName = "Alice",
|
||||
LastName = "Martin",
|
||||
MembershipDate = new DateOnly(2023, 1, 10),
|
||||
IsActive = true
|
||||
},
|
||||
new Member
|
||||
{
|
||||
Id = 2,
|
||||
Email = "bob@example.com",
|
||||
FirstName = "Bob",
|
||||
LastName = "Durand",
|
||||
MembershipDate = new DateOnly(2023, 5, 12),
|
||||
IsActive = true
|
||||
},
|
||||
new Member
|
||||
{
|
||||
Id = 3,
|
||||
Email = "claire@example.com",
|
||||
FirstName = "Claire",
|
||||
LastName = "Petit",
|
||||
MembershipDate = new DateOnly(2024, 2, 2),
|
||||
IsActive = true
|
||||
},
|
||||
new Member
|
||||
{
|
||||
Id = 4,
|
||||
Email = "david@example.com",
|
||||
FirstName = "David",
|
||||
LastName = "Bernard",
|
||||
MembershipDate = new DateOnly(2024, 6, 15),
|
||||
IsActive = true
|
||||
}
|
||||
);
|
||||
|
||||
// -------------------
|
||||
// LOANS (5 dont 2 en cours)
|
||||
// -------------------
|
||||
modelBuilder.Entity<Loan>().HasData(
|
||||
new Loan
|
||||
{
|
||||
Id = 1,
|
||||
BookId = 1,
|
||||
MemberId = 1,
|
||||
LoanDate = new DateOnly(2025, 12, 1),
|
||||
DueDate = new DateOnly(2025, 12, 15),
|
||||
ReturnDate = new DateOnly(2025, 12, 10)
|
||||
},
|
||||
new Loan
|
||||
{
|
||||
Id = 2,
|
||||
BookId = 2,
|
||||
MemberId = 2,
|
||||
LoanDate = new DateOnly(2025, 12, 5),
|
||||
DueDate = new DateOnly(2025, 12, 20),
|
||||
ReturnDate = new DateOnly(2025, 12, 18)
|
||||
},
|
||||
new Loan
|
||||
{
|
||||
Id = 3,
|
||||
BookId = 3,
|
||||
MemberId = 3,
|
||||
LoanDate = new DateOnly(2025, 12, 10),
|
||||
DueDate = new DateOnly(2025, 12, 25),
|
||||
ReturnDate = null // en cours
|
||||
},
|
||||
new Loan
|
||||
{
|
||||
Id = 4,
|
||||
BookId = 4,
|
||||
MemberId = 1,
|
||||
LoanDate = new DateOnly(2025, 12, 12),
|
||||
DueDate = new DateOnly(2025, 12, 27),
|
||||
ReturnDate = null // en cours
|
||||
},
|
||||
new Loan
|
||||
{
|
||||
Id = 5,
|
||||
BookId = 5,
|
||||
MemberId = 2,
|
||||
LoanDate = new DateOnly(2025, 11, 1),
|
||||
DueDate = new DateOnly(2025, 11, 15),
|
||||
ReturnDate = new DateOnly(2025, 11, 14)
|
||||
}
|
||||
);
|
||||
|
||||
// -------------------
|
||||
// REVIEWS
|
||||
// -------------------
|
||||
modelBuilder.Entity<Review>().HasData(
|
||||
new Review
|
||||
{
|
||||
Id = 1,
|
||||
BookId = 1,
|
||||
MemberId = 1,
|
||||
Rating = 5,
|
||||
Comment = "Un chef-d'œuvre dystopique.",
|
||||
CreatedAt = new DateTime(2025, 12, 1)
|
||||
},
|
||||
new Review
|
||||
{
|
||||
Id = 2,
|
||||
BookId = 3,
|
||||
MemberId = 2,
|
||||
Rating = 4,
|
||||
Comment = "Très bon roman classique.",
|
||||
CreatedAt = new DateTime(2025, 12, 2)
|
||||
},
|
||||
new Review
|
||||
{
|
||||
Id = 3,
|
||||
BookId = 5,
|
||||
MemberId = 3,
|
||||
Rating = 5,
|
||||
Comment = "Incroyable roman historique.",
|
||||
CreatedAt = new DateTime(2025, 12, 3)
|
||||
},
|
||||
new Review
|
||||
{
|
||||
Id = 4,
|
||||
BookId = 2,
|
||||
MemberId = 4,
|
||||
Rating = 4,
|
||||
Comment = "Drôle et intelligent.",
|
||||
CreatedAt = new DateTime(2025, 12, 4)
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user