using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace Api.Models { public class Product { public int Id { get; set; } public string? Name { get; set; } public decimal Price { get; set; } } public class AppDbContext : DbContext { public AppDbContext(DbContextOptions options) : base(options) { } public DbSet Products { get; set; } public DbSet WebMessages { get; set; } public DbSet Users { get; set; } public DbSet UserOAuthProviders { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // Configure User entity modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.Email).IsUnique(); entity.Property(e => e.Email).IsRequired().HasMaxLength(255); entity.Property(e => e.FirstName).HasMaxLength(255); entity.Property(e => e.LastName).HasMaxLength(255); entity.Property(e => e.ProfilePictureUrl).HasMaxLength(500); }); // Configure UserOAuthProvider entity modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => new { e.Provider, e.ProviderId }).IsUnique(); entity.Property(e => e.ProviderId).IsRequired().HasMaxLength(255); entity.Property(e => e.ProviderEmail).HasMaxLength(255); entity.Property(e => e.ProviderName).HasMaxLength(255); entity.HasOne(e => e.User) .WithMany(u => u.OAuthProviders) .HasForeignKey(e => e.UserId) .OnDelete(DeleteBehavior.Cascade); }); // Seed data modelBuilder.Entity().HasData( new Product { Id = 1, Name = "Sample Product", Price = 9.99M } ); } } }