Больше работы над парсингом заклинаний

This commit is contained in:
2025-05-06 01:23:34 +04:00
parent c1b70a12eb
commit 5693fa8ce8
13 changed files with 279 additions and 239 deletions
+13 -17
View File
@@ -46,26 +46,22 @@ public partial class Pf2eDbContext
private void BindLocaleString<T>(
EntityTypeBuilder<T> entity,
Expression<Func<T, LocaleString>> func
Expression<Func<T, LocaleString?>> func,
bool required = true
)
where T : class
{
/*
entity.OwnsMany(func, d =>
{
d.ToJson();
});
*/
entity
.Property(func)
.HasConversion(v => v.Serialize(), v => LocaleString.Deserialize(v))
.HasColumnType("jsonb");
.HasColumnType("jsonb")
.IsRequired(required);
}
private void DefineEnums(ModelBuilder modelBuilder)
{
modelBuilder
.HasPostgresEnum<ActionEnum>()
.HasPostgresEnum<EntityType>()
.HasPostgresEnum<EntityRarity>()
.HasPostgresEnum<LocaleType>()
@@ -83,6 +79,7 @@ public partial class Pf2eDbContext
.HasPostgresEnum<SpellAreaType>()
.HasPostgresEnum<SpellDamageCategory>()
.HasPostgresEnum<SpellDamageKinds>()
.HasPostgresEnum<SpellTradition>()
.HasPostgresEnum<AttributeValues>()
.HasPostgresEnum<TrainingStage>()
.HasPostgresEnum<SourceCategory>();
@@ -437,6 +434,9 @@ public partial class Pf2eDbContext
{
BindEntity(entity);
BindLocaleString(entity, s => s.Trigger, false);
BindLocaleString(entity, s => s.Target, false);
entity
.HasMany(e => e.SpellAreas)
.WithOne(e => e.Spell)
@@ -450,20 +450,16 @@ public partial class Pf2eDbContext
.OnDelete(DeleteBehavior.Cascade)
.IsRequired(false);
entity
.HasMany(e => e.SpellDamages)
.WithOne(e => e.Spell)
.HasForeignKey(e => e.SpellId)
.OnDelete(DeleteBehavior.Cascade);
entity
.HasMany(e => e.SpellDefenses)
.WithOne(e => e.Spell)
.HasForeignKey(e => e.SpellId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<SpellArea>(entity => { });
modelBuilder.Entity<SpellDamage>(entity => { });
modelBuilder.Entity<SpellArea>(entity =>
{
BindLocaleString(entity, a => a.Details, false);
});
modelBuilder.Entity<SpellDefense>(entity => { });
modelBuilder.Entity<SpellRitual>(entity => { });