diff --git a/Pf2eModel/Migrations/20250418160209_1.Designer.cs b/Pf2eModel/Migrations/20250418174520_1.Designer.cs
similarity index 98%
rename from Pf2eModel/Migrations/20250418160209_1.Designer.cs
rename to Pf2eModel/Migrations/20250418174520_1.Designer.cs
index 802ae5f..7f76cbf 100644
--- a/Pf2eModel/Migrations/20250418160209_1.Designer.cs
+++ b/Pf2eModel/Migrations/20250418174520_1.Designer.cs
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
namespace Pf2eModel.Migrations
{
[DbContext(typeof(Pf2eDbContext))]
- [Migration("20250418160209_1")]
+ [Migration("20250418174520_1")]
partial class _1
{
///
@@ -35,7 +35,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "none", "heal", "harm", "any" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "holy", "unholy", "any" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell" });
+ NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell", "language" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestryfeature", "classfeature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign_feature" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
@@ -425,41 +425,6 @@ namespace Pf2eModel.Migrations
b.ToTable("frequencies", (string)null);
});
- modelBuilder.Entity("Pf2eModel.Model.Common.Language", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(2);
-
- b.Property("Rarity")
- .HasColumnType("entity_rarity")
- .HasColumnName("rarity")
- .HasColumnOrder(4);
-
- b.Property("Slug")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("slug")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_languages");
-
- b.ToTable("languages", (string)null);
- });
-
modelBuilder.Entity("Pf2eModel.Model.Common.Training", b =>
{
b.Property("Id")
@@ -1186,6 +1151,29 @@ namespace Pf2eModel.Migrations
b.ToTable("heritages", (string)null);
});
+ modelBuilder.Entity("Pf2eModel.Model.Structure.Language", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasColumnOrder(1);
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("EntityId")
+ .HasColumnType("integer")
+ .HasColumnName("entity_id");
+
+ b.HasKey("Id")
+ .HasName("pk_languages");
+
+ b.HasIndex("EntityId")
+ .HasDatabaseName("ix_languages_entity_id");
+
+ b.ToTable("languages", (string)null);
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.Property("Id")
@@ -1628,7 +1616,7 @@ namespace Pf2eModel.Migrations
.IsRequired()
.HasConstraintName("fk_ancestry_languages_ancestries_ancestry_id");
- b.HasOne("Pf2eModel.Model.Common.Language", "Language")
+ b.HasOne("Pf2eModel.Model.Structure.Language", "Language")
.WithMany()
.HasForeignKey("LanguageId")
.OnDelete(DeleteBehavior.Cascade)
@@ -1895,6 +1883,18 @@ namespace Pf2eModel.Migrations
b.Navigation("Entity");
});
+ modelBuilder.Entity("Pf2eModel.Model.Structure.Language", b =>
+ {
+ b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
+ .WithMany()
+ .HasForeignKey("EntityId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_languages_entities_entity_id");
+
+ b.Navigation("Entity");
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
diff --git a/Pf2eModel/Migrations/20250418160209_1.cs b/Pf2eModel/Migrations/20250418174520_1.cs
similarity index 98%
rename from Pf2eModel/Migrations/20250418160209_1.cs
rename to Pf2eModel/Migrations/20250418174520_1.cs
index c494f23..fdf01b4 100644
--- a/Pf2eModel/Migrations/20250418160209_1.cs
+++ b/Pf2eModel/Migrations/20250418174520_1.cs
@@ -25,7 +25,7 @@ namespace Pf2eModel.Migrations
.Annotation("Npgsql:Enum:deity_fonts", "none,heal,harm,any")
.Annotation("Npgsql:Enum:deity_sanctification", "holy,unholy,any")
.Annotation("Npgsql:Enum:entity_rarity", "common,uncommon,rare,unique")
- .Annotation("Npgsql:Enum:entity_type", "unknown,trait,action,ancestry,background,backpack,campaign_feature,class,condition,deity,feat,heritage,spell")
+ .Annotation("Npgsql:Enum:entity_type", "unknown,trait,action,ancestry,background,backpack,campaign_feature,class,condition,deity,feat,heritage,spell,language")
.Annotation("Npgsql:Enum:feat_action_type", "passive,action,reaction,free")
.Annotation("Npgsql:Enum:feat_category", "ancestryfeature,classfeature,calling,class,skill,general,ancestry,bonus,deityboon,curse,pfsboon,campaign_feature")
.Annotation("Npgsql:Enum:size", "tiny,small,medium,large")
@@ -99,21 +99,6 @@ namespace Pf2eModel.Migrations
table.PrimaryKey("pk_keywords", x => x.id);
});
- migrationBuilder.CreateTable(
- name: "languages",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- slug = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- rarity = table.Column(type: "entity_rarity", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_languages", x => x.id);
- });
-
migrationBuilder.CreateTable(
name: "sources",
columns: table => new
@@ -310,6 +295,25 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
+ migrationBuilder.CreateTable(
+ name: "languages",
+ columns: table => new
+ {
+ id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ entity_id = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("pk_languages", x => x.id);
+ table.ForeignKey(
+ name: "fk_languages_entities_entity_id",
+ column: x => x.entity_id,
+ principalTable: "entities",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
migrationBuilder.CreateTable(
name: "spells",
columns: table => new
@@ -497,31 +501,6 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
- migrationBuilder.CreateTable(
- name: "ancestry_languages",
- columns: table => new
- {
- ancestry_id = table.Column(type: "integer", nullable: false),
- language_id = table.Column(type: "integer", nullable: false),
- is_additional = table.Column(type: "boolean", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_ancestry_languages", x => new { x.ancestry_id, x.language_id });
- table.ForeignKey(
- name: "fk_ancestry_languages_ancestries_ancestry_id",
- column: x => x.ancestry_id,
- principalTable: "ancestries",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "fk_ancestry_languages_languages_language_id",
- column: x => x.language_id,
- principalTable: "languages",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
migrationBuilder.CreateTable(
name: "heritages",
columns: table => new
@@ -795,6 +774,31 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
+ migrationBuilder.CreateTable(
+ name: "ancestry_languages",
+ columns: table => new
+ {
+ ancestry_id = table.Column(type: "integer", nullable: false),
+ language_id = table.Column(type: "integer", nullable: false),
+ is_additional = table.Column(type: "boolean", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("pk_ancestry_languages", x => new { x.ancestry_id, x.language_id });
+ table.ForeignKey(
+ name: "fk_ancestry_languages_ancestries_ancestry_id",
+ column: x => x.ancestry_id,
+ principalTable: "ancestries",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "fk_ancestry_languages_languages_language_id",
+ column: x => x.language_id,
+ principalTable: "languages",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
migrationBuilder.CreateTable(
name: "deity_spells",
columns: table => new
@@ -1054,6 +1058,11 @@ namespace Pf2eModel.Migrations
table: "keyword_aliases",
column: "keyword_id");
+ migrationBuilder.CreateIndex(
+ name: "ix_languages_entity_id",
+ table: "languages",
+ column: "entity_id");
+
migrationBuilder.CreateIndex(
name: "ix_spell_damages_spell_id",
table: "spell_damages",
diff --git a/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs b/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs
index d5cadec..825fbd2 100644
--- a/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs
+++ b/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs
@@ -32,7 +32,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "none", "heal", "harm", "any" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "holy", "unholy", "any" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell" });
+ NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell", "language" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestryfeature", "classfeature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign_feature" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
@@ -422,41 +422,6 @@ namespace Pf2eModel.Migrations
b.ToTable("frequencies", (string)null);
});
- modelBuilder.Entity("Pf2eModel.Model.Common.Language", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(2);
-
- b.Property("Rarity")
- .HasColumnType("entity_rarity")
- .HasColumnName("rarity")
- .HasColumnOrder(4);
-
- b.Property("Slug")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("slug")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_languages");
-
- b.ToTable("languages", (string)null);
- });
-
modelBuilder.Entity("Pf2eModel.Model.Common.Training", b =>
{
b.Property("Id")
@@ -1183,6 +1148,29 @@ namespace Pf2eModel.Migrations
b.ToTable("heritages", (string)null);
});
+ modelBuilder.Entity("Pf2eModel.Model.Structure.Language", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasColumnOrder(1);
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("EntityId")
+ .HasColumnType("integer")
+ .HasColumnName("entity_id");
+
+ b.HasKey("Id")
+ .HasName("pk_languages");
+
+ b.HasIndex("EntityId")
+ .HasDatabaseName("ix_languages_entity_id");
+
+ b.ToTable("languages", (string)null);
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.Property("Id")
@@ -1625,7 +1613,7 @@ namespace Pf2eModel.Migrations
.IsRequired()
.HasConstraintName("fk_ancestry_languages_ancestries_ancestry_id");
- b.HasOne("Pf2eModel.Model.Common.Language", "Language")
+ b.HasOne("Pf2eModel.Model.Structure.Language", "Language")
.WithMany()
.HasForeignKey("LanguageId")
.OnDelete(DeleteBehavior.Cascade)
@@ -1892,6 +1880,18 @@ namespace Pf2eModel.Migrations
b.Navigation("Entity");
});
+ modelBuilder.Entity("Pf2eModel.Model.Structure.Language", b =>
+ {
+ b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
+ .WithMany()
+ .HasForeignKey("EntityId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_languages_entities_entity_id");
+
+ b.Navigation("Entity");
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")