using backend.Entities; using Microsoft.EntityFrameworkCore; namespace backend.Data { public class DataContext : DbContext { public DataContext(DbContextOptions dbContextOptions) : base(dbContextOptions) { } private DbSet users; public DbSet Users { get { if (users == null) { users = Set(); } return users; } } private DbSet restaurants; public DbSet Restoraunts { get { if (restaurants == null) { restaurants = Set(); } return restaurants; } } private DbSet reservations; public DbSet Reservations { get { if (reservations == null) { reservations = Set(); } return reservations; } } private DbSet menuItems; public DbSet MenuItems { get { if (menuItems == null) { menuItems = Set(); } return menuItems; } } private DbSet reviews; public DbSet Reviews { get { if (reviews == null) { reviews = Set(); } return reviews; } } private DbSet toDoItems; public DbSet ToDoItems { get { if (toDoItems == null) { toDoItems = Set(); } return toDoItems; } } private DbSet queueItems; public DbSet QueueItems { get { if (queueItems == null) { queueItems = Set(); } return queueItems; } } protected override void OnModelCreating(ModelBuilder modelBuilder) { // // User // modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); modelBuilder.Entity() .HasOne(p => p.Restaurant) .WithOne(b => b.Owner); // // Restoraunt // modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); modelBuilder.Entity() .HasOne(p => p.Owner) .WithOne(b => b.Restaurant) .HasForeignKey(k => k.OwnerFk); modelBuilder.Entity() .HasMany(p => p.Reservations) .WithOne(b => b.Restaurant); modelBuilder.Entity() .HasMany(p => p.Reviews) .WithOne(b => b.Restaurant); // // Reservation // modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); modelBuilder.Entity() .HasOne(p => p.Restaurant) .WithMany(b => b.Reservations); // // MenuItem // modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); modelBuilder.Entity() .HasOne(p => p.Restaurant) .WithMany(b => b.Menu); // // Review // modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); modelBuilder.Entity() .HasOne(p => p.Restaurant) .WithMany(b => b.Reviews); modelBuilder.Entity() .HasOne(p => p.User); // // ToDoItem // modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); modelBuilder.Entity() .HasOne(p => p.LinkedReview); modelBuilder.Entity().Property(x => x.Id).IsRequired().ValueGeneratedOnAdd(); } } }