Add skill management system: implement Skill and PetSkill models, create SkillController, and update ApplicationDbContext for skills

This commit is contained in:
2025-02-02 15:30:48 -03:00
parent 06455db598
commit f234b5d84d
17 changed files with 543 additions and 749 deletions

View File

@@ -12,6 +12,9 @@ namespace PetCompanion.Data
public DbSet<Pet> Pets { get; set; }
public DbSet<PetStats> PetStats { get; set; }
public DbSet<Resources> Resources { get; set; }
public DbSet<Skill> Skills { get; set; }
public DbSet<SkillEffect> SkillEffects { get; set; }
public DbSet<PetSkill> PetSkills { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
@@ -29,6 +32,32 @@ namespace PetCompanion.Data
.HasConversion(
v => v != DateTime.MinValue ? v.ToUniversalTime() : v,
v => v != DateTime.MinValue ? DateTime.SpecifyKind(v, DateTimeKind.Utc) : v);
modelBuilder.Entity<PetSkill>()
.HasOne(ps => ps.Pet)
.WithMany(p => p.Skills)
.HasForeignKey(ps => ps.PetId);
modelBuilder.Entity<PetSkill>()
.HasOne(ps => ps.Skill)
.WithMany(s => s.PetSkills)
.HasForeignKey(ps => ps.SkillId);
modelBuilder.Entity<SkillEffect>()
.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<Skill>().HasData(skill);
foreach (var effect in skill.Effects)
{
modelBuilder.Entity<SkillEffect>().HasData(effect);
}
}
}
}
}