From a78b01b15c1400fa266db761087d48fca0b4b10d Mon Sep 17 00:00:00 2001 From: Ilya Kozhemyakin Date: Fri, 18 Apr 2025 00:18:23 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B4=D0=BE=D0=BB=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aonprd/DataBuilder/AbstractProcessor.cs | 8 +- .../Aonprd/DataBuilder/AonprdEnumAttribute.cs | 8 +- .../Aonprd/DataBuilder/ProcessorInput.cs | 2 +- .../DataBuilder/Processors/ActionProcessor.cs | 76 +- .../DataBuilder/Processors/TraitProcessor.cs | 7 +- .../DataBuilder/Processors/ActionProcessor.cs | 4 +- .../Migrations/20250417082248_V2.Designer.cs | 2044 ----------------- .../Migrations/20250417082248_V2.cs | 1250 ---------- .../20250417085326_DateOnly.Designer.cs | 2044 ----------------- .../Migrations/20250417085326_DateOnly.cs | 35 - .../Migrations/Pf2eDbContextModelSnapshot.cs | 2041 ---------------- Pf2eDataScrapper/Model/Base/Entity.cs | 2 +- Pf2eDataScrapper/Model/Enum/ActionType.cs | 26 +- Pf2eDataScrapper/Model/Pf2eDbContextModel.cs | 64 +- Pf2eDataScrapper/Model/Structure/Action.cs | 16 +- 15 files changed, 182 insertions(+), 7445 deletions(-) delete mode 100644 Pf2eDataScrapper/Migrations/20250417082248_V2.Designer.cs delete mode 100644 Pf2eDataScrapper/Migrations/20250417082248_V2.cs delete mode 100644 Pf2eDataScrapper/Migrations/20250417085326_DateOnly.Designer.cs delete mode 100644 Pf2eDataScrapper/Migrations/20250417085326_DateOnly.cs delete mode 100644 Pf2eDataScrapper/Migrations/Pf2eDbContextModelSnapshot.cs diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs index e86431f..84a263b 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs @@ -49,13 +49,19 @@ internal abstract partial class AbstractProcessor(ProcessorInput input) Context.SaveChanges(); } + protected string AddedDescription(string path) => $"\n\n---\n[{path}]\n\n{Input.GetOptional("markdown") ?? ""}"; + + protected string AddedDescription(string[] paths) => string.Join("", paths.Select(AddedDescription)); + + protected virtual string GetDescription() => Input.GetRequired("markdown"); + protected virtual void AddEntity() { Entity.Id = Helper.NextEntityId; Entity.Type = Type; Entity.Name = Input.GetRequired("name"); Entity.Img = ""; // GetRequired("img"); - Entity.Description = Input.GetRequired("markdown"); + Entity.Description = GetDescription(); Entity.Rarity = Input.EnumOptional("rarity", EntityRarity.Common); Entity.Slug = Helper.GenerateSlug(Entity.Name); Entity.IsTranslated = false; diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumAttribute.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumAttribute.cs index 11ae34f..5d1e202 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumAttribute.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumAttribute.cs @@ -1,7 +1,11 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder; [AttributeUsage(AttributeTargets.Field)] -internal class AonprdEnumAttribute(string value) : Attribute +internal class AonprdEnumAttribute(string[] values) : Attribute { - public readonly string Value = value; + public readonly string[] Values = values; + + public AonprdEnumAttribute(string value) : this([value]) + { + } } diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/ProcessorInput.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/ProcessorInput.cs index cc05660..a9f8f73 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/ProcessorInput.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/ProcessorInput.cs @@ -47,7 +47,7 @@ internal class ProcessorInput(JObject input) } if (Attribute.GetCustomAttribute(field, typeof(AonprdEnumAttribute)) is AonprdEnumAttribute aonprdAttribute) { - variants.Add(aonprdAttribute.Value); + variants.AddRange(aonprdAttribute.Values); } if (variants.Contains(value)) diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs index e67b10a..1f6823e 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs @@ -1,10 +1,5 @@ -using Pf2eDataScrapper.Model.Enum; -using Pf2eDataScrapper.Model.Structure; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +using Pf2eDataScrapper.Model.Enum; namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors; @@ -17,9 +12,74 @@ internal class ActionProcessor(ProcessorInput input) : AbstractProcessor(input) public override void Process() { + base.Process(); + switch (Input.GetOptional("actions")) + { + case "Single Action": + Object.Actions = Object.MaxActions = 1; + break; + case "Two Actions": + Object.Actions = Object.MaxActions = 2; + break; + + case "Three Actions": + Object.Actions = Object.MaxActions = 3; + break; + + case "Reaction": + Object.IsReaction = true; + break; + + case "Free Action": + Object.IsFreeAction = false; + break; + + case "Single Action to Three Actions": + case "Single Action or more Actions": + Object.Actions = 1; + Object.MaxActions = 3; + break; + + case "Single Action or Two Actions": + case "Single Action to Two Actions": + Object.Actions = 1; + Object.MaxActions = 2; + break; + + case "Reaction or One Action": + Object.IsReaction = true; + Object.Actions = Object.MaxActions = 1; + break; + + case "Free Action or One Action": + Object.IsFreeAction = false; + Object.Actions = Object.MaxActions = 1; + break; + + default: + Object.IsPassive = true; + break; + } + + Object.Extra = new JObject() + { + { "school", Input.GetOptional("school") }, + + }.ToString(); + + Context.Actions.Add(Object); } - + protected override string GetDescription() + => base.GetDescription() + AddedDescription([ + "cost_markdown", + "trait_markdown", + "source_markdown", + "search_markdown", + "requirement_markdown", + "trigger_markdown", + "summary_markdown", + ]); } diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs index e09d124..47433fc 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs @@ -3,7 +3,7 @@ using Pf2eDataScrapper.Model.Structure; namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors; -[AonprdProcessor("trait", [])] +[AonprdProcessor("trait", new string[] {})] internal class TraitProcessor(ProcessorInput input) : AbstractProcessor(input) { public override EntityType Type => EntityType.Trait; @@ -24,4 +24,9 @@ internal class TraitProcessor(ProcessorInput input) : AbstractProcessor(input) // Во втором проходе } + protected override string GetDescription() + => base.GetDescription() + AddedDescription([ + "summary_markdown", + "search_markdown" + ]); } diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs index 3f069eb..c7ad38c 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs @@ -15,9 +15,9 @@ internal class ActionProcessor(JObject input) : AbstractProcessor(input) base.Process(); Object.Type = EnumRequired("system.actionType.value"); - Object.Category = EnumOptional("system.category", ActionCategory.Unknown); + // Object.Category = EnumOptional("system.category", ActionCategory.Unknown); Object.Actions = GetOptional("system.actions.value"); - Object.DeathNote = GetOptional("system.deathNote"); + // Object.DeathNote = GetOptional("system.deathNote"); JObject extra = new() { diff --git a/Pf2eDataScrapper/Migrations/20250417082248_V2.Designer.cs b/Pf2eDataScrapper/Migrations/20250417082248_V2.Designer.cs deleted file mode 100644 index 4904461..0000000 --- a/Pf2eDataScrapper/Migrations/20250417082248_V2.Designer.cs +++ /dev/null @@ -1,2044 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using Pf2eDataScrapper.Model; -using Pf2eDataScrapper.Model.Enum; - -#nullable disable - -namespace Pf2eDataScrapper.Migrations -{ - [DbContext(typeof(Pf2eDbContext))] - [Migration("20250417082248_V2")] - partial class V2 - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "9.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_type", new[] { "action", "free", "reaction", "passive" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "darkvision" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "any", "str", "dex", "con", "int", "wis", "cha" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "unknown", "senses", "abilities", "death", "attitudes", "detection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "deity", "pantheon", "covenant", "philosophy" }); - 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, "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[] { "med", "tiny" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "tradition" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("DeityTraining", b => - { - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id"); - - b.Property("SkillsId") - .HasColumnType("integer") - .HasColumnName("skills_id"); - - b.HasKey("DeityId", "SkillsId") - .HasName("pk_deity_training"); - - b.HasIndex("SkillsId") - .HasDatabaseName("ix_deity_training_skills_id"); - - b.ToTable("deity_training", (string)null); - }); - - modelBuilder.Entity("EntityKeyword", b => - { - b.Property("EntitiesId") - .HasColumnType("integer") - .HasColumnName("entities_id"); - - b.Property("KeywordsId") - .HasColumnType("integer") - .HasColumnName("keywords_id"); - - b.HasKey("EntitiesId", "KeywordsId") - .HasName("pk_entity_keyword"); - - b.HasIndex("KeywordsId") - .HasDatabaseName("ix_entity_keyword_keywords_id"); - - b.ToTable("entity_keyword", (string)null); - }); - - modelBuilder.Entity("EntityTrait", b => - { - b.Property("EntitiesId") - .HasColumnType("integer") - .HasColumnName("entities_id"); - - b.Property("TraitsId") - .HasColumnType("integer") - .HasColumnName("traits_id"); - - b.HasKey("EntitiesId", "TraitsId") - .HasName("pk_entity_trait"); - - b.HasIndex("TraitsId") - .HasDatabaseName("ix_entity_trait_traits_id"); - - b.ToTable("entity_trait", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasColumnName("description") - .HasColumnOrder(6) - .HasComment("Текстовое описание объекта"); - - b.Property("Img") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("img") - .HasColumnOrder(5) - .HasComment("Изображение объекта"); - - b.Property("IsChecked") - .HasColumnType("boolean") - .HasColumnName("is_checked") - .HasColumnOrder(9) - .HasComment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи"); - - b.Property("IsTranslated") - .HasColumnType("boolean") - .HasColumnName("is_translated") - .HasColumnOrder(8) - .HasComment("Флаг, указывающий, что у объекта существует перевод"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2) - .HasComment("Отображаемое имя"); - - b.Property("Rarity") - .HasColumnType("entity_rarity") - .HasColumnName("rarity") - .HasColumnOrder(7); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("slug") - .HasColumnOrder(4) - .HasComment("Часть имени в URL"); - - b.Property("Type") - .HasColumnType("entity_type") - .HasColumnName("type") - .HasColumnOrder(3) - .HasComment("Тип объекта"); - - b.HasKey("Id") - .HasName("pk_entities"); - - b.ToTable("entities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(1); - - b.Property("Type") - .HasColumnType("alias_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.Property("Alias") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("alias") - .HasColumnOrder(3); - - b.HasKey("EntityId", "Type") - .HasName("pk_entity_aliases"); - - b.ToTable("entity_aliases", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("slug") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_keywords"); - - b.ToTable("keywords", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("KeywordId") - .HasColumnType("integer") - .HasColumnName("keyword_id") - .HasColumnOrder(2); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_keyword_aliases"); - - b.HasIndex("KeywordId") - .HasDatabaseName("ix_keyword_aliases_keyword_id"); - - b.ToTable("keyword_aliases", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(1); - - b.Property("SourceId") - .HasColumnType("integer") - .HasColumnName("source_id") - .HasColumnOrder(2); - - b.Property("IsRemaster") - .HasColumnType("boolean") - .HasColumnName("is_remaster") - .HasColumnOrder(4) - .HasComment("Флаг, указывающий, что объект является частью ремастера"); - - b.Property("Suffix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("suffix") - .HasColumnOrder(3) - .HasComment("Номер страницы, эррата и т.д."); - - b.HasKey("EntityId", "SourceId") - .HasName("pk_entity_sources"); - - b.HasIndex("SourceId") - .HasDatabaseName("ix_entity_sources_source_id"); - - b.ToTable("entity_sources", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Category") - .HasColumnType("source_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2); - - b.Property("ReleaseDate") - .HasColumnType("timestamp with time zone") - .HasColumnName("release_date") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_sources"); - - b.ToTable("sources", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(0); - - b.Property("TargetId") - .HasColumnType("integer") - .HasColumnName("target_id") - .HasColumnOrder(1); - - b.Property("Md5") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("md5") - .HasColumnOrder(3) - .HasComment("Контроль версии объекта"); - - b.Property("Suffix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("suffix") - .HasColumnOrder(2) - .HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта"); - - b.HasKey("EntityId", "TargetId") - .HasName("pk_entity_externals"); - - b.HasIndex("TargetId") - .HasDatabaseName("ix_entity_externals_target_id"); - - b.ToTable("entity_externals", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Icon") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("icon") - .HasColumnOrder(3); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2); - - b.Property("Prefix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("prefix") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_external_targets"); - - b.ToTable("external_targets", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Common.Frequency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Max") - .HasColumnType("integer") - .HasColumnName("max") - .HasColumnOrder(2); - - b.Property("Per") - .HasColumnType("integer") - .HasColumnName("per") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("integer") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_frequencies"); - - b.ToTable("frequencies", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.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("Pf2eDataScrapper.Model.Common.Training", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Key") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("key") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_trainings"); - - b.ToTable("trainings", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Actions") - .HasColumnType("integer") - .HasColumnName("actions") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("action_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("DeathNote") - .HasColumnType("boolean") - .HasColumnName("death_note") - .HasColumnOrder(5); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(6); - - b.Property("Type") - .HasColumnType("action_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_actions"); - - b.ToTable("actions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Hp") - .HasColumnType("integer") - .HasColumnName("hp") - .HasColumnOrder(3); - - b.Property("Reach") - .HasColumnType("integer") - .HasColumnName("reach") - .HasColumnOrder(4); - - b.Property("Size") - .HasColumnType("size") - .HasColumnName("size") - .HasColumnOrder(2); - - b.Property("Speed") - .HasColumnType("integer") - .HasColumnName("speed") - .HasColumnOrder(5); - - b.Property("Vision") - .HasColumnType("ancestry_vision") - .HasColumnName("vision") - .HasColumnOrder(6); - - b.HasKey("Id") - .HasName("pk_ancestries"); - - b.ToTable("ancestries", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(2); - - b.Property("Boost") - .HasColumnType("boolean") - .HasColumnName("boost") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("attribute_values") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_ancestry_boosts"); - - b.HasIndex("AncestryId") - .HasDatabaseName("ix_ancestry_boosts_ancestry_id"); - - b.ToTable("ancestry_boosts", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b => - { - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(1); - - b.Property("ItemId") - .HasColumnType("integer") - .HasColumnName("item_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.HasKey("AncestryId", "ItemId") - .HasName("pk_ancestry_items"); - - b.HasIndex("ItemId") - .HasDatabaseName("ix_ancestry_items_item_id"); - - b.ToTable("ancestry_items", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b => - { - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(1); - - b.Property("LanguageId") - .HasColumnType("integer") - .HasColumnName("language_id") - .HasColumnOrder(2); - - b.Property("IsAdditional") - .HasColumnType("boolean") - .HasColumnName("is_additional") - .HasColumnOrder(3); - - b.HasKey("AncestryId", "LanguageId") - .HasName("pk_ancestry_languages"); - - b.HasIndex("LanguageId") - .HasDatabaseName("ix_ancestry_languages_language_id"); - - b.ToTable("ancestry_languages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.HasKey("Id") - .HasName("pk_backgrounds"); - - b.ToTable("backgrounds", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Attribute") - .HasColumnType("attribute_values") - .HasColumnName("attribute") - .HasColumnOrder(3); - - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_background_boosts"); - - b.HasIndex("BackgroundId") - .HasDatabaseName("ix_background_boosts_background_id"); - - b.ToTable("background_boosts", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b => - { - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(1); - - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.HasKey("BackgroundId", "EntityId") - .HasName("pk_background_items"); - - b.HasIndex("EntityId") - .HasDatabaseName("ix_background_items_entity_id"); - - b.ToTable("background_items", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("training_stage") - .HasColumnName("level") - .HasColumnOrder(4); - - b.Property("TrainingId") - .HasColumnType("integer") - .HasColumnName("training_id") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_background_skills"); - - b.HasIndex("BackgroundId") - .HasDatabaseName("ix_background_skills_background_id"); - - b.HasIndex("TrainingId") - .HasDatabaseName("ix_background_skills_training_id"); - - b.ToTable("background_skills", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("AdditionalTrainedSkills") - .HasColumnType("integer") - .HasColumnName("additional_trained_skills") - .HasColumnOrder(6); - - b.Property("Hp") - .HasColumnType("integer") - .HasColumnName("hp") - .HasColumnOrder(3); - - b.Property("Perception") - .HasColumnType("integer") - .HasColumnName("perception") - .HasColumnOrder(4); - - b.Property("Spellcasting") - .HasColumnType("boolean") - .HasColumnName("spellcasting") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_classes"); - - b.ToTable("classes", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("Value") - .HasColumnType("attribute_values") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_class_key_abilities"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_key_abilities_class_id"); - - b.ToTable("class_key_abilities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(5); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(31); - - b.Property("Type") - .HasColumnType("class_progression_type") - .HasColumnName("type") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_class_progressions"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_progressions_class_id"); - - b.HasIndex("EntityId") - .HasDatabaseName("ix_class_progressions_entity_id"); - - b.ToTable("class_progressions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("Name") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(4); - - b.Property("Stage") - .HasColumnType("integer") - .HasColumnName("stage") - .HasColumnOrder(5); - - b.Property("TrainingId") - .HasColumnType("integer") - .HasColumnName("training_id") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_class_trainings"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_trainings_class_id"); - - b.HasIndex("TrainingId") - .HasDatabaseName("ix_class_trainings_training_id"); - - b.ToTable("class_trainings", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(3); - - b.Property("Group") - .HasColumnType("condition_group") - .HasColumnName("group") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_conditions"); - - b.ToTable("conditions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Category") - .HasColumnType("deity_category") - .HasColumnName("category") - .HasColumnOrder(2); - - b.Property("Fonts") - .HasColumnType("deity_fonts") - .HasColumnName("fonts") - .HasColumnOrder(3); - - b.Property("Sanctification") - .HasColumnType("deity_sanctification") - .HasColumnName("sanctification") - .HasColumnOrder(4); - - b.Property("SanctificationMust") - .HasColumnType("boolean") - .HasColumnName("sanctification_must") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_deities"); - - b.ToTable("deities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b => - { - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(1); - - b.Property("Attribute") - .HasColumnType("attribute_values") - .HasColumnName("attribute") - .HasColumnOrder(2); - - b.HasKey("DeityId", "Attribute") - .HasName("pk_deity_attributes"); - - b.ToTable("deity_attributes", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("IsPrimary") - .HasColumnType("boolean") - .HasColumnName("is_primary") - .HasColumnOrder(3); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_deity_domains"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_domains_deity_id"); - - b.ToTable("deity_domains", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_deity_spells"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_spells_deity_id"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_deity_spells_spell_id"); - - b.ToTable("deity_spells", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("Weapon") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("weapon") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_deity_weapons"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_weapons_deity_id"); - - b.ToTable("deity_weapons", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Actions") - .HasColumnType("integer") - .HasColumnName("actions") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("action_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(10); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(5); - - b.Property("LevelTaken") - .HasColumnType("integer") - .HasColumnName("level_taken") - .HasColumnOrder(6); - - b.Property("Location") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("location") - .HasColumnOrder(8); - - b.Property("MaxTakable") - .HasColumnType("integer") - .HasColumnName("max_takable") - .HasColumnOrder(7); - - b.Property("OnlyLevel1") - .HasColumnType("boolean") - .HasColumnName("only_level1") - .HasColumnOrder(9); - - b.Property("Type") - .HasColumnType("action_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_feats"); - - b.ToTable("feats", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FeatId") - .HasColumnType("integer") - .HasColumnName("feat_id") - .HasColumnOrder(2); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_feat_prerequisites"); - - b.HasIndex("FeatId") - .HasDatabaseName("ix_feat_prerequisites_feat_id"); - - b.ToTable("feat_prerequisites", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_heritages"); - - b.HasIndex("AncestryId") - .HasDatabaseName("ix_heritages_ancestry_id"); - - b.ToTable("heritages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("CanHeightening") - .HasColumnType("boolean") - .HasColumnName("can_heightening") - .HasColumnOrder(11); - - b.Property("Cost") - .HasColumnType("integer") - .HasColumnName("cost") - .HasColumnOrder(3); - - b.Property("Counteraction") - .HasColumnType("boolean") - .HasColumnName("counteraction") - .HasColumnOrder(4); - - b.Property("Duration") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("duration") - .HasColumnOrder(6); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(2); - - b.Property("Range") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("range") - .HasColumnOrder(7); - - b.Property("Requirements") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("requirements") - .HasColumnOrder(8); - - b.Property("Sustained") - .HasColumnType("boolean") - .HasColumnName("sustained") - .HasColumnOrder(5); - - b.Property("Target") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("target") - .HasColumnOrder(9); - - b.Property("Time") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("time") - .HasColumnOrder(10); - - b.HasKey("Id") - .HasName("pk_spells"); - - b.ToTable("spells", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b => - { - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(1); - - b.Property("Details") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("details") - .HasColumnOrder(2); - - b.Property("Type") - .HasColumnType("spell_area_type") - .HasColumnName("type") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("integer") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("SpellId") - .HasName("pk_spell_areas"); - - b.ToTable("spell_areas", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ApplyMod") - .HasColumnType("boolean") - .HasColumnName("apply_mod") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("spell_damage_category") - .HasColumnName("category") - .HasColumnOrder(5); - - b.Property("Formula") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("formula") - .HasColumnOrder(6); - - b.Property("Key") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("key") - .HasColumnOrder(3); - - b.Property("Kinds") - .HasColumnType("spell_damage_kinds") - .HasColumnName("kinds") - .HasColumnOrder(7); - - b.Property("Materials") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("materials") - .HasColumnOrder(8); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(2); - - b.Property("Type") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("type") - .HasColumnOrder(9); - - b.HasKey("Id") - .HasName("pk_spell_damages"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_spell_damages_spell_id"); - - b.ToTable("spell_damages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("IsBasic") - .HasColumnType("boolean") - .HasColumnName("is_basic") - .HasColumnOrder(4); - - b.Property("IsPassive") - .HasColumnType("boolean") - .HasColumnName("is_passive") - .HasColumnOrder(3); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(2); - - b.Property("Statistic") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("statistic") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_spell_defenses"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_spell_defenses_spell_id"); - - b.ToTable("spell_defenses", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b => - { - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(1); - - b.Property("PrimaryCheck") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("primary_check") - .HasColumnOrder(2); - - b.Property("SecondaryCasters") - .HasColumnType("integer") - .HasColumnName("secondary_casters") - .HasColumnOrder(3); - - b.Property("SecondaryChecks") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("secondary_checks") - .HasColumnOrder(4); - - b.HasKey("SpellId") - .HasName("pk_spell_rituals"); - - b.ToTable("spell_rituals", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Type") - .HasColumnType("trait_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_traits"); - - b.ToTable("traits", (string)null); - }); - - modelBuilder.Entity("DeityTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", null) - .WithMany() - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_training_deities_deity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", null) - .WithMany() - .HasForeignKey("SkillsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_training_trainings_skills_id"); - }); - - modelBuilder.Entity("EntityKeyword", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null) - .WithMany() - .HasForeignKey("EntitiesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_keyword_entities_entities_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", null) - .WithMany() - .HasForeignKey("KeywordsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_keyword_keywords_keywords_id"); - }); - - modelBuilder.Entity("EntityTrait", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null) - .WithMany() - .HasForeignKey("EntitiesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_trait_entities_entities_id"); - - b.HasOne("Pf2eDataScrapper.Model.Structure.Trait", null) - .WithMany() - .HasForeignKey("TraitsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_trait_traits_traits_id"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Aliases") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_aliases_entities_entity_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", "Keyword") - .WithMany("Aliases") - .HasForeignKey("KeywordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_keyword_aliases_keywords_keyword_id"); - - b.Navigation("Keyword"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Sources") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_sources_entities_entity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Source.Source", "Source") - .WithMany("EntitySources") - .HasForeignKey("SourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_sources_sources_source_id"); - - b.Navigation("Entity"); - - b.Navigation("Source"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Extrnals") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_externals_entities_entity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", "Target") - .WithMany("EntityExternals") - .HasForeignKey("TargetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_externals_external_targets_target_id"); - - b.Navigation("Entity"); - - b.Navigation("Target"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Action", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_actions_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Ancestry", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestries_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryBoosts") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_boosts_ancestries_ancestry_id"); - - b.Navigation("Ancestry"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryItems") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_items_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Item") - .WithMany() - .HasForeignKey("ItemId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_items_entities_item_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Item"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryLanguages") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_languages_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Language", "Language") - .WithMany() - .HasForeignKey("LanguageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_languages_languages_language_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Language"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Background", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_backgrounds_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundBoosts") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_boosts_backgrounds_background_id"); - - b.Navigation("Background"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundItems") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_items_backgrounds_background_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_items_entities_entity_id"); - - b.Navigation("Background"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundSkills") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_skills_backgrounds_background_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training") - .WithMany() - .HasForeignKey("TrainingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_skills_trainings_training_id"); - - b.Navigation("Background"); - - b.Navigation("Training"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Class", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_classes_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassKeyAbilities") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_key_abilities_classes_class_id"); - - b.Navigation("Class"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassProgressions") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_progressions_classes_class_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_class_progressions_entities_entity_id"); - - b.Navigation("Class"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassTrainings") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_trainings_classes_class_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training") - .WithMany() - .HasForeignKey("TrainingId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_class_trainings_trainings_training_id"); - - b.Navigation("Class"); - - b.Navigation("Training"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Condition", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_conditions_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Deity", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deities_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityAttributes") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_attributes_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityDomains") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_domains_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeitySpells") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_spells_deities_deity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany() - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_spells_spells_spell_id"); - - b.Navigation("Deity"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityWeapons") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_weapons_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Feat", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_feats_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Feat", "Feat") - .WithMany("FeatPrerequisites") - .HasForeignKey("FeatId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_feat_prerequisites_feats_feat_id"); - - b.Navigation("Feat"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("Heritages") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_heritages_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Heritage", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_heritages_entities_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Spell", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spells_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithOne("SpellArea") - .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", "SpellId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_spell_areas_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany("SpellDamages") - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spell_damages_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany("SpellDefenses") - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spell_defenses_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithOne("SpellRitual") - .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", "SpellId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_spell_rituals_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Trait", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_traits_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b => - { - b.Navigation("Aliases"); - - b.Navigation("Extrnals"); - - b.Navigation("Sources"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b => - { - b.Navigation("Aliases"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b => - { - b.Navigation("EntitySources"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b => - { - b.Navigation("EntityExternals"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.Navigation("AncestryBoosts"); - - b.Navigation("AncestryItems"); - - b.Navigation("AncestryLanguages"); - - b.Navigation("Heritages"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.Navigation("BackgroundBoosts"); - - b.Navigation("BackgroundItems"); - - b.Navigation("BackgroundSkills"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.Navigation("ClassKeyAbilities"); - - b.Navigation("ClassProgressions"); - - b.Navigation("ClassTrainings"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.Navigation("DeityAttributes"); - - b.Navigation("DeityDomains"); - - b.Navigation("DeitySpells"); - - b.Navigation("DeityWeapons"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.Navigation("FeatPrerequisites"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.Navigation("SpellArea"); - - b.Navigation("SpellDamages"); - - b.Navigation("SpellDefenses"); - - b.Navigation("SpellRitual"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Pf2eDataScrapper/Migrations/20250417082248_V2.cs b/Pf2eDataScrapper/Migrations/20250417082248_V2.cs deleted file mode 100644 index 88572f6..0000000 --- a/Pf2eDataScrapper/Migrations/20250417082248_V2.cs +++ /dev/null @@ -1,1250 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using Pf2eDataScrapper.Model.Enum; - -#nullable disable - -namespace Pf2eDataScrapper.Migrations; - -/// -public partial class V2 : Migration -{ - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterDatabase() - .Annotation("Npgsql:Enum:action_category", "unknown,offensive,defensive,interaction,familiar,army_tactic,army_war_action,kingdom_activity,kingdom_feat,kingdom_feature") - .Annotation("Npgsql:Enum:action_type", "action,free,reaction,passive") - .Annotation("Npgsql:Enum:alias_type", "legacy,english,legacy_english,hobby,other") - .Annotation("Npgsql:Enum:ancestry_vision", "normal,low-light-vision,darkvision") - .Annotation("Npgsql:Enum:attribute_values", "any,str,dex,con,int,wis,cha") - .Annotation("Npgsql:Enum:class_progression_type", "entity,ancestry_feat,class_feat,general_feat,skill_feat,skill_increase") - .Annotation("Npgsql:Enum:condition_group", "unknown,senses,abilities,death,attitudes,detection") - .Annotation("Npgsql:Enum:deity_category", "deity,pantheon,covenant,philosophy") - .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: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", "med,tiny") - .Annotation("Npgsql:Enum:source_category", "rulebook,adventure-path,lost-omens") - .Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder") - .Annotation("Npgsql:Enum:spell_damage_category", "persistent,splash") - .Annotation("Npgsql:Enum:spell_damage_kinds", "damage,healing,any") - .Annotation("Npgsql:Enum:training_stage", "untrained,trained,expert,master,legendary") - .Annotation("Npgsql:Enum:trait_type", "regular,tradition"); - - migrationBuilder.CreateTable( - name: "entities", - 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, comment: "Отображаемое имя"), - type = table.Column(type: "entity_type", nullable: false, comment: "Тип объекта"), - slug = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть имени в URL"), - img = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Изображение объекта"), - description = table.Column(type: "text", nullable: false, comment: "Текстовое описание объекта"), - rarity = table.Column(type: "entity_rarity", nullable: false), - is_translated = table.Column(type: "boolean", nullable: true, comment: "Флаг, указывающий, что у объекта существует перевод"), - is_checked = table.Column(type: "boolean", nullable: true, comment: "Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи") - }, - constraints: table => - { - table.PrimaryKey("pk_entities", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "external_targets", - 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), - icon = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - prefix = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_external_targets", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "frequencies", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - max = table.Column(type: "integer", nullable: false), - per = table.Column(type: "integer", nullable: false), - value = table.Column(type: "integer", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_frequencies", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "keywords", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - slug = table.Column(type: "text", nullable: false) - }, - constraints: table => - { - 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 - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - category = table.Column(type: "source_category", nullable: false), - release_date = table.Column(type: "timestamp with time zone", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_sources", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "trainings", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - key = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_trainings", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "actions", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - type = table.Column(type: "action_type", nullable: false), - category = table.Column(type: "action_category", nullable: false), - actions = table.Column(type: "integer", nullable: true), - death_note = table.Column(type: "boolean", nullable: true), - extra = table.Column(type: "text", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_actions", x => x.id); - table.ForeignKey( - name: "fk_actions_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "ancestries", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - size = table.Column(type: "size", nullable: false), - hp = table.Column(type: "integer", nullable: false), - reach = table.Column(type: "integer", nullable: false), - speed = table.Column(type: "integer", nullable: false), - vision = table.Column(type: "ancestry_vision", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_ancestries", x => x.id); - table.ForeignKey( - name: "fk_ancestries_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "backgrounds", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_backgrounds", x => x.id); - table.ForeignKey( - name: "fk_backgrounds_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "classes", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - hp = table.Column(type: "integer", nullable: false), - perception = table.Column(type: "integer", nullable: false), - spellcasting = table.Column(type: "boolean", nullable: false), - additional_trained_skills = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_classes", x => x.id); - table.ForeignKey( - name: "fk_classes_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "conditions", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - group = table.Column(type: "condition_group", nullable: true), - extra = table.Column(type: "text", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_conditions", x => x.id); - table.ForeignKey( - name: "fk_conditions_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "deities", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - category = table.Column(type: "deity_category", nullable: false), - fonts = table.Column(type: "deity_fonts", nullable: false), - sanctification = table.Column(type: "deity_sanctification", nullable: false), - sanctification_must = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_deities", x => x.id); - table.ForeignKey( - name: "fk_deities_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "entity_aliases", - columns: table => new - { - entity_id = table.Column(type: "integer", nullable: false), - type = table.Column(type: "alias_type", nullable: false), - alias = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_entity_aliases", x => new { x.entity_id, x.type }); - table.ForeignKey( - name: "fk_entity_aliases_entities_entity_id", - column: x => x.entity_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "feats", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - type = table.Column(type: "action_type", nullable: false), - category = table.Column(type: "action_category", nullable: false), - actions = table.Column(type: "integer", nullable: true), - level = table.Column(type: "integer", nullable: false), - level_taken = table.Column(type: "integer", nullable: true), - max_takable = table.Column(type: "integer", nullable: true), - location = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), - only_level1 = table.Column(type: "boolean", nullable: true), - extra = table.Column(type: "text", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_feats", x => x.id); - table.ForeignKey( - name: "fk_feats_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "spells", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - level = table.Column(type: "integer", nullable: false), - cost = table.Column(type: "integer", nullable: false), - counteraction = table.Column(type: "boolean", nullable: false), - sustained = table.Column(type: "boolean", nullable: false), - duration = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - range = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - requirements = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - target = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - time = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - can_heightening = table.Column(type: "boolean", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_spells", x => x.id); - table.ForeignKey( - name: "fk_spells_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "traits", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - type = table.Column(type: "trait_type", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_traits", x => x.id); - table.ForeignKey( - name: "fk_traits_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "entity_externals", - columns: table => new - { - entity_id = table.Column(type: "integer", nullable: false), - target_id = table.Column(type: "integer", nullable: false), - suffix = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть URL до объекта. Для источников Foundry - полный UUID объекта"), - md5 = table.Column(type: "character varying(32)", maxLength: 32, nullable: false, comment: "Контроль версии объекта") - }, - constraints: table => - { - table.PrimaryKey("pk_entity_externals", x => new { x.entity_id, x.target_id }); - table.ForeignKey( - name: "fk_entity_externals_entities_entity_id", - column: x => x.entity_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_entity_externals_external_targets_target_id", - column: x => x.target_id, - principalTable: "external_targets", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "entity_keyword", - columns: table => new - { - entities_id = table.Column(type: "integer", nullable: false), - keywords_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_entity_keyword", x => new { x.entities_id, x.keywords_id }); - table.ForeignKey( - name: "fk_entity_keyword_entities_entities_id", - column: x => x.entities_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_entity_keyword_keywords_keywords_id", - column: x => x.keywords_id, - principalTable: "keywords", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "keyword_aliases", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - keyword_id = table.Column(type: "integer", nullable: false), - value = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_keyword_aliases", x => x.id); - table.ForeignKey( - name: "fk_keyword_aliases_keywords_keyword_id", - column: x => x.keyword_id, - principalTable: "keywords", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "entity_sources", - columns: table => new - { - entity_id = table.Column(type: "integer", nullable: false), - source_id = table.Column(type: "integer", nullable: false), - suffix = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Номер страницы, эррата и т.д."), - is_remaster = table.Column(type: "boolean", nullable: false, comment: "Флаг, указывающий, что объект является частью ремастера") - }, - constraints: table => - { - table.PrimaryKey("pk_entity_sources", x => new { x.entity_id, x.source_id }); - table.ForeignKey( - name: "fk_entity_sources_entities_entity_id", - column: x => x.entity_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_entity_sources_sources_source_id", - column: x => x.source_id, - principalTable: "sources", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "ancestry_boosts", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - ancestry_id = table.Column(type: "integer", nullable: false), - boost = table.Column(type: "boolean", nullable: false), - value = table.Column(type: "attribute_values", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_ancestry_boosts", x => x.id); - table.ForeignKey( - name: "fk_ancestry_boosts_ancestries_ancestry_id", - column: x => x.ancestry_id, - principalTable: "ancestries", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "ancestry_items", - columns: table => new - { - ancestry_id = table.Column(type: "integer", nullable: false), - item_id = table.Column(type: "integer", nullable: false), - level = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_ancestry_items", x => new { x.ancestry_id, x.item_id }); - table.ForeignKey( - name: "fk_ancestry_items_ancestries_ancestry_id", - column: x => x.ancestry_id, - principalTable: "ancestries", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_ancestry_items_entities_item_id", - column: x => x.item_id, - principalTable: "entities", - principalColumn: "id", - 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 - { - id = table.Column(type: "integer", nullable: false), - ancestry_id = table.Column(type: "integer", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_heritages", x => x.id); - table.ForeignKey( - name: "fk_heritages_ancestries_ancestry_id", - column: x => x.ancestry_id, - principalTable: "ancestries", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_heritages_entities_id", - column: x => x.id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "background_boosts", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - background_id = table.Column(type: "integer", nullable: false), - attribute = table.Column(type: "attribute_values", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_background_boosts", x => x.id); - table.ForeignKey( - name: "fk_background_boosts_backgrounds_background_id", - column: x => x.background_id, - principalTable: "backgrounds", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "background_items", - columns: table => new - { - background_id = table.Column(type: "integer", nullable: false), - entity_id = table.Column(type: "integer", nullable: false), - level = table.Column(type: "integer", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_background_items", x => new { x.background_id, x.entity_id }); - table.ForeignKey( - name: "fk_background_items_backgrounds_background_id", - column: x => x.background_id, - principalTable: "backgrounds", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_background_items_entities_entity_id", - column: x => x.entity_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "background_skills", - columns: table => new - { - id = table.Column(type: "integer", nullable: false), - background_id = table.Column(type: "integer", nullable: false), - training_id = table.Column(type: "integer", nullable: false), - level = table.Column(type: "training_stage", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_background_skills", x => x.id); - table.ForeignKey( - name: "fk_background_skills_backgrounds_background_id", - column: x => x.background_id, - principalTable: "backgrounds", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_background_skills_trainings_training_id", - column: x => x.training_id, - principalTable: "trainings", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "class_key_abilities", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - class_id = table.Column(type: "integer", nullable: false), - value = table.Column(type: "attribute_values", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_class_key_abilities", x => x.id); - table.ForeignKey( - name: "fk_class_key_abilities_classes_class_id", - column: x => x.class_id, - principalTable: "classes", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "class_progressions", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - class_id = table.Column(type: "integer", nullable: false), - type = table.Column(type: "class_progression_type", nullable: false), - entity_id = table.Column(type: "integer", nullable: true), - level = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_class_progressions", x => x.id); - table.ForeignKey( - name: "fk_class_progressions_classes_class_id", - column: x => x.class_id, - principalTable: "classes", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_class_progressions_entities_entity_id", - column: x => x.entity_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "class_trainings", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - class_id = table.Column(type: "integer", nullable: false), - training_id = table.Column(type: "integer", nullable: true), - name = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), - stage = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_class_trainings", x => x.id); - table.ForeignKey( - name: "fk_class_trainings_classes_class_id", - column: x => x.class_id, - principalTable: "classes", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_class_trainings_trainings_training_id", - column: x => x.training_id, - principalTable: "trainings", - principalColumn: "id", - onDelete: ReferentialAction.SetNull); - }); - - migrationBuilder.CreateTable( - name: "deity_attributes", - columns: table => new - { - deity_id = table.Column(type: "integer", nullable: false), - attribute = table.Column(type: "attribute_values", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_deity_attributes", x => new { x.deity_id, x.attribute }); - table.ForeignKey( - name: "fk_deity_attributes_deities_deity_id", - column: x => x.deity_id, - principalTable: "deities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "deity_domains", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - deity_id = table.Column(type: "integer", nullable: false), - is_primary = table.Column(type: "boolean", nullable: false), - value = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_deity_domains", x => x.id); - table.ForeignKey( - name: "fk_deity_domains_deities_deity_id", - column: x => x.deity_id, - principalTable: "deities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "deity_training", - columns: table => new - { - deity_id = table.Column(type: "integer", nullable: false), - skills_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_deity_training", x => new { x.deity_id, x.skills_id }); - table.ForeignKey( - name: "fk_deity_training_deities_deity_id", - column: x => x.deity_id, - principalTable: "deities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_deity_training_trainings_skills_id", - column: x => x.skills_id, - principalTable: "trainings", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "deity_weapons", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - deity_id = table.Column(type: "integer", nullable: false), - weapon = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_deity_weapons", x => x.id); - table.ForeignKey( - name: "fk_deity_weapons_deities_deity_id", - column: x => x.deity_id, - principalTable: "deities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "feat_prerequisites", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - feat_id = table.Column(type: "integer", nullable: false), - value = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_feat_prerequisites", x => x.id); - table.ForeignKey( - name: "fk_feat_prerequisites_feats_feat_id", - column: x => x.feat_id, - principalTable: "feats", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "deity_spells", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - deity_id = table.Column(type: "integer", nullable: false), - level = table.Column(type: "integer", nullable: false), - spell_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_deity_spells", x => x.id); - table.ForeignKey( - name: "fk_deity_spells_deities_deity_id", - column: x => x.deity_id, - principalTable: "deities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_deity_spells_spells_spell_id", - column: x => x.spell_id, - principalTable: "spells", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "spell_areas", - columns: table => new - { - spell_id = table.Column(type: "integer", nullable: false), - details = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), - type = table.Column(type: "spell_area_type", nullable: false), - value = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_spell_areas", x => x.spell_id); - table.ForeignKey( - name: "fk_spell_areas_spells_spell_id", - column: x => x.spell_id, - principalTable: "spells", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "spell_damages", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - spell_id = table.Column(type: "integer", nullable: false), - key = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - apply_mod = table.Column(type: "boolean", nullable: true), - category = table.Column(type: "spell_damage_category", nullable: true), - formula = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - kinds = table.Column(type: "spell_damage_kinds", nullable: false), - materials = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), - type = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_spell_damages", x => x.id); - table.ForeignKey( - name: "fk_spell_damages_spells_spell_id", - column: x => x.spell_id, - principalTable: "spells", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "spell_defenses", - columns: table => new - { - id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - spell_id = table.Column(type: "integer", nullable: false), - is_passive = table.Column(type: "boolean", nullable: false), - is_basic = table.Column(type: "boolean", nullable: true), - statistic = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_spell_defenses", x => x.id); - table.ForeignKey( - name: "fk_spell_defenses_spells_spell_id", - column: x => x.spell_id, - principalTable: "spells", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "spell_rituals", - columns: table => new - { - spell_id = table.Column(type: "integer", nullable: false), - primary_check = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), - secondary_casters = table.Column(type: "integer", nullable: false), - secondary_checks = table.Column(type: "character varying(255)", maxLength: 255, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_spell_rituals", x => x.spell_id); - table.ForeignKey( - name: "fk_spell_rituals_spells_spell_id", - column: x => x.spell_id, - principalTable: "spells", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "entity_trait", - columns: table => new - { - entities_id = table.Column(type: "integer", nullable: false), - traits_id = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_entity_trait", x => new { x.entities_id, x.traits_id }); - table.ForeignKey( - name: "fk_entity_trait_entities_entities_id", - column: x => x.entities_id, - principalTable: "entities", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_entity_trait_traits_traits_id", - column: x => x.traits_id, - principalTable: "traits", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "ix_ancestry_boosts_ancestry_id", - table: "ancestry_boosts", - column: "ancestry_id"); - - migrationBuilder.CreateIndex( - name: "ix_ancestry_items_item_id", - table: "ancestry_items", - column: "item_id"); - - migrationBuilder.CreateIndex( - name: "ix_ancestry_languages_language_id", - table: "ancestry_languages", - column: "language_id"); - - migrationBuilder.CreateIndex( - name: "ix_background_boosts_background_id", - table: "background_boosts", - column: "background_id"); - - migrationBuilder.CreateIndex( - name: "ix_background_items_entity_id", - table: "background_items", - column: "entity_id"); - - migrationBuilder.CreateIndex( - name: "ix_background_skills_background_id", - table: "background_skills", - column: "background_id"); - - migrationBuilder.CreateIndex( - name: "ix_background_skills_training_id", - table: "background_skills", - column: "training_id"); - - migrationBuilder.CreateIndex( - name: "ix_class_key_abilities_class_id", - table: "class_key_abilities", - column: "class_id"); - - migrationBuilder.CreateIndex( - name: "ix_class_progressions_class_id", - table: "class_progressions", - column: "class_id"); - - migrationBuilder.CreateIndex( - name: "ix_class_progressions_entity_id", - table: "class_progressions", - column: "entity_id"); - - migrationBuilder.CreateIndex( - name: "ix_class_trainings_class_id", - table: "class_trainings", - column: "class_id"); - - migrationBuilder.CreateIndex( - name: "ix_class_trainings_training_id", - table: "class_trainings", - column: "training_id"); - - migrationBuilder.CreateIndex( - name: "ix_deity_domains_deity_id", - table: "deity_domains", - column: "deity_id"); - - migrationBuilder.CreateIndex( - name: "ix_deity_spells_deity_id", - table: "deity_spells", - column: "deity_id"); - - migrationBuilder.CreateIndex( - name: "ix_deity_spells_spell_id", - table: "deity_spells", - column: "spell_id"); - - migrationBuilder.CreateIndex( - name: "ix_deity_training_skills_id", - table: "deity_training", - column: "skills_id"); - - migrationBuilder.CreateIndex( - name: "ix_deity_weapons_deity_id", - table: "deity_weapons", - column: "deity_id"); - - migrationBuilder.CreateIndex( - name: "ix_entity_externals_target_id", - table: "entity_externals", - column: "target_id"); - - migrationBuilder.CreateIndex( - name: "ix_entity_keyword_keywords_id", - table: "entity_keyword", - column: "keywords_id"); - - migrationBuilder.CreateIndex( - name: "ix_entity_sources_source_id", - table: "entity_sources", - column: "source_id"); - - migrationBuilder.CreateIndex( - name: "ix_entity_trait_traits_id", - table: "entity_trait", - column: "traits_id"); - - migrationBuilder.CreateIndex( - name: "ix_feat_prerequisites_feat_id", - table: "feat_prerequisites", - column: "feat_id"); - - migrationBuilder.CreateIndex( - name: "ix_heritages_ancestry_id", - table: "heritages", - column: "ancestry_id"); - - migrationBuilder.CreateIndex( - name: "ix_keyword_aliases_keyword_id", - table: "keyword_aliases", - column: "keyword_id"); - - migrationBuilder.CreateIndex( - name: "ix_spell_damages_spell_id", - table: "spell_damages", - column: "spell_id"); - - migrationBuilder.CreateIndex( - name: "ix_spell_defenses_spell_id", - table: "spell_defenses", - column: "spell_id"); - - // Procedures - - migrationBuilder.Sql(""" -CREATE OR REPLACE FUNCTION f_truncate_tables() - RETURNS void - LANGUAGE plpgsql AS -$func$ -BEGIN - EXECUTE - (SELECT 'TRUNCATE TABLE ' - || string_agg(format('%I.%I', schemaname, tablename), ', ') - || ' CASCADE;' - FROM pg_tables - WHERE schemaname = 'public' - AND tablename != '__EFMigrationsHistory' - ); -END -$func$; -"""); - migrationBuilder.Sql(""" -CREATE OR REPLACE FUNCTION f_drop_tables() - RETURNS void - LANGUAGE plpgsql AS -$func$ -BEGIN - EXECUTE - (SELECT 'DROP TABLE ' - || string_agg(format('%I.%I', schemaname, tablename), ', ') - || ' CASCADE;' - FROM pg_tables - WHERE schemaname = 'public' - ); -END -$func$; -"""); - migrationBuilder.Sql(""" -CREATE OR REPLACE FUNCTION f_permission_tables(_username text) - RETURNS void - LANGUAGE plpgsql AS -$func$ -DECLARE - _tbl text; - _sch text; -BEGIN - FOR _sch, _tbl IN - SELECT schemaname, tablename - FROM pg_tables - WHERE schemaname = 'public' - LOOP - EXECUTE format('ALTER TABLE %I.%I OWNER TO %I', _sch, _tbl, _username); - END LOOP; -END -$func$; -"""); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "actions"); - - migrationBuilder.DropTable( - name: "ancestry_boosts"); - - migrationBuilder.DropTable( - name: "ancestry_items"); - - migrationBuilder.DropTable( - name: "ancestry_languages"); - - migrationBuilder.DropTable( - name: "background_boosts"); - - migrationBuilder.DropTable( - name: "background_items"); - - migrationBuilder.DropTable( - name: "background_skills"); - - migrationBuilder.DropTable( - name: "class_key_abilities"); - - migrationBuilder.DropTable( - name: "class_progressions"); - - migrationBuilder.DropTable( - name: "class_trainings"); - - migrationBuilder.DropTable( - name: "conditions"); - - migrationBuilder.DropTable( - name: "deity_attributes"); - - migrationBuilder.DropTable( - name: "deity_domains"); - - migrationBuilder.DropTable( - name: "deity_spells"); - - migrationBuilder.DropTable( - name: "deity_training"); - - migrationBuilder.DropTable( - name: "deity_weapons"); - - migrationBuilder.DropTable( - name: "entity_aliases"); - - migrationBuilder.DropTable( - name: "entity_externals"); - - migrationBuilder.DropTable( - name: "entity_keyword"); - - migrationBuilder.DropTable( - name: "entity_sources"); - - migrationBuilder.DropTable( - name: "entity_trait"); - - migrationBuilder.DropTable( - name: "feat_prerequisites"); - - migrationBuilder.DropTable( - name: "frequencies"); - - migrationBuilder.DropTable( - name: "heritages"); - - migrationBuilder.DropTable( - name: "keyword_aliases"); - - migrationBuilder.DropTable( - name: "spell_areas"); - - migrationBuilder.DropTable( - name: "spell_damages"); - - migrationBuilder.DropTable( - name: "spell_defenses"); - - migrationBuilder.DropTable( - name: "spell_rituals"); - - migrationBuilder.DropTable( - name: "languages"); - - migrationBuilder.DropTable( - name: "backgrounds"); - - migrationBuilder.DropTable( - name: "classes"); - - migrationBuilder.DropTable( - name: "trainings"); - - migrationBuilder.DropTable( - name: "deities"); - - migrationBuilder.DropTable( - name: "external_targets"); - - migrationBuilder.DropTable( - name: "sources"); - - migrationBuilder.DropTable( - name: "traits"); - - migrationBuilder.DropTable( - name: "feats"); - - migrationBuilder.DropTable( - name: "ancestries"); - - migrationBuilder.DropTable( - name: "keywords"); - - migrationBuilder.DropTable( - name: "spells"); - - migrationBuilder.DropTable( - name: "entities"); - } -} diff --git a/Pf2eDataScrapper/Migrations/20250417085326_DateOnly.Designer.cs b/Pf2eDataScrapper/Migrations/20250417085326_DateOnly.Designer.cs deleted file mode 100644 index d3aa3c0..0000000 --- a/Pf2eDataScrapper/Migrations/20250417085326_DateOnly.Designer.cs +++ /dev/null @@ -1,2044 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using Pf2eDataScrapper.Model; -using Pf2eDataScrapper.Model.Enum; - -#nullable disable - -namespace Pf2eDataScrapper.Migrations -{ - [DbContext(typeof(Pf2eDbContext))] - [Migration("20250417085326_DateOnly")] - partial class DateOnly - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "9.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_type", new[] { "action", "free", "reaction", "passive" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "darkvision" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "any", "str", "dex", "con", "int", "wis", "cha" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "unknown", "senses", "abilities", "death", "attitudes", "detection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "deity", "pantheon", "covenant", "philosophy" }); - 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, "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[] { "med", "tiny" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "tradition" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("DeityTraining", b => - { - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id"); - - b.Property("SkillsId") - .HasColumnType("integer") - .HasColumnName("skills_id"); - - b.HasKey("DeityId", "SkillsId") - .HasName("pk_deity_training"); - - b.HasIndex("SkillsId") - .HasDatabaseName("ix_deity_training_skills_id"); - - b.ToTable("deity_training", (string)null); - }); - - modelBuilder.Entity("EntityKeyword", b => - { - b.Property("EntitiesId") - .HasColumnType("integer") - .HasColumnName("entities_id"); - - b.Property("KeywordsId") - .HasColumnType("integer") - .HasColumnName("keywords_id"); - - b.HasKey("EntitiesId", "KeywordsId") - .HasName("pk_entity_keyword"); - - b.HasIndex("KeywordsId") - .HasDatabaseName("ix_entity_keyword_keywords_id"); - - b.ToTable("entity_keyword", (string)null); - }); - - modelBuilder.Entity("EntityTrait", b => - { - b.Property("EntitiesId") - .HasColumnType("integer") - .HasColumnName("entities_id"); - - b.Property("TraitsId") - .HasColumnType("integer") - .HasColumnName("traits_id"); - - b.HasKey("EntitiesId", "TraitsId") - .HasName("pk_entity_trait"); - - b.HasIndex("TraitsId") - .HasDatabaseName("ix_entity_trait_traits_id"); - - b.ToTable("entity_trait", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasColumnName("description") - .HasColumnOrder(6) - .HasComment("Текстовое описание объекта"); - - b.Property("Img") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("img") - .HasColumnOrder(5) - .HasComment("Изображение объекта"); - - b.Property("IsChecked") - .HasColumnType("boolean") - .HasColumnName("is_checked") - .HasColumnOrder(9) - .HasComment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи"); - - b.Property("IsTranslated") - .HasColumnType("boolean") - .HasColumnName("is_translated") - .HasColumnOrder(8) - .HasComment("Флаг, указывающий, что у объекта существует перевод"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2) - .HasComment("Отображаемое имя"); - - b.Property("Rarity") - .HasColumnType("entity_rarity") - .HasColumnName("rarity") - .HasColumnOrder(7); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("slug") - .HasColumnOrder(4) - .HasComment("Часть имени в URL"); - - b.Property("Type") - .HasColumnType("entity_type") - .HasColumnName("type") - .HasColumnOrder(3) - .HasComment("Тип объекта"); - - b.HasKey("Id") - .HasName("pk_entities"); - - b.ToTable("entities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(1); - - b.Property("Type") - .HasColumnType("alias_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.Property("Alias") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("alias") - .HasColumnOrder(3); - - b.HasKey("EntityId", "Type") - .HasName("pk_entity_aliases"); - - b.ToTable("entity_aliases", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("slug") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_keywords"); - - b.ToTable("keywords", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("KeywordId") - .HasColumnType("integer") - .HasColumnName("keyword_id") - .HasColumnOrder(2); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_keyword_aliases"); - - b.HasIndex("KeywordId") - .HasDatabaseName("ix_keyword_aliases_keyword_id"); - - b.ToTable("keyword_aliases", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(1); - - b.Property("SourceId") - .HasColumnType("integer") - .HasColumnName("source_id") - .HasColumnOrder(2); - - b.Property("IsRemaster") - .HasColumnType("boolean") - .HasColumnName("is_remaster") - .HasColumnOrder(4) - .HasComment("Флаг, указывающий, что объект является частью ремастера"); - - b.Property("Suffix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("suffix") - .HasColumnOrder(3) - .HasComment("Номер страницы, эррата и т.д."); - - b.HasKey("EntityId", "SourceId") - .HasName("pk_entity_sources"); - - b.HasIndex("SourceId") - .HasDatabaseName("ix_entity_sources_source_id"); - - b.ToTable("entity_sources", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Category") - .HasColumnType("source_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2); - - b.Property("ReleaseDate") - .HasColumnType("date") - .HasColumnName("release_date") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_sources"); - - b.ToTable("sources", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(0); - - b.Property("TargetId") - .HasColumnType("integer") - .HasColumnName("target_id") - .HasColumnOrder(1); - - b.Property("Md5") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("md5") - .HasColumnOrder(3) - .HasComment("Контроль версии объекта"); - - b.Property("Suffix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("suffix") - .HasColumnOrder(2) - .HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта"); - - b.HasKey("EntityId", "TargetId") - .HasName("pk_entity_externals"); - - b.HasIndex("TargetId") - .HasDatabaseName("ix_entity_externals_target_id"); - - b.ToTable("entity_externals", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Icon") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("icon") - .HasColumnOrder(3); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2); - - b.Property("Prefix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("prefix") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_external_targets"); - - b.ToTable("external_targets", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Common.Frequency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Max") - .HasColumnType("integer") - .HasColumnName("max") - .HasColumnOrder(2); - - b.Property("Per") - .HasColumnType("integer") - .HasColumnName("per") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("integer") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_frequencies"); - - b.ToTable("frequencies", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.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("Pf2eDataScrapper.Model.Common.Training", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Key") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("key") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_trainings"); - - b.ToTable("trainings", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Actions") - .HasColumnType("integer") - .HasColumnName("actions") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("action_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("DeathNote") - .HasColumnType("boolean") - .HasColumnName("death_note") - .HasColumnOrder(5); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(6); - - b.Property("Type") - .HasColumnType("action_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_actions"); - - b.ToTable("actions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Hp") - .HasColumnType("integer") - .HasColumnName("hp") - .HasColumnOrder(3); - - b.Property("Reach") - .HasColumnType("integer") - .HasColumnName("reach") - .HasColumnOrder(4); - - b.Property("Size") - .HasColumnType("size") - .HasColumnName("size") - .HasColumnOrder(2); - - b.Property("Speed") - .HasColumnType("integer") - .HasColumnName("speed") - .HasColumnOrder(5); - - b.Property("Vision") - .HasColumnType("ancestry_vision") - .HasColumnName("vision") - .HasColumnOrder(6); - - b.HasKey("Id") - .HasName("pk_ancestries"); - - b.ToTable("ancestries", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(2); - - b.Property("Boost") - .HasColumnType("boolean") - .HasColumnName("boost") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("attribute_values") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_ancestry_boosts"); - - b.HasIndex("AncestryId") - .HasDatabaseName("ix_ancestry_boosts_ancestry_id"); - - b.ToTable("ancestry_boosts", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b => - { - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(1); - - b.Property("ItemId") - .HasColumnType("integer") - .HasColumnName("item_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.HasKey("AncestryId", "ItemId") - .HasName("pk_ancestry_items"); - - b.HasIndex("ItemId") - .HasDatabaseName("ix_ancestry_items_item_id"); - - b.ToTable("ancestry_items", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b => - { - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(1); - - b.Property("LanguageId") - .HasColumnType("integer") - .HasColumnName("language_id") - .HasColumnOrder(2); - - b.Property("IsAdditional") - .HasColumnType("boolean") - .HasColumnName("is_additional") - .HasColumnOrder(3); - - b.HasKey("AncestryId", "LanguageId") - .HasName("pk_ancestry_languages"); - - b.HasIndex("LanguageId") - .HasDatabaseName("ix_ancestry_languages_language_id"); - - b.ToTable("ancestry_languages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.HasKey("Id") - .HasName("pk_backgrounds"); - - b.ToTable("backgrounds", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Attribute") - .HasColumnType("attribute_values") - .HasColumnName("attribute") - .HasColumnOrder(3); - - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_background_boosts"); - - b.HasIndex("BackgroundId") - .HasDatabaseName("ix_background_boosts_background_id"); - - b.ToTable("background_boosts", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b => - { - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(1); - - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.HasKey("BackgroundId", "EntityId") - .HasName("pk_background_items"); - - b.HasIndex("EntityId") - .HasDatabaseName("ix_background_items_entity_id"); - - b.ToTable("background_items", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("training_stage") - .HasColumnName("level") - .HasColumnOrder(4); - - b.Property("TrainingId") - .HasColumnType("integer") - .HasColumnName("training_id") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_background_skills"); - - b.HasIndex("BackgroundId") - .HasDatabaseName("ix_background_skills_background_id"); - - b.HasIndex("TrainingId") - .HasDatabaseName("ix_background_skills_training_id"); - - b.ToTable("background_skills", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("AdditionalTrainedSkills") - .HasColumnType("integer") - .HasColumnName("additional_trained_skills") - .HasColumnOrder(6); - - b.Property("Hp") - .HasColumnType("integer") - .HasColumnName("hp") - .HasColumnOrder(3); - - b.Property("Perception") - .HasColumnType("integer") - .HasColumnName("perception") - .HasColumnOrder(4); - - b.Property("Spellcasting") - .HasColumnType("boolean") - .HasColumnName("spellcasting") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_classes"); - - b.ToTable("classes", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("Value") - .HasColumnType("attribute_values") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_class_key_abilities"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_key_abilities_class_id"); - - b.ToTable("class_key_abilities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(5); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(31); - - b.Property("Type") - .HasColumnType("class_progression_type") - .HasColumnName("type") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_class_progressions"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_progressions_class_id"); - - b.HasIndex("EntityId") - .HasDatabaseName("ix_class_progressions_entity_id"); - - b.ToTable("class_progressions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("Name") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(4); - - b.Property("Stage") - .HasColumnType("integer") - .HasColumnName("stage") - .HasColumnOrder(5); - - b.Property("TrainingId") - .HasColumnType("integer") - .HasColumnName("training_id") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_class_trainings"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_trainings_class_id"); - - b.HasIndex("TrainingId") - .HasDatabaseName("ix_class_trainings_training_id"); - - b.ToTable("class_trainings", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(3); - - b.Property("Group") - .HasColumnType("condition_group") - .HasColumnName("group") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_conditions"); - - b.ToTable("conditions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Category") - .HasColumnType("deity_category") - .HasColumnName("category") - .HasColumnOrder(2); - - b.Property("Fonts") - .HasColumnType("deity_fonts") - .HasColumnName("fonts") - .HasColumnOrder(3); - - b.Property("Sanctification") - .HasColumnType("deity_sanctification") - .HasColumnName("sanctification") - .HasColumnOrder(4); - - b.Property("SanctificationMust") - .HasColumnType("boolean") - .HasColumnName("sanctification_must") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_deities"); - - b.ToTable("deities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b => - { - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(1); - - b.Property("Attribute") - .HasColumnType("attribute_values") - .HasColumnName("attribute") - .HasColumnOrder(2); - - b.HasKey("DeityId", "Attribute") - .HasName("pk_deity_attributes"); - - b.ToTable("deity_attributes", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("IsPrimary") - .HasColumnType("boolean") - .HasColumnName("is_primary") - .HasColumnOrder(3); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_deity_domains"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_domains_deity_id"); - - b.ToTable("deity_domains", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_deity_spells"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_spells_deity_id"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_deity_spells_spell_id"); - - b.ToTable("deity_spells", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("Weapon") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("weapon") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_deity_weapons"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_weapons_deity_id"); - - b.ToTable("deity_weapons", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Actions") - .HasColumnType("integer") - .HasColumnName("actions") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("action_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(10); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(5); - - b.Property("LevelTaken") - .HasColumnType("integer") - .HasColumnName("level_taken") - .HasColumnOrder(6); - - b.Property("Location") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("location") - .HasColumnOrder(8); - - b.Property("MaxTakable") - .HasColumnType("integer") - .HasColumnName("max_takable") - .HasColumnOrder(7); - - b.Property("OnlyLevel1") - .HasColumnType("boolean") - .HasColumnName("only_level1") - .HasColumnOrder(9); - - b.Property("Type") - .HasColumnType("action_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_feats"); - - b.ToTable("feats", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FeatId") - .HasColumnType("integer") - .HasColumnName("feat_id") - .HasColumnOrder(2); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_feat_prerequisites"); - - b.HasIndex("FeatId") - .HasDatabaseName("ix_feat_prerequisites_feat_id"); - - b.ToTable("feat_prerequisites", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_heritages"); - - b.HasIndex("AncestryId") - .HasDatabaseName("ix_heritages_ancestry_id"); - - b.ToTable("heritages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("CanHeightening") - .HasColumnType("boolean") - .HasColumnName("can_heightening") - .HasColumnOrder(11); - - b.Property("Cost") - .HasColumnType("integer") - .HasColumnName("cost") - .HasColumnOrder(3); - - b.Property("Counteraction") - .HasColumnType("boolean") - .HasColumnName("counteraction") - .HasColumnOrder(4); - - b.Property("Duration") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("duration") - .HasColumnOrder(6); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(2); - - b.Property("Range") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("range") - .HasColumnOrder(7); - - b.Property("Requirements") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("requirements") - .HasColumnOrder(8); - - b.Property("Sustained") - .HasColumnType("boolean") - .HasColumnName("sustained") - .HasColumnOrder(5); - - b.Property("Target") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("target") - .HasColumnOrder(9); - - b.Property("Time") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("time") - .HasColumnOrder(10); - - b.HasKey("Id") - .HasName("pk_spells"); - - b.ToTable("spells", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b => - { - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(1); - - b.Property("Details") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("details") - .HasColumnOrder(2); - - b.Property("Type") - .HasColumnType("spell_area_type") - .HasColumnName("type") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("integer") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("SpellId") - .HasName("pk_spell_areas"); - - b.ToTable("spell_areas", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ApplyMod") - .HasColumnType("boolean") - .HasColumnName("apply_mod") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("spell_damage_category") - .HasColumnName("category") - .HasColumnOrder(5); - - b.Property("Formula") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("formula") - .HasColumnOrder(6); - - b.Property("Key") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("key") - .HasColumnOrder(3); - - b.Property("Kinds") - .HasColumnType("spell_damage_kinds") - .HasColumnName("kinds") - .HasColumnOrder(7); - - b.Property("Materials") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("materials") - .HasColumnOrder(8); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(2); - - b.Property("Type") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("type") - .HasColumnOrder(9); - - b.HasKey("Id") - .HasName("pk_spell_damages"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_spell_damages_spell_id"); - - b.ToTable("spell_damages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("IsBasic") - .HasColumnType("boolean") - .HasColumnName("is_basic") - .HasColumnOrder(4); - - b.Property("IsPassive") - .HasColumnType("boolean") - .HasColumnName("is_passive") - .HasColumnOrder(3); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(2); - - b.Property("Statistic") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("statistic") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_spell_defenses"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_spell_defenses_spell_id"); - - b.ToTable("spell_defenses", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b => - { - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(1); - - b.Property("PrimaryCheck") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("primary_check") - .HasColumnOrder(2); - - b.Property("SecondaryCasters") - .HasColumnType("integer") - .HasColumnName("secondary_casters") - .HasColumnOrder(3); - - b.Property("SecondaryChecks") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("secondary_checks") - .HasColumnOrder(4); - - b.HasKey("SpellId") - .HasName("pk_spell_rituals"); - - b.ToTable("spell_rituals", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Type") - .HasColumnType("trait_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_traits"); - - b.ToTable("traits", (string)null); - }); - - modelBuilder.Entity("DeityTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", null) - .WithMany() - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_training_deities_deity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", null) - .WithMany() - .HasForeignKey("SkillsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_training_trainings_skills_id"); - }); - - modelBuilder.Entity("EntityKeyword", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null) - .WithMany() - .HasForeignKey("EntitiesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_keyword_entities_entities_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", null) - .WithMany() - .HasForeignKey("KeywordsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_keyword_keywords_keywords_id"); - }); - - modelBuilder.Entity("EntityTrait", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null) - .WithMany() - .HasForeignKey("EntitiesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_trait_entities_entities_id"); - - b.HasOne("Pf2eDataScrapper.Model.Structure.Trait", null) - .WithMany() - .HasForeignKey("TraitsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_trait_traits_traits_id"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Aliases") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_aliases_entities_entity_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", "Keyword") - .WithMany("Aliases") - .HasForeignKey("KeywordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_keyword_aliases_keywords_keyword_id"); - - b.Navigation("Keyword"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Sources") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_sources_entities_entity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Source.Source", "Source") - .WithMany("EntitySources") - .HasForeignKey("SourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_sources_sources_source_id"); - - b.Navigation("Entity"); - - b.Navigation("Source"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Extrnals") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_externals_entities_entity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", "Target") - .WithMany("EntityExternals") - .HasForeignKey("TargetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_externals_external_targets_target_id"); - - b.Navigation("Entity"); - - b.Navigation("Target"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Action", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_actions_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Ancestry", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestries_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryBoosts") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_boosts_ancestries_ancestry_id"); - - b.Navigation("Ancestry"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryItems") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_items_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Item") - .WithMany() - .HasForeignKey("ItemId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_items_entities_item_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Item"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryLanguages") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_languages_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Language", "Language") - .WithMany() - .HasForeignKey("LanguageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_languages_languages_language_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Language"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Background", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_backgrounds_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundBoosts") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_boosts_backgrounds_background_id"); - - b.Navigation("Background"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundItems") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_items_backgrounds_background_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_items_entities_entity_id"); - - b.Navigation("Background"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundSkills") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_skills_backgrounds_background_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training") - .WithMany() - .HasForeignKey("TrainingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_skills_trainings_training_id"); - - b.Navigation("Background"); - - b.Navigation("Training"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Class", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_classes_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassKeyAbilities") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_key_abilities_classes_class_id"); - - b.Navigation("Class"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassProgressions") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_progressions_classes_class_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_class_progressions_entities_entity_id"); - - b.Navigation("Class"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassTrainings") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_trainings_classes_class_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training") - .WithMany() - .HasForeignKey("TrainingId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_class_trainings_trainings_training_id"); - - b.Navigation("Class"); - - b.Navigation("Training"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Condition", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_conditions_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Deity", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deities_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityAttributes") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_attributes_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityDomains") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_domains_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeitySpells") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_spells_deities_deity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany() - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_spells_spells_spell_id"); - - b.Navigation("Deity"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityWeapons") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_weapons_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Feat", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_feats_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Feat", "Feat") - .WithMany("FeatPrerequisites") - .HasForeignKey("FeatId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_feat_prerequisites_feats_feat_id"); - - b.Navigation("Feat"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("Heritages") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_heritages_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Heritage", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_heritages_entities_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Spell", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spells_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithOne("SpellArea") - .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", "SpellId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_spell_areas_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany("SpellDamages") - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spell_damages_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany("SpellDefenses") - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spell_defenses_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithOne("SpellRitual") - .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", "SpellId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_spell_rituals_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Trait", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_traits_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b => - { - b.Navigation("Aliases"); - - b.Navigation("Extrnals"); - - b.Navigation("Sources"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b => - { - b.Navigation("Aliases"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b => - { - b.Navigation("EntitySources"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b => - { - b.Navigation("EntityExternals"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.Navigation("AncestryBoosts"); - - b.Navigation("AncestryItems"); - - b.Navigation("AncestryLanguages"); - - b.Navigation("Heritages"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.Navigation("BackgroundBoosts"); - - b.Navigation("BackgroundItems"); - - b.Navigation("BackgroundSkills"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.Navigation("ClassKeyAbilities"); - - b.Navigation("ClassProgressions"); - - b.Navigation("ClassTrainings"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.Navigation("DeityAttributes"); - - b.Navigation("DeityDomains"); - - b.Navigation("DeitySpells"); - - b.Navigation("DeityWeapons"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.Navigation("FeatPrerequisites"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.Navigation("SpellArea"); - - b.Navigation("SpellDamages"); - - b.Navigation("SpellDefenses"); - - b.Navigation("SpellRitual"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Pf2eDataScrapper/Migrations/20250417085326_DateOnly.cs b/Pf2eDataScrapper/Migrations/20250417085326_DateOnly.cs deleted file mode 100644 index aa84a2e..0000000 --- a/Pf2eDataScrapper/Migrations/20250417085326_DateOnly.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Pf2eDataScrapper.Migrations; - -/// -public partial class DateOnly : Migration -{ - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "release_date", - table: "sources", - type: "date", - nullable: true, - oldClrType: typeof(DateTime), - oldType: "timestamp with time zone", - oldNullable: true); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn( - name: "release_date", - table: "sources", - type: "timestamp with time zone", - nullable: true, - oldClrType: typeof(DateOnly), - oldType: "date", - oldNullable: true); - } -} diff --git a/Pf2eDataScrapper/Migrations/Pf2eDbContextModelSnapshot.cs b/Pf2eDataScrapper/Migrations/Pf2eDbContextModelSnapshot.cs deleted file mode 100644 index 32c2661..0000000 --- a/Pf2eDataScrapper/Migrations/Pf2eDbContextModelSnapshot.cs +++ /dev/null @@ -1,2041 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; -using Pf2eDataScrapper.Model; -using Pf2eDataScrapper.Model.Enum; - -#nullable disable - -namespace Pf2eDataScrapper.Migrations -{ - [DbContext(typeof(Pf2eDbContext))] - partial class Pf2eDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "9.0.4") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_type", new[] { "action", "free", "reaction", "passive" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "darkvision" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "any", "str", "dex", "con", "int", "wis", "cha" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "unknown", "senses", "abilities", "death", "attitudes", "detection" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "deity", "pantheon", "covenant", "philosophy" }); - 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, "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[] { "med", "tiny" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" }); - NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "tradition" }); - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("DeityTraining", b => - { - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id"); - - b.Property("SkillsId") - .HasColumnType("integer") - .HasColumnName("skills_id"); - - b.HasKey("DeityId", "SkillsId") - .HasName("pk_deity_training"); - - b.HasIndex("SkillsId") - .HasDatabaseName("ix_deity_training_skills_id"); - - b.ToTable("deity_training", (string)null); - }); - - modelBuilder.Entity("EntityKeyword", b => - { - b.Property("EntitiesId") - .HasColumnType("integer") - .HasColumnName("entities_id"); - - b.Property("KeywordsId") - .HasColumnType("integer") - .HasColumnName("keywords_id"); - - b.HasKey("EntitiesId", "KeywordsId") - .HasName("pk_entity_keyword"); - - b.HasIndex("KeywordsId") - .HasDatabaseName("ix_entity_keyword_keywords_id"); - - b.ToTable("entity_keyword", (string)null); - }); - - modelBuilder.Entity("EntityTrait", b => - { - b.Property("EntitiesId") - .HasColumnType("integer") - .HasColumnName("entities_id"); - - b.Property("TraitsId") - .HasColumnType("integer") - .HasColumnName("traits_id"); - - b.HasKey("EntitiesId", "TraitsId") - .HasName("pk_entity_trait"); - - b.HasIndex("TraitsId") - .HasDatabaseName("ix_entity_trait_traits_id"); - - b.ToTable("entity_trait", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Description") - .IsRequired() - .HasColumnType("text") - .HasColumnName("description") - .HasColumnOrder(6) - .HasComment("Текстовое описание объекта"); - - b.Property("Img") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("img") - .HasColumnOrder(5) - .HasComment("Изображение объекта"); - - b.Property("IsChecked") - .HasColumnType("boolean") - .HasColumnName("is_checked") - .HasColumnOrder(9) - .HasComment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи"); - - b.Property("IsTranslated") - .HasColumnType("boolean") - .HasColumnName("is_translated") - .HasColumnOrder(8) - .HasComment("Флаг, указывающий, что у объекта существует перевод"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2) - .HasComment("Отображаемое имя"); - - b.Property("Rarity") - .HasColumnType("entity_rarity") - .HasColumnName("rarity") - .HasColumnOrder(7); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("slug") - .HasColumnOrder(4) - .HasComment("Часть имени в URL"); - - b.Property("Type") - .HasColumnType("entity_type") - .HasColumnName("type") - .HasColumnOrder(3) - .HasComment("Тип объекта"); - - b.HasKey("Id") - .HasName("pk_entities"); - - b.ToTable("entities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(1); - - b.Property("Type") - .HasColumnType("alias_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.Property("Alias") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("alias") - .HasColumnOrder(3); - - b.HasKey("EntityId", "Type") - .HasName("pk_entity_aliases"); - - b.ToTable("entity_aliases", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Slug") - .IsRequired() - .HasColumnType("text") - .HasColumnName("slug") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_keywords"); - - b.ToTable("keywords", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("KeywordId") - .HasColumnType("integer") - .HasColumnName("keyword_id") - .HasColumnOrder(2); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_keyword_aliases"); - - b.HasIndex("KeywordId") - .HasDatabaseName("ix_keyword_aliases_keyword_id"); - - b.ToTable("keyword_aliases", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(1); - - b.Property("SourceId") - .HasColumnType("integer") - .HasColumnName("source_id") - .HasColumnOrder(2); - - b.Property("IsRemaster") - .HasColumnType("boolean") - .HasColumnName("is_remaster") - .HasColumnOrder(4) - .HasComment("Флаг, указывающий, что объект является частью ремастера"); - - b.Property("Suffix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("suffix") - .HasColumnOrder(3) - .HasComment("Номер страницы, эррата и т.д."); - - b.HasKey("EntityId", "SourceId") - .HasName("pk_entity_sources"); - - b.HasIndex("SourceId") - .HasDatabaseName("ix_entity_sources_source_id"); - - b.ToTable("entity_sources", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Category") - .HasColumnType("source_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2); - - b.Property("ReleaseDate") - .HasColumnType("date") - .HasColumnName("release_date") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_sources"); - - b.ToTable("sources", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b => - { - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(0); - - b.Property("TargetId") - .HasColumnType("integer") - .HasColumnName("target_id") - .HasColumnOrder(1); - - b.Property("Md5") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("character varying(32)") - .HasColumnName("md5") - .HasColumnOrder(3) - .HasComment("Контроль версии объекта"); - - b.Property("Suffix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("suffix") - .HasColumnOrder(2) - .HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта"); - - b.HasKey("EntityId", "TargetId") - .HasName("pk_entity_externals"); - - b.HasIndex("TargetId") - .HasDatabaseName("ix_entity_externals_target_id"); - - b.ToTable("entity_externals", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Icon") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("icon") - .HasColumnOrder(3); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(2); - - b.Property("Prefix") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("prefix") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_external_targets"); - - b.ToTable("external_targets", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Common.Frequency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Max") - .HasColumnType("integer") - .HasColumnName("max") - .HasColumnOrder(2); - - b.Property("Per") - .HasColumnType("integer") - .HasColumnName("per") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("integer") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_frequencies"); - - b.ToTable("frequencies", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.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("Pf2eDataScrapper.Model.Common.Training", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Key") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("key") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_trainings"); - - b.ToTable("trainings", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Actions") - .HasColumnType("integer") - .HasColumnName("actions") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("action_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("DeathNote") - .HasColumnType("boolean") - .HasColumnName("death_note") - .HasColumnOrder(5); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(6); - - b.Property("Type") - .HasColumnType("action_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_actions"); - - b.ToTable("actions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Hp") - .HasColumnType("integer") - .HasColumnName("hp") - .HasColumnOrder(3); - - b.Property("Reach") - .HasColumnType("integer") - .HasColumnName("reach") - .HasColumnOrder(4); - - b.Property("Size") - .HasColumnType("size") - .HasColumnName("size") - .HasColumnOrder(2); - - b.Property("Speed") - .HasColumnType("integer") - .HasColumnName("speed") - .HasColumnOrder(5); - - b.Property("Vision") - .HasColumnType("ancestry_vision") - .HasColumnName("vision") - .HasColumnOrder(6); - - b.HasKey("Id") - .HasName("pk_ancestries"); - - b.ToTable("ancestries", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(2); - - b.Property("Boost") - .HasColumnType("boolean") - .HasColumnName("boost") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("attribute_values") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_ancestry_boosts"); - - b.HasIndex("AncestryId") - .HasDatabaseName("ix_ancestry_boosts_ancestry_id"); - - b.ToTable("ancestry_boosts", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b => - { - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(1); - - b.Property("ItemId") - .HasColumnType("integer") - .HasColumnName("item_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.HasKey("AncestryId", "ItemId") - .HasName("pk_ancestry_items"); - - b.HasIndex("ItemId") - .HasDatabaseName("ix_ancestry_items_item_id"); - - b.ToTable("ancestry_items", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b => - { - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(1); - - b.Property("LanguageId") - .HasColumnType("integer") - .HasColumnName("language_id") - .HasColumnOrder(2); - - b.Property("IsAdditional") - .HasColumnType("boolean") - .HasColumnName("is_additional") - .HasColumnOrder(3); - - b.HasKey("AncestryId", "LanguageId") - .HasName("pk_ancestry_languages"); - - b.HasIndex("LanguageId") - .HasDatabaseName("ix_ancestry_languages_language_id"); - - b.ToTable("ancestry_languages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.HasKey("Id") - .HasName("pk_backgrounds"); - - b.ToTable("backgrounds", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Attribute") - .HasColumnType("attribute_values") - .HasColumnName("attribute") - .HasColumnOrder(3); - - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_background_boosts"); - - b.HasIndex("BackgroundId") - .HasDatabaseName("ix_background_boosts_background_id"); - - b.ToTable("background_boosts", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b => - { - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(1); - - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.HasKey("BackgroundId", "EntityId") - .HasName("pk_background_items"); - - b.HasIndex("EntityId") - .HasDatabaseName("ix_background_items_entity_id"); - - b.ToTable("background_items", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("BackgroundId") - .HasColumnType("integer") - .HasColumnName("background_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("training_stage") - .HasColumnName("level") - .HasColumnOrder(4); - - b.Property("TrainingId") - .HasColumnType("integer") - .HasColumnName("training_id") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_background_skills"); - - b.HasIndex("BackgroundId") - .HasDatabaseName("ix_background_skills_background_id"); - - b.HasIndex("TrainingId") - .HasDatabaseName("ix_background_skills_training_id"); - - b.ToTable("background_skills", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("AdditionalTrainedSkills") - .HasColumnType("integer") - .HasColumnName("additional_trained_skills") - .HasColumnOrder(6); - - b.Property("Hp") - .HasColumnType("integer") - .HasColumnName("hp") - .HasColumnOrder(3); - - b.Property("Perception") - .HasColumnType("integer") - .HasColumnName("perception") - .HasColumnOrder(4); - - b.Property("Spellcasting") - .HasColumnType("boolean") - .HasColumnName("spellcasting") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_classes"); - - b.ToTable("classes", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("Value") - .HasColumnType("attribute_values") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_class_key_abilities"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_key_abilities_class_id"); - - b.ToTable("class_key_abilities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("EntityId") - .HasColumnType("integer") - .HasColumnName("entity_id") - .HasColumnOrder(5); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(31); - - b.Property("Type") - .HasColumnType("class_progression_type") - .HasColumnName("type") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_class_progressions"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_progressions_class_id"); - - b.HasIndex("EntityId") - .HasDatabaseName("ix_class_progressions_entity_id"); - - b.ToTable("class_progressions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClassId") - .HasColumnType("integer") - .HasColumnName("class_id") - .HasColumnOrder(2); - - b.Property("Name") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("name") - .HasColumnOrder(4); - - b.Property("Stage") - .HasColumnType("integer") - .HasColumnName("stage") - .HasColumnOrder(5); - - b.Property("TrainingId") - .HasColumnType("integer") - .HasColumnName("training_id") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_class_trainings"); - - b.HasIndex("ClassId") - .HasDatabaseName("ix_class_trainings_class_id"); - - b.HasIndex("TrainingId") - .HasDatabaseName("ix_class_trainings_training_id"); - - b.ToTable("class_trainings", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(3); - - b.Property("Group") - .HasColumnType("condition_group") - .HasColumnName("group") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_conditions"); - - b.ToTable("conditions", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Category") - .HasColumnType("deity_category") - .HasColumnName("category") - .HasColumnOrder(2); - - b.Property("Fonts") - .HasColumnType("deity_fonts") - .HasColumnName("fonts") - .HasColumnOrder(3); - - b.Property("Sanctification") - .HasColumnType("deity_sanctification") - .HasColumnName("sanctification") - .HasColumnOrder(4); - - b.Property("SanctificationMust") - .HasColumnType("boolean") - .HasColumnName("sanctification_must") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_deities"); - - b.ToTable("deities", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b => - { - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(1); - - b.Property("Attribute") - .HasColumnType("attribute_values") - .HasColumnName("attribute") - .HasColumnOrder(2); - - b.HasKey("DeityId", "Attribute") - .HasName("pk_deity_attributes"); - - b.ToTable("deity_attributes", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("IsPrimary") - .HasColumnType("boolean") - .HasColumnName("is_primary") - .HasColumnOrder(3); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_deity_domains"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_domains_deity_id"); - - b.ToTable("deity_domains", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(3); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(4); - - b.HasKey("Id") - .HasName("pk_deity_spells"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_spells_deity_id"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_deity_spells_spell_id"); - - b.ToTable("deity_spells", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("DeityId") - .HasColumnType("integer") - .HasColumnName("deity_id") - .HasColumnOrder(2); - - b.Property("Weapon") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("weapon") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_deity_weapons"); - - b.HasIndex("DeityId") - .HasDatabaseName("ix_deity_weapons_deity_id"); - - b.ToTable("deity_weapons", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Actions") - .HasColumnType("integer") - .HasColumnName("actions") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("action_category") - .HasColumnName("category") - .HasColumnOrder(3); - - b.Property("Extra") - .HasColumnType("text") - .HasColumnName("extra") - .HasColumnOrder(10); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(5); - - b.Property("LevelTaken") - .HasColumnType("integer") - .HasColumnName("level_taken") - .HasColumnOrder(6); - - b.Property("Location") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("location") - .HasColumnOrder(8); - - b.Property("MaxTakable") - .HasColumnType("integer") - .HasColumnName("max_takable") - .HasColumnOrder(7); - - b.Property("OnlyLevel1") - .HasColumnType("boolean") - .HasColumnName("only_level1") - .HasColumnOrder(9); - - b.Property("Type") - .HasColumnType("action_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_feats"); - - b.ToTable("feats", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FeatId") - .HasColumnType("integer") - .HasColumnName("feat_id") - .HasColumnOrder(2); - - b.Property("Value") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("value") - .HasColumnOrder(3); - - b.HasKey("Id") - .HasName("pk_feat_prerequisites"); - - b.HasIndex("FeatId") - .HasDatabaseName("ix_feat_prerequisites_feat_id"); - - b.ToTable("feat_prerequisites", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("AncestryId") - .HasColumnType("integer") - .HasColumnName("ancestry_id") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_heritages"); - - b.HasIndex("AncestryId") - .HasDatabaseName("ix_heritages_ancestry_id"); - - b.ToTable("heritages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("CanHeightening") - .HasColumnType("boolean") - .HasColumnName("can_heightening") - .HasColumnOrder(11); - - b.Property("Cost") - .HasColumnType("integer") - .HasColumnName("cost") - .HasColumnOrder(3); - - b.Property("Counteraction") - .HasColumnType("boolean") - .HasColumnName("counteraction") - .HasColumnOrder(4); - - b.Property("Duration") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("duration") - .HasColumnOrder(6); - - b.Property("Level") - .HasColumnType("integer") - .HasColumnName("level") - .HasColumnOrder(2); - - b.Property("Range") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("range") - .HasColumnOrder(7); - - b.Property("Requirements") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("requirements") - .HasColumnOrder(8); - - b.Property("Sustained") - .HasColumnType("boolean") - .HasColumnName("sustained") - .HasColumnOrder(5); - - b.Property("Target") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("target") - .HasColumnOrder(9); - - b.Property("Time") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("time") - .HasColumnOrder(10); - - b.HasKey("Id") - .HasName("pk_spells"); - - b.ToTable("spells", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b => - { - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(1); - - b.Property("Details") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("details") - .HasColumnOrder(2); - - b.Property("Type") - .HasColumnType("spell_area_type") - .HasColumnName("type") - .HasColumnOrder(3); - - b.Property("Value") - .HasColumnType("integer") - .HasColumnName("value") - .HasColumnOrder(4); - - b.HasKey("SpellId") - .HasName("pk_spell_areas"); - - b.ToTable("spell_areas", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ApplyMod") - .HasColumnType("boolean") - .HasColumnName("apply_mod") - .HasColumnOrder(4); - - b.Property("Category") - .HasColumnType("spell_damage_category") - .HasColumnName("category") - .HasColumnOrder(5); - - b.Property("Formula") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("formula") - .HasColumnOrder(6); - - b.Property("Key") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("key") - .HasColumnOrder(3); - - b.Property("Kinds") - .HasColumnType("spell_damage_kinds") - .HasColumnName("kinds") - .HasColumnOrder(7); - - b.Property("Materials") - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("materials") - .HasColumnOrder(8); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(2); - - b.Property("Type") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("type") - .HasColumnOrder(9); - - b.HasKey("Id") - .HasName("pk_spell_damages"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_spell_damages_spell_id"); - - b.ToTable("spell_damages", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("IsBasic") - .HasColumnType("boolean") - .HasColumnName("is_basic") - .HasColumnOrder(4); - - b.Property("IsPassive") - .HasColumnType("boolean") - .HasColumnName("is_passive") - .HasColumnOrder(3); - - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(2); - - b.Property("Statistic") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("statistic") - .HasColumnOrder(5); - - b.HasKey("Id") - .HasName("pk_spell_defenses"); - - b.HasIndex("SpellId") - .HasDatabaseName("ix_spell_defenses_spell_id"); - - b.ToTable("spell_defenses", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b => - { - b.Property("SpellId") - .HasColumnType("integer") - .HasColumnName("spell_id") - .HasColumnOrder(1); - - b.Property("PrimaryCheck") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("primary_check") - .HasColumnOrder(2); - - b.Property("SecondaryCasters") - .HasColumnType("integer") - .HasColumnName("secondary_casters") - .HasColumnOrder(3); - - b.Property("SecondaryChecks") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("character varying(255)") - .HasColumnName("secondary_checks") - .HasColumnOrder(4); - - b.HasKey("SpellId") - .HasName("pk_spell_rituals"); - - b.ToTable("spell_rituals", (string)null); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasColumnName("id") - .HasColumnOrder(1); - - b.Property("Type") - .HasColumnType("trait_type") - .HasColumnName("type") - .HasColumnOrder(2); - - b.HasKey("Id") - .HasName("pk_traits"); - - b.ToTable("traits", (string)null); - }); - - modelBuilder.Entity("DeityTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", null) - .WithMany() - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_training_deities_deity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", null) - .WithMany() - .HasForeignKey("SkillsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_training_trainings_skills_id"); - }); - - modelBuilder.Entity("EntityKeyword", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null) - .WithMany() - .HasForeignKey("EntitiesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_keyword_entities_entities_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", null) - .WithMany() - .HasForeignKey("KeywordsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_keyword_keywords_keywords_id"); - }); - - modelBuilder.Entity("EntityTrait", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null) - .WithMany() - .HasForeignKey("EntitiesId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_trait_entities_entities_id"); - - b.HasOne("Pf2eDataScrapper.Model.Structure.Trait", null) - .WithMany() - .HasForeignKey("TraitsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_trait_traits_traits_id"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Aliases") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_aliases_entities_entity_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", "Keyword") - .WithMany("Aliases") - .HasForeignKey("KeywordId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_keyword_aliases_keywords_keyword_id"); - - b.Navigation("Keyword"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Sources") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_sources_entities_entity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Source.Source", "Source") - .WithMany("EntitySources") - .HasForeignKey("SourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_sources_sources_source_id"); - - b.Navigation("Entity"); - - b.Navigation("Source"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany("Extrnals") - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_externals_entities_entity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", "Target") - .WithMany("EntityExternals") - .HasForeignKey("TargetId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_entity_externals_external_targets_target_id"); - - b.Navigation("Entity"); - - b.Navigation("Target"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Action", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_actions_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Ancestry", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestries_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryBoosts") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_boosts_ancestries_ancestry_id"); - - b.Navigation("Ancestry"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryItems") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_items_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Item") - .WithMany() - .HasForeignKey("ItemId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_items_entities_item_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Item"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("AncestryLanguages") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_languages_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Language", "Language") - .WithMany() - .HasForeignKey("LanguageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_ancestry_languages_languages_language_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Language"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Background", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_backgrounds_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundBoosts") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_boosts_backgrounds_background_id"); - - b.Navigation("Background"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundItems") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_items_backgrounds_background_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_items_entities_entity_id"); - - b.Navigation("Background"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background") - .WithMany("BackgroundSkills") - .HasForeignKey("BackgroundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_skills_backgrounds_background_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training") - .WithMany() - .HasForeignKey("TrainingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_background_skills_trainings_training_id"); - - b.Navigation("Background"); - - b.Navigation("Training"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Class", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_classes_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassKeyAbilities") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_key_abilities_classes_class_id"); - - b.Navigation("Class"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassProgressions") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_progressions_classes_class_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_class_progressions_entities_entity_id"); - - b.Navigation("Class"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class") - .WithMany("ClassTrainings") - .HasForeignKey("ClassId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_class_trainings_classes_class_id"); - - b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training") - .WithMany() - .HasForeignKey("TrainingId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("fk_class_trainings_trainings_training_id"); - - b.Navigation("Class"); - - b.Navigation("Training"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Condition", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_conditions_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Deity", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deities_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityAttributes") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_attributes_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityDomains") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_domains_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeitySpells") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_spells_deities_deity_id"); - - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany() - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_spells_spells_spell_id"); - - b.Navigation("Deity"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity") - .WithMany("DeityWeapons") - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_deity_weapons_deities_deity_id"); - - b.Navigation("Deity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Feat", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_feats_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Feat", "Feat") - .WithMany("FeatPrerequisites") - .HasForeignKey("FeatId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_feat_prerequisites_feats_feat_id"); - - b.Navigation("Feat"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry") - .WithMany("Heritages") - .HasForeignKey("AncestryId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_heritages_ancestries_ancestry_id"); - - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Heritage", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_heritages_entities_id"); - - b.Navigation("Ancestry"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Spell", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spells_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithOne("SpellArea") - .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", "SpellId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_spell_areas_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany("SpellDamages") - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spell_damages_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithMany("SpellDefenses") - .HasForeignKey("SpellId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_spell_defenses_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b => - { - b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell") - .WithOne("SpellRitual") - .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", "SpellId") - .OnDelete(DeleteBehavior.Cascade) - .HasConstraintName("fk_spell_rituals_spells_spell_id"); - - b.Navigation("Spell"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b => - { - b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity") - .WithOne() - .HasForeignKey("Pf2eDataScrapper.Model.Structure.Trait", "Id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("fk_traits_entities_id"); - - b.Navigation("Entity"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b => - { - b.Navigation("Aliases"); - - b.Navigation("Extrnals"); - - b.Navigation("Sources"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b => - { - b.Navigation("Aliases"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b => - { - b.Navigation("EntitySources"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b => - { - b.Navigation("EntityExternals"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b => - { - b.Navigation("AncestryBoosts"); - - b.Navigation("AncestryItems"); - - b.Navigation("AncestryLanguages"); - - b.Navigation("Heritages"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b => - { - b.Navigation("BackgroundBoosts"); - - b.Navigation("BackgroundItems"); - - b.Navigation("BackgroundSkills"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b => - { - b.Navigation("ClassKeyAbilities"); - - b.Navigation("ClassProgressions"); - - b.Navigation("ClassTrainings"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b => - { - b.Navigation("DeityAttributes"); - - b.Navigation("DeityDomains"); - - b.Navigation("DeitySpells"); - - b.Navigation("DeityWeapons"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b => - { - b.Navigation("FeatPrerequisites"); - }); - - modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b => - { - b.Navigation("SpellArea"); - - b.Navigation("SpellDamages"); - - b.Navigation("SpellDefenses"); - - b.Navigation("SpellRitual"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Pf2eDataScrapper/Model/Base/Entity.cs b/Pf2eDataScrapper/Model/Base/Entity.cs index b82ad9f..1fd8c56 100644 --- a/Pf2eDataScrapper/Model/Base/Entity.cs +++ b/Pf2eDataScrapper/Model/Base/Entity.cs @@ -57,5 +57,5 @@ public class Entity public virtual ICollection Sources { get; set; } = []; - public virtual ICollection Extrnals { get; set; } = []; + public virtual ICollection Externals { get; set; } = []; } diff --git a/Pf2eDataScrapper/Model/Enum/ActionType.cs b/Pf2eDataScrapper/Model/Enum/ActionType.cs index cd9f0b5..9ca33b1 100644 --- a/Pf2eDataScrapper/Model/Enum/ActionType.cs +++ b/Pf2eDataScrapper/Model/Enum/ActionType.cs @@ -1,20 +1,30 @@ using NpgsqlTypes; +using Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder; namespace Pf2eDataScrapper.Model.Enum; public enum ActionType { - [PgName("action")] - Action, + [PgName("none")] + None, - [PgName("free")] - Free, + [AonprdEnum(["Single Action", "Reaction or One Action", "Free Action or One Action"])] + [PgName("1_action")] + SingleAction, - [PgName("reaction")] - Reaction, + [AonprdEnum("Two Actions")] + [PgName("2_actions")] + TwoActions, - [PgName("passive")] - Passive, + [AonprdEnum("Three Actions")] + [PgName("3_actions")] + ThreeActions, + [AonprdEnum(["Single Action to Three Actions", "Single Action or more Actions"])] + [PgName("1-3_actions")] + SingleToThreeActions, + [AonprdEnum(["Single Action or Two Actions", "Single Action to Two Actions"])] + [PgName("1-2_actions")] + SingleToTwoActions, } \ No newline at end of file diff --git a/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs b/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs index a765ed3..b0ff8cc 100644 --- a/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs +++ b/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using LinqToDB.Common; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using Pf2eDataScrapper.Model.Base; using Pf2eDataScrapper.Model.Base.Keywords; @@ -28,6 +29,7 @@ public partial class Pf2eDbContext DefineBase(modelBuilder); DefineCommon(modelBuilder); DefineStructure(modelBuilder); + DefineFunctions(); } private void DefineEnums(ModelBuilder modelBuilder) @@ -76,7 +78,7 @@ public partial class Pf2eDbContext .OnDelete(DeleteBehavior.Cascade); // EntityExternal - entity.HasMany(e => e.Extrnals).WithOne(e => e.Entity) + entity.HasMany(e => e.Externals).WithOne(e => e.Entity) .HasForeignKey(e => e.EntityId) .OnDelete(DeleteBehavior.Cascade); }); @@ -324,4 +326,62 @@ public partial class Pf2eDbContext BindEntity(entity); }); } + + private void DefineFunctions() + { + Database.ExecuteSql($""" + CREATE OR REPLACE FUNCTION f_truncate_tables() + RETURNS void + LANGUAGE plpgsql AS + $func$ + BEGIN + EXECUTE ( + SELECT 'TRUNCATE TABLE ' + || string_agg(format('%I.%I', schemaname, tablename), ', ') + || ' CASCADE;' + FROM pg_tables + WHERE schemaname = 'public' + AND tablename != '__EFMigrationsHistory' + ); + END + $func$; + """); + + Database.ExecuteSql($""" + CREATE OR REPLACE FUNCTION f_drop_tables() + RETURNS void + LANGUAGE plpgsql AS + $func$ + BEGIN + EXECUTE ( + SELECT 'DROP TABLE ' + || string_agg(format('%I.%I', schemaname, tablename), ', ') + || ' CASCADE;' + FROM pg_tables + WHERE schemaname = 'public' + ); + END + $func$; + """); + + Database.ExecuteSql($""" + CREATE OR REPLACE FUNCTION f_permission_tables(_username text) + RETURNS void + LANGUAGE plpgsql AS + $func$ + DECLARE + _tbl text; + _sch text; + BEGIN + FOR _sch, _tbl IN + SELECT schemaname, tablename + FROM pg_tables + WHERE schemaname = 'public' + LOOP + EXECUTE format('ALTER TABLE %I.%I OWNER TO %I', _sch, _tbl, _username); + END LOOP; + END + $func$; + """); + } } diff --git a/Pf2eDataScrapper/Model/Structure/Action.cs b/Pf2eDataScrapper/Model/Structure/Action.cs index 1f45451..8815a06 100644 --- a/Pf2eDataScrapper/Model/Structure/Action.cs +++ b/Pf2eDataScrapper/Model/Structure/Action.cs @@ -15,13 +15,19 @@ public partial class Action : IEntity public ActionType Type { get; set; } [Column(Order = 3)] - public ActionCategory Category { get; set; } + public int? Actions { get; set; } = null; - [Column(Order = 4)] - public int? Actions { get; set; } + [Column(Order = 4)] + public int? MaxActions { get; set; } = null; - [Column(Order = 5)] - public bool? DeathNote { get; set; } + [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)] public string? Extra { get; set; }