using Microsoft.EntityFrameworkCore; using PetCompanion.Models; namespace PetCompanion.Data { public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions options) : base(options) { } public DbSet Pets { get; set; } public DbSet PetStats { get; set; } public DbSet Resources { get; set; } public DbSet Skills { get; set; } public DbSet SkillEffects { get; set; } public DbSet PetSkills { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // Configure DateTime properties to be stored as UTC modelBuilder.Entity() .Property(p => p.GatherActionSince) .HasConversion( v => v.ToUniversalTime(), v => DateTime.SpecifyKind(v, DateTimeKind.Utc)); modelBuilder.Entity() .Property(p => p.BasicActionCooldown) .HasConversion( v => v != DateTime.MinValue ? v.ToUniversalTime() : v, v => v != DateTime.MinValue ? DateTime.SpecifyKind(v, DateTimeKind.Utc) : v); modelBuilder.Entity() .HasOne(ps => ps.Pet) .WithMany(p => p.Skills) .HasForeignKey(ps => ps.PetId); modelBuilder.Entity() .HasOne(ps => ps.Skill) .WithMany(s => s.PetSkills) .HasForeignKey(ps => ps.SkillId); modelBuilder.Entity() .HasOne(se => se.Skill) .WithMany(s => s.Effects) .HasForeignKey(se => se.SkillId); // Seed initial skills var skills = SkillsData.GetInitialSkills(); foreach (var skill in skills) { modelBuilder.Entity().HasData(skill); foreach (var effect in skill.Effects) { modelBuilder.Entity().HasData(effect); } } } } }