Работа над импортом заклинаний
This commit is contained in:
+102
-10
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
|
||||
namespace Pf2eModel.Migrations
|
||||
{
|
||||
[DbContext(typeof(Pf2eDbContext))]
|
||||
[Migration("20250428065903_1")]
|
||||
[Migration("20250505114131_1")]
|
||||
partial class _1
|
||||
{
|
||||
/// <inheritdoc />
|
||||
@@ -417,8 +417,7 @@ namespace Pf2eModel.Migrations
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
@@ -873,16 +872,10 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("class_id")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<TrainingStage>("Stage")
|
||||
.HasColumnType("training_stage")
|
||||
.HasColumnName("stage")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<int?>("TrainingId")
|
||||
.HasColumnType("integer")
|
||||
@@ -901,6 +894,62 @@ namespace Pf2eModel.Migrations
|
||||
b.ToTable("class_trainings", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassProvidedEntities", b =>
|
||||
{
|
||||
b.Property<int>("SubclassId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("subclass_id");
|
||||
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id");
|
||||
|
||||
b.HasKey("SubclassId", "EntityId")
|
||||
.HasName("pk_subclass_provided_entities");
|
||||
|
||||
b.HasIndex("EntityId")
|
||||
.HasDatabaseName("ix_subclass_provided_entities_entity_id");
|
||||
|
||||
b.ToTable("subclass_provided_entities", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassTrainings", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<TrainingStage>("Stage")
|
||||
.HasColumnType("training_stage")
|
||||
.HasColumnName("stage")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<int>("SubclassId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("subclass_id")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<int>("TrainingId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("training_id")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_subclass_trainings");
|
||||
|
||||
b.HasIndex("SubclassId")
|
||||
.HasDatabaseName("ix_subclass_trainings_subclass_id");
|
||||
|
||||
b.HasIndex("TrainingId")
|
||||
.HasDatabaseName("ix_subclass_trainings_training_id");
|
||||
|
||||
b.ToTable("subclass_trainings", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Condition", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -1870,6 +1919,44 @@ namespace Pf2eModel.Migrations
|
||||
b.Navigation("Training");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassProvidedEntities", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Base.Entity", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("EntityId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_provided_entities_entities_entity_id");
|
||||
|
||||
b.HasOne("Pf2eModel.Model.Structure.Subclass", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SubclassId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_provided_entities_subclasses_subclass_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassTrainings", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Structure.Subclass", "Subclass")
|
||||
.WithMany("Trainings")
|
||||
.HasForeignKey("SubclassId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_trainings_subclasses_subclass_id");
|
||||
|
||||
b.HasOne("Pf2eModel.Model.Common.Training", "Training")
|
||||
.WithMany()
|
||||
.HasForeignKey("TrainingId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_trainings_trainings_training_id");
|
||||
|
||||
b.Navigation("Subclass");
|
||||
|
||||
b.Navigation("Training");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Condition", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||
@@ -2198,6 +2285,11 @@ namespace Pf2eModel.Migrations
|
||||
b.Navigation("SpellRitual");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Subclass", b =>
|
||||
{
|
||||
b.Navigation("Trainings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SubclassGroup", b =>
|
||||
{
|
||||
b.Navigation("Subclasses");
|
||||
+78
-7
@@ -120,7 +120,7 @@ namespace Pf2eModel.Migrations
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
||||
name = table.Column<string>(type: "jsonb", nullable: false),
|
||||
type = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -633,7 +633,6 @@ namespace Pf2eModel.Migrations
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
class_id = table.Column<int>(type: "integer", nullable: false),
|
||||
training_id = table.Column<int>(type: "integer", nullable: true),
|
||||
name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true),
|
||||
stage = table.Column<TrainingStage>(type: "training_stage", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
@@ -1020,6 +1019,57 @@ namespace Pf2eModel.Migrations
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "subclass_provided_entities",
|
||||
columns: table => new
|
||||
{
|
||||
subclass_id = table.Column<int>(type: "integer", nullable: false),
|
||||
entity_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_subclass_provided_entities", x => new { x.subclass_id, x.entity_id });
|
||||
table.ForeignKey(
|
||||
name: "fk_subclass_provided_entities_entities_entity_id",
|
||||
column: x => x.entity_id,
|
||||
principalTable: "entities",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_subclass_provided_entities_subclasses_subclass_id",
|
||||
column: x => x.subclass_id,
|
||||
principalTable: "subclasses",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "subclass_trainings",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
subclass_id = table.Column<int>(type: "integer", nullable: false),
|
||||
training_id = table.Column<int>(type: "integer", nullable: false),
|
||||
stage = table.Column<TrainingStage>(type: "training_stage", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("pk_subclass_trainings", x => x.id);
|
||||
table.ForeignKey(
|
||||
name: "fk_subclass_trainings_subclasses_subclass_id",
|
||||
column: x => x.subclass_id,
|
||||
principalTable: "subclasses",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "fk_subclass_trainings_trainings_training_id",
|
||||
column: x => x.training_id,
|
||||
principalTable: "trainings",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_ancestry_boosts_ancestry_id",
|
||||
table: "ancestry_boosts",
|
||||
@@ -1171,6 +1221,21 @@ namespace Pf2eModel.Migrations
|
||||
table: "subclass_groups",
|
||||
column: "class_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_subclass_provided_entities_entity_id",
|
||||
table: "subclass_provided_entities",
|
||||
column: "entity_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_subclass_trainings_subclass_id",
|
||||
table: "subclass_trainings",
|
||||
column: "subclass_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_subclass_trainings_training_id",
|
||||
table: "subclass_trainings",
|
||||
column: "training_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "ix_subclasses_group_id",
|
||||
table: "subclasses",
|
||||
@@ -1268,7 +1333,10 @@ namespace Pf2eModel.Migrations
|
||||
name: "spell_rituals");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "subclasses");
|
||||
name: "subclass_provided_entities");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "subclass_trainings");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "languages");
|
||||
@@ -1279,9 +1347,6 @@ namespace Pf2eModel.Migrations
|
||||
migrationBuilder.DropTable(
|
||||
name: "backgrounds");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "trainings");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "deities");
|
||||
|
||||
@@ -1304,11 +1369,17 @@ namespace Pf2eModel.Migrations
|
||||
name: "spells");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "subclass_groups");
|
||||
name: "subclasses");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "trainings");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "feats");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "subclass_groups");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "classes");
|
||||
|
||||
@@ -414,8 +414,7 @@ namespace Pf2eModel.Migrations
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
@@ -870,16 +869,10 @@ namespace Pf2eModel.Migrations
|
||||
.HasColumnName("class_id")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasMaxLength(255)
|
||||
.HasColumnType("character varying(255)")
|
||||
.HasColumnName("name")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<TrainingStage>("Stage")
|
||||
.HasColumnType("training_stage")
|
||||
.HasColumnName("stage")
|
||||
.HasColumnOrder(5);
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<int?>("TrainingId")
|
||||
.HasColumnType("integer")
|
||||
@@ -898,6 +891,62 @@ namespace Pf2eModel.Migrations
|
||||
b.ToTable("class_trainings", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassProvidedEntities", b =>
|
||||
{
|
||||
b.Property<int>("SubclassId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("subclass_id");
|
||||
|
||||
b.Property<int>("EntityId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("entity_id");
|
||||
|
||||
b.HasKey("SubclassId", "EntityId")
|
||||
.HasName("pk_subclass_provided_entities");
|
||||
|
||||
b.HasIndex("EntityId")
|
||||
.HasDatabaseName("ix_subclass_provided_entities_entity_id");
|
||||
|
||||
b.ToTable("subclass_provided_entities", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassTrainings", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id")
|
||||
.HasColumnOrder(1);
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<TrainingStage>("Stage")
|
||||
.HasColumnType("training_stage")
|
||||
.HasColumnName("stage")
|
||||
.HasColumnOrder(4);
|
||||
|
||||
b.Property<int>("SubclassId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("subclass_id")
|
||||
.HasColumnOrder(2);
|
||||
|
||||
b.Property<int>("TrainingId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("training_id")
|
||||
.HasColumnOrder(3);
|
||||
|
||||
b.HasKey("Id")
|
||||
.HasName("pk_subclass_trainings");
|
||||
|
||||
b.HasIndex("SubclassId")
|
||||
.HasDatabaseName("ix_subclass_trainings_subclass_id");
|
||||
|
||||
b.HasIndex("TrainingId")
|
||||
.HasDatabaseName("ix_subclass_trainings_training_id");
|
||||
|
||||
b.ToTable("subclass_trainings", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Condition", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -1867,6 +1916,44 @@ namespace Pf2eModel.Migrations
|
||||
b.Navigation("Training");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassProvidedEntities", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Base.Entity", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("EntityId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_provided_entities_entities_entity_id");
|
||||
|
||||
b.HasOne("Pf2eModel.Model.Structure.Subclass", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SubclassId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_provided_entities_subclasses_subclass_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.ClassRelation.SubclassTrainings", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Structure.Subclass", "Subclass")
|
||||
.WithMany("Trainings")
|
||||
.HasForeignKey("SubclassId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_trainings_subclasses_subclass_id");
|
||||
|
||||
b.HasOne("Pf2eModel.Model.Common.Training", "Training")
|
||||
.WithMany()
|
||||
.HasForeignKey("TrainingId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired()
|
||||
.HasConstraintName("fk_subclass_trainings_trainings_training_id");
|
||||
|
||||
b.Navigation("Subclass");
|
||||
|
||||
b.Navigation("Training");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Condition", b =>
|
||||
{
|
||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||
@@ -2195,6 +2282,11 @@ namespace Pf2eModel.Migrations
|
||||
b.Navigation("SpellRitual");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Subclass", b =>
|
||||
{
|
||||
b.Navigation("Trainings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Pf2eModel.Model.Structure.SubclassGroup", b =>
|
||||
{
|
||||
b.Navigation("Subclasses");
|
||||
|
||||
@@ -7,18 +7,24 @@ namespace Pf2eModel.Model.Base.Targets;
|
||||
[PrimaryKey(nameof(EntityId), nameof(TargetId))]
|
||||
public class EntityExternal
|
||||
{
|
||||
[Column(Order = 0)]
|
||||
[Column(Order = 1)]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
[Column(Order = 1)]
|
||||
[Column(Order = 2)]
|
||||
public int TargetId { get; set; }
|
||||
|
||||
[Column(Order = 2)]
|
||||
/*
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
public string ExternalId { get; set; } = "";
|
||||
*/
|
||||
|
||||
[Column(Order = 4)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Часть URL до объекта. Для источников Foundry - полный UUID объекта")]
|
||||
public string Suffix { get; set; } = "";
|
||||
|
||||
[Column(Order = 3)]
|
||||
[Column(Order = 5)]
|
||||
[MaxLength(32)]
|
||||
[Comment("Контроль версии объекта")]
|
||||
public string Md5 { get; set; } = null!;
|
||||
|
||||
@@ -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.Common;
|
||||
@@ -12,8 +13,7 @@ public class Training
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column(Order = 2)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
public string Name { get; set; } = null!;
|
||||
public LocaleString Name { get; set; } = [];
|
||||
|
||||
[Column(Order = 3)]
|
||||
public TrainingType Type { get; set; }
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
using NpgsqlTypes;
|
||||
|
||||
namespace Pf2eModel.Model.Enum;
|
||||
|
||||
public enum ActionEnum
|
||||
{
|
||||
[PgName("unknown")]
|
||||
Unknown,
|
||||
|
||||
[PgName("1")]
|
||||
SingleAction,
|
||||
|
||||
[PgName("2")]
|
||||
TwoActions,
|
||||
|
||||
[PgName("3")]
|
||||
ThreeActions,
|
||||
|
||||
[PgName("reaction")]
|
||||
Reaction,
|
||||
|
||||
[PgName("free")]
|
||||
FreeAction,
|
||||
|
||||
[PgName("passive")]
|
||||
Passive,
|
||||
|
||||
[PgName("other")]
|
||||
Other,
|
||||
|
||||
[PgName("1-3")]
|
||||
SingleActionToThreeActions,
|
||||
|
||||
[PgName("1-2")]
|
||||
SingleActionToTwoActions,
|
||||
|
||||
[PgName("2-3")]
|
||||
TwoActionsToThreeActions,
|
||||
|
||||
[PgName("2/2 rounds")]
|
||||
TwoActionsToTwoRounds,
|
||||
|
||||
[PgName("reaction/1")]
|
||||
ReactionOrOneAction,
|
||||
|
||||
[PgName("reaction/2")]
|
||||
ReactionOrTwoAction,
|
||||
|
||||
[PgName("reaction/3")]
|
||||
ReactionOrThreeAction,
|
||||
|
||||
[PgName("free/1")]
|
||||
FreeActionOrOneAction,
|
||||
|
||||
[PgName("1 minute")]
|
||||
OneMinute,
|
||||
|
||||
[PgName("5 minutes")]
|
||||
FiveMinutes,
|
||||
|
||||
[PgName("10 minutes")]
|
||||
TenMinutes,
|
||||
|
||||
[PgName("30 minutes")]
|
||||
ThirtyMinutes,
|
||||
|
||||
[PgName("1 hour")]
|
||||
OneHour,
|
||||
}
|
||||
@@ -24,4 +24,16 @@ public enum SpellAreaType
|
||||
|
||||
[PgName("cylinder")]
|
||||
Cylinder,
|
||||
|
||||
[PgName("varies")]
|
||||
Varies,
|
||||
|
||||
[PgName("cuboid")]
|
||||
Cuboid,
|
||||
|
||||
[PgName("circle")]
|
||||
Circle,
|
||||
|
||||
[PgName("other")]
|
||||
Other,
|
||||
}
|
||||
|
||||
@@ -12,22 +12,10 @@ public class Action : IEntity
|
||||
[Column(Order = 1)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column(Order = 2)]
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Unknown;
|
||||
|
||||
[Column(Order = 3)]
|
||||
public int? Actions { get; set; } = null;
|
||||
|
||||
[Column(Order = 4)]
|
||||
public int? MaxActions { get; set; } = null;
|
||||
|
||||
[Column(Order = 5)]
|
||||
public bool IsReaction { get; set; } = false;
|
||||
|
||||
[Column(Order = 6)]
|
||||
public bool IsFreeAction { get; set; } = false;
|
||||
|
||||
[Column(Order = 6)]
|
||||
public bool IsPassive { get; set; } = false;
|
||||
|
||||
[Column(Order = 6)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
public string? Extra { get; set; }
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
namespace Pf2eModel.Model.Structure.ArchetypeRelation;
|
||||
|
||||
[PrimaryKey(nameof(ArchetypeId), nameof(FeatId))]
|
||||
internal class ArchetypeFeats
|
||||
public class ArchetypeFeats
|
||||
{
|
||||
public int ArchetypeId { get; set; }
|
||||
|
||||
|
||||
@@ -20,10 +20,6 @@ public class ClassTraining
|
||||
public int? TrainingId { get; set; }
|
||||
|
||||
[Column(Order = 4)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
public string? Name { get; set; }
|
||||
|
||||
[Column(Order = 5)]
|
||||
public TrainingStage Stage { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2eModel.Model.Structure.ClassRelation;
|
||||
|
||||
[PrimaryKey(nameof(SubclassId), nameof(EntityId))]
|
||||
public class SubclassProvidedEntities
|
||||
{
|
||||
public int SubclassId { get; set; }
|
||||
|
||||
public int EntityId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Pf2eModel.Model.Common;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eModel.Model.Structure.ClassRelation;
|
||||
|
||||
public class SubclassTrainings
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column(Order = 2)]
|
||||
public int SubclassId { get; set; }
|
||||
|
||||
[Column(Order = 3)]
|
||||
public int TrainingId { get; set; }
|
||||
|
||||
[Column(Order = 4)]
|
||||
public TrainingStage Stage { get; set; } = TrainingStage.Trained;
|
||||
|
||||
public Subclass Subclass { get; set; } = null!;
|
||||
|
||||
public Training Training { get; set; } = null!;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure.SpellRelation;
|
||||
|
||||
@@ -20,7 +21,12 @@ public class Spell : IEntity
|
||||
public int Level { get; set; }
|
||||
|
||||
[Column(Order = 3)]
|
||||
public int Cost { get; set; }
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Other;
|
||||
|
||||
[Column(Order = 4)]
|
||||
public bool IsFocus { get; set; }
|
||||
|
||||
// ---
|
||||
|
||||
[Column(Order = 4)]
|
||||
public bool Counteraction { get; set; }
|
||||
@@ -51,7 +57,9 @@ public class Spell : IEntity
|
||||
[Column(Order = 11)]
|
||||
public bool CanHeightening { get; set; }
|
||||
|
||||
public virtual SpellArea? SpellArea { get; set; }
|
||||
// ---
|
||||
|
||||
public virtual ICollection<SpellArea> SpellAreas { get; set; } = [];
|
||||
|
||||
public virtual SpellRitual? SpellRitual { get; set; }
|
||||
|
||||
|
||||
@@ -9,16 +9,19 @@ public class SpellArea
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
public int SpellId { get; set; }
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column(Order = 2)]
|
||||
public int SpellId { get; set; }
|
||||
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
public string? Details { get; set; }
|
||||
|
||||
[Column(Order = 3)]
|
||||
[Column(Order = 4)]
|
||||
public SpellAreaType Type { get; set; }
|
||||
|
||||
[Column(Order = 4)]
|
||||
[Column(Order = 5)]
|
||||
public int Value { get; set; }
|
||||
|
||||
public virtual Spell Spell { get; set; } = null!;
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure.ClassRelation;
|
||||
|
||||
namespace Pf2eModel.Model.Structure;
|
||||
|
||||
@@ -26,4 +27,8 @@ public class Subclass : IEntity
|
||||
[Column(Order = 4)]
|
||||
// ReSharper disable once EntityFramework.ModelValidation.UnlimitedStringLength
|
||||
public string Extra { get; set; } = "{}";
|
||||
|
||||
public virtual ICollection<Entity> Entities { get; set; } = [];
|
||||
|
||||
public virtual ICollection<SubclassTrainings> Trainings { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -159,7 +159,10 @@ public partial class Pf2eDbContext
|
||||
|
||||
modelBuilder.Entity<Language>(entity => { });
|
||||
|
||||
modelBuilder.Entity<Training>(entity => { });
|
||||
modelBuilder.Entity<Training>(entity =>
|
||||
{
|
||||
BindLocaleString(entity, t => t.Name);
|
||||
});
|
||||
}
|
||||
|
||||
private void DefineStructure(ModelBuilder modelBuilder)
|
||||
@@ -331,6 +334,28 @@ public partial class Pf2eDbContext
|
||||
.WithMany(g => g.Subclasses)
|
||||
.HasForeignKey(s => s.GroupId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity
|
||||
.HasMany(e => e.Entities)
|
||||
.WithMany()
|
||||
.UsingEntity<SubclassProvidedEntities>(
|
||||
l => l.HasOne<Entity>().WithMany().HasForeignKey(se => se.EntityId),
|
||||
r => r.HasOne<Subclass>().WithMany().HasForeignKey(se => se.SubclassId)
|
||||
);
|
||||
|
||||
entity
|
||||
.HasMany(e => e.Trainings)
|
||||
.WithOne(t => t.Subclass)
|
||||
.HasForeignKey(t => t.SubclassId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
modelBuilder.Entity<SubclassTrainings>(entity =>
|
||||
{
|
||||
entity
|
||||
.HasOne(d => d.Subclass)
|
||||
.WithMany(p => p.Trainings)
|
||||
.HasForeignKey(d => d.SubclassId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
// Condition
|
||||
@@ -413,11 +438,10 @@ public partial class Pf2eDbContext
|
||||
BindEntity(entity);
|
||||
|
||||
entity
|
||||
.HasOne(e => e.SpellArea)
|
||||
.HasMany(e => e.SpellAreas)
|
||||
.WithOne(e => e.Spell)
|
||||
.HasForeignKey<SpellArea>(e => e.SpellId)
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired(false);
|
||||
.HasForeignKey(e => e.SpellId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
entity
|
||||
.HasOne(e => e.SpellRitual)
|
||||
|
||||
Reference in New Issue
Block a user