Больше работы над парсингом заклинаний
This commit is contained in:
+59
-90
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
|
||||
namespace Pf2eModel.Migrations
|
||||
{
|
||||
[DbContext(typeof(Pf2eDbContext))]
|
||||
[Migration("20250505114131_1")]
|
||||
[Migration("20250505211157_1")]
|
||||
partial class _1
|
||||
{
|
||||
/// <inheritdoc />
|
||||
@@ -25,6 +25,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "archetype", "class-feature", "class-feat", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_enum", new[] { "unknown", "1", "2", "3", "reaction", "free", "passive", "other", "1-3", "1-2", "2-3", "2/2 rounds", "reaction/1", "reaction/2", "reaction/3", "free/1", "1 minute", "5 minutes", "10 minutes", "30 minutes", "1 hour" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" });
|
||||
@@ -39,9 +40,10 @@ namespace Pf2eModel.Migrations
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "legacy_english", "russian", "legacy", "hobby", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder", "varies", "cuboid", "circle", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "none", "divine", "occult", "arcane", "primal", "elemental", "all" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
@@ -305,19 +307,19 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id")
|
||||
.HasColumnOrder(0);
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<int>("TargetId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("target_id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Md5")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("md5")
|
||||
.HasColumnOrder(3)
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Контроль версии объекта");
|
||||
|
||||
b.Property<string>("Suffix")
|
||||
@@ -325,7 +327,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("suffix")
|
||||
.HasColumnOrder(2)
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта");
|
||||
|
||||
b.HasKey("EntityId", "TargetId")
|
||||
@@ -439,35 +441,15 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<int?>("Actions")
|
||||
.HasColumnType("integer")
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<bool>("IsFreeAction")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_free_action")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<bool>("IsPassive")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_passive")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<bool>("IsReaction")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_reaction")
|
||||
.HasColumnOrder(5);
|
||||
|
||||
b.Property<int?>("MaxActions")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("max_actions")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_actions");
|
||||
@@ -775,8 +757,8 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("spellcasting")
|
||||
.HasColumnOrder(5);
|
||||
|
||||
b.Property<int>("Tradition")
|
||||
.HasColumnType("integer")
|
||||
b.Property<SpellTradition>("Tradition")
|
||||
.HasColumnType("spell_tradition")
|
||||
.HasColumnName("tradition")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
@@ -1263,65 +1245,47 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<bool>("CanHeightening")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("can_heightening")
|
||||
.HasColumnOrder(11);
|
||||
|
||||
b.Property<int>("Cost")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("cost")
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<bool>("Counteraction")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("counteraction")
|
||||
b.Property<int?>("Duration")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("duration")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<string>("Duration")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("duration")
|
||||
.HasColumnOrder(6);
|
||||
b.Property<bool>("IsFocus")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_focus")
|
||||
.HasColumnOrder(5);
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Range")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
b.Property<int>("Range")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("range")
|
||||
.HasColumnOrder(7);
|
||||
|
||||
b.Property<string>("Requirements")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("requirements")
|
||||
.HasColumnOrder(8);
|
||||
|
||||
b.Property<bool>("Sustained")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("sustained")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<string>("Target")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("target")
|
||||
.HasColumnOrder(9);
|
||||
.HasColumnOrder(8);
|
||||
|
||||
b.Property<string>("Time")
|
||||
b.PrimitiveCollection<SpellTradition[]>("Traditions")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("time")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnType("spell_tradition[]")
|
||||
.HasColumnName("traditions")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<string>("Trigger")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("trigger")
|
||||
.HasColumnOrder(7);
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_spells");
|
||||
@@ -1331,30 +1295,36 @@ namespace Pf2eModel.Migrations
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellArea", b =>
|
||||
{
|
||||
b.Property<int>("SpellId")
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("spell_id")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Details")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("details")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("SpellId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("spell_id")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<SpellAreaType>("Type")
|
||||
.HasColumnType("spell_area_type")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("Value")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("value")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.HasKey("SpellId")
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_spell_areas");
|
||||
|
||||
b.HasIndex("SpellId")
|
||||
.HasDatabaseName("ix_spell_areas_spell_id");
|
||||
|
||||
b.ToTable("spell_areas", (string)null);
|
||||
});
|
||||
|
||||
@@ -2109,9 +2079,10 @@ namespace Pf2eModel.Migrations
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellArea", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Structure.Spell", "Spell")
|
||||
.WithOne("SpellArea")
|
||||
.HasForeignKey("Pf2eModel.Model.Structure.SpellRelation.SpellArea", "SpellId")
|
||||
.WithMany("SpellAreas")
|
||||
.HasForeignKey("SpellId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_spell_areas_spells_spell_id");
|
||||
|
||||
b.Navigation("Spell");
|
||||
@@ -2120,7 +2091,7 @@ namespace Pf2eModel.Migrations
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellDamage", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Structure.Spell", "Spell")
|
||||
.WithMany("SpellDamages")
|
||||
.WithMany()
|
||||
.HasForeignKey("SpellId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
@@ -2276,9 +2247,7 @@ namespace Pf2eModel.Migrations
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
|
||||
{
|
||||
b.Navigation("SpellArea");
|
||||
|
||||
b.Navigation("SpellDamages");
|
||||
b.Navigation("SpellAreas");
|
||||
|
||||
b.Navigation("SpellDefenses");
|
||||
|
||||
+22
-20
@@ -15,6 +15,7 @@ namespace Pf2eModel.Migrations
|
||||
{
|
||||
migrationBuilder.AlterDatabase()
|
||||
.Annotation("Npgsql:Enum:action_category", "unknown,archetype,class-feature,class-feat,offensive,defensive,interaction,familiar,army_tactic,army_war_action,kingdom_activity,kingdom_feat,kingdom_feature")
|
||||
.Annotation("Npgsql:Enum:action_enum", "unknown,1,2,3,reaction,free,passive,other,1-3,1-2,2-3,2/2 rounds,reaction/1,reaction/2,reaction/3,free/1,1 minute,5 minutes,10 minutes,30 minutes,1 hour")
|
||||
.Annotation("Npgsql:Enum:ancestry_vision", "normal,low-light-vision,dark-vision")
|
||||
.Annotation("Npgsql:Enum:attribute_values", "free,str,dex,con,int,wis,cha")
|
||||
.Annotation("Npgsql:Enum:class_progression_type", "entity,ancestry_feat,class_feat,general_feat,skill_feat,skill_increase")
|
||||
@@ -29,9 +30,10 @@ namespace Pf2eModel.Migrations
|
||||
.Annotation("Npgsql:Enum:locale_type", "english,legacy_english,russian,legacy,hobby,other")
|
||||
.Annotation("Npgsql:Enum:size", "tiny,small,medium,large")
|
||||
.Annotation("Npgsql:Enum:source_category", "rulebook,adventure-path,lost-omens,adventures,comics,blog-posts,society")
|
||||
.Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder")
|
||||
.Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder,varies,cuboid,circle,other")
|
||||
.Annotation("Npgsql:Enum:spell_damage_category", "persistent,splash")
|
||||
.Annotation("Npgsql:Enum:spell_damage_kinds", "damage,healing,any")
|
||||
.Annotation("Npgsql:Enum:spell_tradition", "none,divine,occult,arcane,primal,elemental,all")
|
||||
.Annotation("Npgsql:Enum:training_stage", "untrained,trained,expert,master,legendary")
|
||||
.Annotation("Npgsql:Enum:trait_type", "regular,class,tradition");
|
||||
|
||||
@@ -133,11 +135,7 @@ namespace Pf2eModel.Migrations
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
actions = table.Column<int>(type: "integer", nullable: true),
|
||||
max_actions = table.Column<int>(type: "integer", nullable: true),
|
||||
is_reaction = table.Column<bool>(type: "boolean", nullable: false),
|
||||
is_free_action = table.Column<bool>(type: "boolean", nullable: false),
|
||||
is_passive = table.Column<bool>(type: "boolean", nullable: false),
|
||||
actions = table.Column<ActionEnum>(type: "action_enum", nullable: false),
|
||||
extra = table.Column<string>(type: "text", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -197,7 +195,7 @@ namespace Pf2eModel.Migrations
|
||||
hp = table.Column<int>(type: "integer", nullable: false),
|
||||
perception = table.Column<int>(type: "integer", nullable: false),
|
||||
spellcasting = table.Column<bool>(type: "boolean", nullable: false),
|
||||
tradition = table.Column<int>(type: "integer", nullable: false),
|
||||
tradition = table.Column<SpellTradition>(type: "spell_tradition", nullable: false),
|
||||
additional_trained_skills = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -301,15 +299,13 @@ namespace Pf2eModel.Migrations
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false),
|
||||
level = table.Column<int>(type: "integer", nullable: false),
|
||||
cost = table.Column<int>(type: "integer", nullable: false),
|
||||
counteraction = table.Column<bool>(type: "boolean", nullable: false),
|
||||
sustained = table.Column<bool>(type: "boolean", nullable: false),
|
||||
duration = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
range = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
requirements = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
target = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
time = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
can_heightening = table.Column<bool>(type: "boolean", nullable: false)
|
||||
actions = table.Column<ActionEnum>(type: "action_enum", nullable: false),
|
||||
duration = table.Column<int>(type: "integer", maxLength: 255, nullable: true),
|
||||
is_focus = table.Column<bool>(type: "boolean", nullable: false),
|
||||
traditions = table.Column<SpellTradition[]>(type: "spell_tradition[]", nullable: false),
|
||||
range = table.Column<int>(type: "integer", nullable: false),
|
||||
trigger = table.Column<string>(type: "jsonb", nullable: true),
|
||||
target = table.Column<string>(type: "jsonb", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@@ -861,14 +857,15 @@ namespace Pf2eModel.Migrations
|
||||
name: "spell_areas",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
spell_id = table.Column<int>(type: "integer", nullable: false),
|
||||
details = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true),
|
||||
type = table.Column<SpellAreaType>(type: "spell_area_type", nullable: false),
|
||||
value = table.Column<int>(type: "integer", nullable: false)
|
||||
details = table.Column<string>(type: "jsonb", maxLength: 255, nullable: true),
|
||||
type = table.Column<SpellAreaType>(type: "spell_area_type", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_spell_areas", x => x.spell_id);
|
||||
table.PrimaryKey("pk_spell_areas", x => x.id);
|
||||
table.ForeignKey(
|
||||
name: "fk_spell_areas_spells_spell_id",
|
||||
column: x => x.spell_id,
|
||||
@@ -1206,6 +1203,11 @@ namespace Pf2eModel.Migrations
|
||||
table: "languages",
|
||||
column: "entity_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_spell_areas_spell_id",
|
||||
table: "spell_areas",
|
||||
column: "spell_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_spell_damages_spell_id",
|
||||
table: "spell_damages",
|
||||
@@ -22,6 +22,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "archetype", "class-feature", "class-feat", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_enum", new[] { "unknown", "1", "2", "3", "reaction", "free", "passive", "other", "1-3", "1-2", "2-3", "2/2 rounds", "reaction/1", "reaction/2", "reaction/3", "free/1", "1 minute", "5 minutes", "10 minutes", "30 minutes", "1 hour" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" });
|
||||
@@ -36,9 +37,10 @@ namespace Pf2eModel.Migrations
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "legacy_english", "russian", "legacy", "hobby", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder", "varies", "cuboid", "circle", "other" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "none", "divine", "occult", "arcane", "primal", "elemental", "all" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
|
||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
@@ -302,19 +304,19 @@ namespace Pf2eModel.Migrations
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id")
|
||||
.HasColumnOrder(0);
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<int>("TargetId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("target_id")
|
||||
.HasColumnOrder(1);
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Md5")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("md5")
|
||||
.HasColumnOrder(3)
|
||||
.HasColumnOrder(5)
|
||||
.HasComment("Контроль версии объекта");
|
||||
|
||||
b.Property<string>("Suffix")
|
||||
@@ -322,7 +324,7 @@ namespace Pf2eModel.Migrations
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("suffix")
|
||||
.HasColumnOrder(2)
|
||||
.HasColumnOrder(4)
|
||||
.HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта");
|
||||
|
||||
b.HasKey("EntityId", "TargetId")
|
||||
@@ -436,35 +438,15 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<int?>("Actions")
|
||||
.HasColumnType("integer")
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(3);
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Extra")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("extra")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<bool>("IsFreeAction")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_free_action")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<bool>("IsPassive")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_passive")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<bool>("IsReaction")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_reaction")
|
||||
.HasColumnOrder(5);
|
||||
|
||||
b.Property<int?>("MaxActions")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("max_actions")
|
||||
.HasColumnOrder(4);
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_actions");
|
||||
@@ -772,8 +754,8 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("spellcasting")
|
||||
.HasColumnOrder(5);
|
||||
|
||||
b.Property<int>("Tradition")
|
||||
.HasColumnType("integer")
|
||||
b.Property<SpellTradition>("Tradition")
|
||||
.HasColumnType("spell_tradition")
|
||||
.HasColumnName("tradition")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
@@ -1260,65 +1242,47 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
b.Property<bool>("CanHeightening")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("can_heightening")
|
||||
.HasColumnOrder(11);
|
||||
|
||||
b.Property<int>("Cost")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("cost")
|
||||
b.Property<ActionEnum>("Actions")
|
||||
.HasColumnType("action_enum")
|
||||
.HasColumnName("actions")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<bool>("Counteraction")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("counteraction")
|
||||
b.Property<int?>("Duration")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("duration")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<string>("Duration")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("duration")
|
||||
.HasColumnOrder(6);
|
||||
b.Property<bool>("IsFocus")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("is_focus")
|
||||
.HasColumnOrder(5);
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("level")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Range")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
b.Property<int>("Range")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("range")
|
||||
.HasColumnOrder(7);
|
||||
|
||||
b.Property<string>("Requirements")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("requirements")
|
||||
.HasColumnOrder(8);
|
||||
|
||||
b.Property<bool>("Sustained")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("sustained")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<string>("Target")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("target")
|
||||
.HasColumnOrder(9);
|
||||
.HasColumnOrder(8);
|
||||
|
||||
b.Property<string>("Time")
|
||||
b.PrimitiveCollection<SpellTradition[]>("Traditions")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("time")
|
||||
.HasColumnOrder(10);
|
||||
.HasColumnType("spell_tradition[]")
|
||||
.HasColumnName("traditions")
|
||||
.HasColumnOrder(6);
|
||||
|
||||
b.Property<string>("Trigger")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("trigger")
|
||||
.HasColumnOrder(7);
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_spells");
|
||||
@@ -1328,30 +1292,36 @@ namespace Pf2eModel.Migrations
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellArea", b =>
|
||||
{
|
||||
b.Property<int>("SpellId")
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("spell_id")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Details")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("details")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("SpellId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("spell_id")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<SpellAreaType>("Type")
|
||||
.HasColumnType("spell_area_type")
|
||||
.HasColumnName("type")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.Property<int>("Value")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("value")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.HasKey("SpellId")
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_spell_areas");
|
||||
|
||||
b.HasIndex("SpellId")
|
||||
.HasDatabaseName("ix_spell_areas_spell_id");
|
||||
|
||||
b.ToTable("spell_areas", (string)null);
|
||||
});
|
||||
|
||||
@@ -2106,9 +2076,10 @@ namespace Pf2eModel.Migrations
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellArea", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Structure.Spell", "Spell")
|
||||
.WithOne("SpellArea")
|
||||
.HasForeignKey("Pf2eModel.Model.Structure.SpellRelation.SpellArea", "SpellId")
|
||||
.WithMany("SpellAreas")
|
||||
.HasForeignKey("SpellId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_spell_areas_spells_spell_id");
|
||||
|
||||
b.Navigation("Spell");
|
||||
@@ -2117,7 +2088,7 @@ namespace Pf2eModel.Migrations
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellDamage", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Structure.Spell", "Spell")
|
||||
.WithMany("SpellDamages")
|
||||
.WithMany()
|
||||
.HasForeignKey("SpellId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
@@ -2273,9 +2244,7 @@ namespace Pf2eModel.Migrations
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
|
||||
{
|
||||
b.Navigation("SpellArea");
|
||||
|
||||
b.Navigation("SpellDamages");
|
||||
b.Navigation("SpellAreas");
|
||||
|
||||
b.Navigation("SpellDefenses");
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@ public enum SpellTradition
|
||||
[PgName("primal")]
|
||||
Primal,
|
||||
|
||||
[PgName("elemental")]
|
||||
Elemental,
|
||||
|
||||
[PgName("all")]
|
||||
All,
|
||||
}
|
||||
|
||||
@@ -24,20 +24,31 @@ public class Spell : IEntity
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Other;
|
||||
|
||||
[Column(Order = 4)]
|
||||
[MaxLength(255)]
|
||||
public int? Duration { get; set; } = null;
|
||||
|
||||
[Column(Order = 5)]
|
||||
public bool IsFocus { get; set; }
|
||||
|
||||
// ---
|
||||
[Column(Order = 6)]
|
||||
public SpellTradition[] Traditions { get; set; } = [];
|
||||
|
||||
[Column(Order = 6)]
|
||||
public int Range { get; set; }
|
||||
|
||||
[Column(Order = 7)]
|
||||
public LocaleString? Trigger { get; set; } = null;
|
||||
|
||||
[Column(Order = 8)]
|
||||
public LocaleString? Target { get; set; } = null;
|
||||
|
||||
/*
|
||||
[Column(Order = 4)]
|
||||
public bool Counteraction { get; set; }
|
||||
|
||||
[Column(Order = 5)]
|
||||
public bool Sustained { get; set; }
|
||||
|
||||
[Column(Order = 6)]
|
||||
[MaxLength(255)]
|
||||
public string Duration { get; set; } = null!;
|
||||
|
||||
[Column(Order = 7)]
|
||||
[MaxLength(255)]
|
||||
public string Range { get; set; } = null!;
|
||||
@@ -56,14 +67,11 @@ public class Spell : IEntity
|
||||
|
||||
[Column(Order = 11)]
|
||||
public bool CanHeightening { get; set; }
|
||||
|
||||
// ---
|
||||
*/
|
||||
|
||||
public virtual ICollection<SpellArea> SpellAreas { get; set; } = [];
|
||||
|
||||
public virtual SpellRitual? SpellRitual { get; set; }
|
||||
|
||||
public virtual ICollection<SpellDamage> SpellDamages { get; set; } = new List<SpellDamage>();
|
||||
|
||||
public virtual ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure.SpellRelation;
|
||||
@@ -7,7 +8,7 @@ namespace Pf2eModel.Model.Structure.SpellRelation;
|
||||
public class SpellArea
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
public int Id { get; set; }
|
||||
|
||||
@@ -16,13 +17,10 @@ public class SpellArea
|
||||
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
public string? Details { get; set; }
|
||||
public LocaleString? Details { get; set; }
|
||||
|
||||
[Column(Order = 4)]
|
||||
public SpellAreaType Type { get; set; }
|
||||
|
||||
[Column(Order = 5)]
|
||||
public int Value { get; set; }
|
||||
|
||||
public virtual Spell Spell { get; set; } = null!;
|
||||
}
|
||||
|
||||
@@ -123,6 +123,7 @@ public partial class Pf2eDbContext : DbContext
|
||||
builder =>
|
||||
{
|
||||
builder
|
||||
.MapEnum<ActionEnum>()
|
||||
.MapEnum<EntityType>()
|
||||
.MapEnum<EntityRarity>()
|
||||
.MapEnum<LocaleType>()
|
||||
@@ -140,6 +141,7 @@ public partial class Pf2eDbContext : DbContext
|
||||
.MapEnum<SpellAreaType>()
|
||||
.MapEnum<SpellDamageCategory>()
|
||||
.MapEnum<SpellDamageKinds>()
|
||||
.MapEnum<SpellTradition>()
|
||||
.MapEnum<AttributeValues>()
|
||||
.MapEnum<TrainingStage>()
|
||||
.MapEnum<SourceCategory>();
|
||||
|
||||
@@ -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 => { });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user