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")