From d095001caf49e690fc9ffb21a648718db13f76e7 Mon Sep 17 00:00:00 2001 From: kozhilya Date: Wed, 16 Apr 2025 13:01:54 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=B0=D0=BF=D0=B8=D1=82=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataBuilder/AbstractProcessor.cs | 3 +- Pf2eDataScrapper/Model/Ancestry.cs | 26 - Pf2eDataScrapper/Model/AncestryBoost.cs | 14 - Pf2eDataScrapper/Model/AncestryItem.cs | 16 - Pf2eDataScrapper/Model/AncestryLanguage.cs | 14 - Pf2eDataScrapper/Model/Background.cs | 16 - Pf2eDataScrapper/Model/BackgroundBoost.cs | 12 - Pf2eDataScrapper/Model/BackgroundItem.cs | 16 - Pf2eDataScrapper/Model/BackgroundSkill.cs | 14 - .../Model/{Common => Base}/Entity.cs | 41 +- .../Model/{Common => Base}/EntityAlias.cs | 19 +- .../Model/Base/Keywords/Keyword.cs | 20 + .../Model/Base/Keywords/KeywordAlias.cs | 21 + .../Model/Base/Source/EntitySource.cs | 28 + Pf2eDataScrapper/Model/Base/Source/Source.cs | 22 + .../Model/Base/Targets/EntityExternal.cs | 29 + .../Model/Base/Targets/ExternalTarget.cs | 23 + Pf2eDataScrapper/Model/CampaignFeature.cs | 20 - Pf2eDataScrapper/Model/ClassKeyAbility.cs | 12 - Pf2eDataScrapper/Model/ClassProgression.cs | 18 - Pf2eDataScrapper/Model/ClassTraining.cs | 18 - Pf2eDataScrapper/Model/Common/EntitySource.cs | 16 - Pf2eDataScrapper/Model/Common/Frequency.cs | 21 + Pf2eDataScrapper/Model/Common/Language.cs | 24 + Pf2eDataScrapper/Model/Common/Source.cs | 10 - Pf2eDataScrapper/Model/Common/Training.cs | 16 + Pf2eDataScrapper/Model/Common/Trait.cs | 21 +- Pf2eDataScrapper/Model/DeityAttribute.cs | 10 - Pf2eDataScrapper/Model/DeityDomain.cs | 14 - Pf2eDataScrapper/Model/DeitySpell.cs | 16 - Pf2eDataScrapper/Model/DeityWeapon.cs | 12 - Pf2eDataScrapper/Model/EntityExternal.cs | 20 - Pf2eDataScrapper/Model/EntityKeyword.cs | 14 - Pf2eDataScrapper/Model/Enum/ActionCategory.cs | 15 + .../Model/Enum/AttributeValues.cs | 27 + .../Model/Enum/CampaignFeatureCategory.cs | 21 - Pf2eDataScrapper/Model/Enum/FeatCategory.cs | 3 + Pf2eDataScrapper/Model/Enum/TrainingStage.cs | 13 + Pf2eDataScrapper/Model/ExternalTarget.cs | 12 - Pf2eDataScrapper/Model/Feat.cs | 28 - Pf2eDataScrapper/Model/FeatPrerequisite.cs | 12 - Pf2eDataScrapper/Model/Frequency.cs | 16 - Pf2eDataScrapper/Model/Heritage.cs | 14 - Pf2eDataScrapper/Model/IEntity.cs | 2 +- Pf2eDataScrapper/Model/Keyword.cs | 8 - Pf2eDataScrapper/Model/KeywordAlias.cs | 10 - Pf2eDataScrapper/Model/Language.cs | 10 - Pf2eDataScrapper/Model/Pf2eDbContext.cs | 145 +++ Pf2eDataScrapper/Model/Pf2eDbContextModel.cs | 324 +++++ Pf2eDataScrapper/Model/SpellArea.cs | 12 - Pf2eDataScrapper/Model/SpellDamage.cs | 20 - Pf2eDataScrapper/Model/SpellDefense.cs | 16 - Pf2eDataScrapper/Model/SpellRitual.cs | 14 - Pf2eDataScrapper/Model/Structure/Action.cs | 17 +- Pf2eDataScrapper/Model/Structure/Ancestry.cs | 39 + .../AncestryRelation/AncestryBoost.cs | 23 + .../AncestryRelation/AncestryItem.cs | 24 + .../AncestryRelation/AncestryLanguage.cs | 23 + .../Model/Structure/Background.cs | 22 + .../BackgroundRelation/BackgroundBoost.cs | 21 + .../BackgroundRelation/BackgroundItem.cs | 24 + .../BackgroundRelation/BackgroundTraining.cs | 27 + .../Model/{ => Structure}/Class.cs | 20 +- .../ClassRelation/ClassKeyAbility.cs | 21 + .../ClassRelation/ClassProgression.cs | 29 + .../Structure/ClassRelation/ClassTraining.cs | 30 + Pf2eDataScrapper/Model/Structure/Condition.cs | 12 +- .../Model/{ => Structure}/Deity.cs | 20 +- .../Structure/DeityRelation/DeityAttribute.cs | 17 + .../Structure/DeityRelation/DeityDomain.cs | 24 + .../Structure/DeityRelation/DeitySpell.cs | 25 + .../Structure/DeityRelation/DeityWeapon.cs | 21 + Pf2eDataScrapper/Model/Structure/Feat.cs | 47 + .../FeatRelation/FeatPrerequisite.cs | 22 + Pf2eDataScrapper/Model/Structure/Heritage.cs | 20 + .../Model/{ => Structure}/Spell.cs | 34 +- .../Structure/SpellRelation/SpellArea.cs | 26 + .../Structure/SpellRelation/SpellDamage.cs | 44 + .../Structure/SpellRelation/SpellDefense.cs | 28 + .../Structure/SpellRelation/SpellRitual.cs | 26 + Pf2eDataScrapper/Model/Training.cs | 12 - Pf2eDataScrapper/Pf2eDataScrapper.csproj | 1 + Pf2eDataScrapper/Pf2eDbContext.cs | 1046 ----------------- 83 files changed, 1440 insertions(+), 1623 deletions(-) delete mode 100644 Pf2eDataScrapper/Model/Ancestry.cs delete mode 100644 Pf2eDataScrapper/Model/AncestryBoost.cs delete mode 100644 Pf2eDataScrapper/Model/AncestryItem.cs delete mode 100644 Pf2eDataScrapper/Model/AncestryLanguage.cs delete mode 100644 Pf2eDataScrapper/Model/Background.cs delete mode 100644 Pf2eDataScrapper/Model/BackgroundBoost.cs delete mode 100644 Pf2eDataScrapper/Model/BackgroundItem.cs delete mode 100644 Pf2eDataScrapper/Model/BackgroundSkill.cs rename Pf2eDataScrapper/Model/{Common => Base}/Entity.cs (59%) rename Pf2eDataScrapper/Model/{Common => Base}/EntityAlias.cs (52%) create mode 100644 Pf2eDataScrapper/Model/Base/Keywords/Keyword.cs create mode 100644 Pf2eDataScrapper/Model/Base/Keywords/KeywordAlias.cs create mode 100644 Pf2eDataScrapper/Model/Base/Source/EntitySource.cs create mode 100644 Pf2eDataScrapper/Model/Base/Source/Source.cs create mode 100644 Pf2eDataScrapper/Model/Base/Targets/EntityExternal.cs create mode 100644 Pf2eDataScrapper/Model/Base/Targets/ExternalTarget.cs delete mode 100644 Pf2eDataScrapper/Model/CampaignFeature.cs delete mode 100644 Pf2eDataScrapper/Model/ClassKeyAbility.cs delete mode 100644 Pf2eDataScrapper/Model/ClassProgression.cs delete mode 100644 Pf2eDataScrapper/Model/ClassTraining.cs delete mode 100644 Pf2eDataScrapper/Model/Common/EntitySource.cs create mode 100644 Pf2eDataScrapper/Model/Common/Frequency.cs create mode 100644 Pf2eDataScrapper/Model/Common/Language.cs delete mode 100644 Pf2eDataScrapper/Model/Common/Source.cs create mode 100644 Pf2eDataScrapper/Model/Common/Training.cs delete mode 100644 Pf2eDataScrapper/Model/DeityAttribute.cs delete mode 100644 Pf2eDataScrapper/Model/DeityDomain.cs delete mode 100644 Pf2eDataScrapper/Model/DeitySpell.cs delete mode 100644 Pf2eDataScrapper/Model/DeityWeapon.cs delete mode 100644 Pf2eDataScrapper/Model/EntityExternal.cs delete mode 100644 Pf2eDataScrapper/Model/EntityKeyword.cs create mode 100644 Pf2eDataScrapper/Model/Enum/AttributeValues.cs delete mode 100644 Pf2eDataScrapper/Model/Enum/CampaignFeatureCategory.cs create mode 100644 Pf2eDataScrapper/Model/Enum/TrainingStage.cs delete mode 100644 Pf2eDataScrapper/Model/ExternalTarget.cs delete mode 100644 Pf2eDataScrapper/Model/Feat.cs delete mode 100644 Pf2eDataScrapper/Model/FeatPrerequisite.cs delete mode 100644 Pf2eDataScrapper/Model/Frequency.cs delete mode 100644 Pf2eDataScrapper/Model/Heritage.cs delete mode 100644 Pf2eDataScrapper/Model/Keyword.cs delete mode 100644 Pf2eDataScrapper/Model/KeywordAlias.cs delete mode 100644 Pf2eDataScrapper/Model/Language.cs create mode 100644 Pf2eDataScrapper/Model/Pf2eDbContext.cs create mode 100644 Pf2eDataScrapper/Model/Pf2eDbContextModel.cs delete mode 100644 Pf2eDataScrapper/Model/SpellArea.cs delete mode 100644 Pf2eDataScrapper/Model/SpellDamage.cs delete mode 100644 Pf2eDataScrapper/Model/SpellDefense.cs delete mode 100644 Pf2eDataScrapper/Model/SpellRitual.cs create mode 100644 Pf2eDataScrapper/Model/Structure/Ancestry.cs create mode 100644 Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryBoost.cs create mode 100644 Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryItem.cs create mode 100644 Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryLanguage.cs create mode 100644 Pf2eDataScrapper/Model/Structure/Background.cs create mode 100644 Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundBoost.cs create mode 100644 Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundItem.cs create mode 100644 Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundTraining.cs rename Pf2eDataScrapper/Model/{ => Structure}/Class.cs (52%) create mode 100644 Pf2eDataScrapper/Model/Structure/ClassRelation/ClassKeyAbility.cs create mode 100644 Pf2eDataScrapper/Model/Structure/ClassRelation/ClassProgression.cs create mode 100644 Pf2eDataScrapper/Model/Structure/ClassRelation/ClassTraining.cs rename Pf2eDataScrapper/Model/{ => Structure}/Deity.cs (53%) create mode 100644 Pf2eDataScrapper/Model/Structure/DeityRelation/DeityAttribute.cs create mode 100644 Pf2eDataScrapper/Model/Structure/DeityRelation/DeityDomain.cs create mode 100644 Pf2eDataScrapper/Model/Structure/DeityRelation/DeitySpell.cs create mode 100644 Pf2eDataScrapper/Model/Structure/DeityRelation/DeityWeapon.cs create mode 100644 Pf2eDataScrapper/Model/Structure/Feat.cs create mode 100644 Pf2eDataScrapper/Model/Structure/FeatRelation/FeatPrerequisite.cs create mode 100644 Pf2eDataScrapper/Model/Structure/Heritage.cs rename Pf2eDataScrapper/Model/{ => Structure}/Spell.cs (55%) create mode 100644 Pf2eDataScrapper/Model/Structure/SpellRelation/SpellArea.cs create mode 100644 Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDamage.cs create mode 100644 Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDefense.cs create mode 100644 Pf2eDataScrapper/Model/Structure/SpellRelation/SpellRitual.cs delete mode 100644 Pf2eDataScrapper/Model/Training.cs delete mode 100644 Pf2eDataScrapper/Pf2eDbContext.cs diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs index cb80515..dff9dfe 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs @@ -1,7 +1,8 @@ using Newtonsoft.Json.Linq; using NpgsqlTypes; using Pf2eDataScrapper.Model; -using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Base; +using Pf2eDataScrapper.Model.Base.Source; using Pf2eDataScrapper.Model.Enum; namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder; diff --git a/Pf2eDataScrapper/Model/Ancestry.cs b/Pf2eDataScrapper/Model/Ancestry.cs deleted file mode 100644 index 86ba142..0000000 --- a/Pf2eDataScrapper/Model/Ancestry.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class Ancestry : IEntity -{ - public int Id { get; set; } - - public Entity Entity { get; set; } = null!; - - // TODO Size Vision - - public int Hp { get; set; } - - public int Reach { get; set; } - - public int Speed { get; set; } - - public virtual ICollection AncestryBoosts { get; set; } = []; - - public virtual ICollection AncestryItems { get; set; } = []; - - public virtual ICollection AncestryLanguages { get; set; } = []; - - public virtual ICollection Heritages { get; set; } = []; -} diff --git a/Pf2eDataScrapper/Model/AncestryBoost.cs b/Pf2eDataScrapper/Model/AncestryBoost.cs deleted file mode 100644 index 3a1d4e7..0000000 --- a/Pf2eDataScrapper/Model/AncestryBoost.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class AncestryBoost -{ - public int Id { get; set; } - - public int AncestryId { get; set; } - - public bool Boost { get; set; } - - public string? Value { get; set; } - - public virtual Ancestry Ancestry { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/AncestryItem.cs b/Pf2eDataScrapper/Model/AncestryItem.cs deleted file mode 100644 index e6c0bcb..0000000 --- a/Pf2eDataScrapper/Model/AncestryItem.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class AncestryItem -{ - public int AncestryId { get; set; } - - public int ItemId { get; set; } - - public int Level { get; set; } - - public virtual Ancestry Ancestry { get; set; } = null!; - - public virtual Entity Item { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/AncestryLanguage.cs b/Pf2eDataScrapper/Model/AncestryLanguage.cs deleted file mode 100644 index 6eafb91..0000000 --- a/Pf2eDataScrapper/Model/AncestryLanguage.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class AncestryLanguage -{ - public int AncestryId { get; set; } - - public int LanguageId { get; set; } - - public bool IsAdditional { get; set; } - - public virtual Ancestry Ancestry { get; set; } = null!; - - public virtual Language Language { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Background.cs b/Pf2eDataScrapper/Model/Background.cs deleted file mode 100644 index fdb2897..0000000 --- a/Pf2eDataScrapper/Model/Background.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class Background : IEntity -{ - public int Id { get; set; } - - public Entity Entity { get; set; } = null!; - - public virtual ICollection BackgroundBoosts { get; set; } = new List(); - - public virtual ICollection BackgroundItems { get; set; } = new List(); - - public virtual ICollection BackgroundSkills { get; set; } = new List(); -} diff --git a/Pf2eDataScrapper/Model/BackgroundBoost.cs b/Pf2eDataScrapper/Model/BackgroundBoost.cs deleted file mode 100644 index 0da6b10..0000000 --- a/Pf2eDataScrapper/Model/BackgroundBoost.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class BackgroundBoost -{ - public int Id { get; set; } - - public int BackgroundId { get; set; } - - public string? Value { get; set; } - - public virtual Background Background { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/BackgroundItem.cs b/Pf2eDataScrapper/Model/BackgroundItem.cs deleted file mode 100644 index cba434b..0000000 --- a/Pf2eDataScrapper/Model/BackgroundItem.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class BackgroundItem -{ - public int BackgroundId { get; set; } - - public int EntityId { get; set; } - - public int? Level { get; set; } - - public virtual Background Background { get; set; } = null!; - - public virtual Entity Entity { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/BackgroundSkill.cs b/Pf2eDataScrapper/Model/BackgroundSkill.cs deleted file mode 100644 index cb97b51..0000000 --- a/Pf2eDataScrapper/Model/BackgroundSkill.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class BackgroundSkill -{ - public int Id { get; set; } - - public int BackgroundId { get; set; } - - public string Name { get; set; } = null!; - - public bool IsSkill { get; set; } - - public virtual Background Background { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Common/Entity.cs b/Pf2eDataScrapper/Model/Base/Entity.cs similarity index 59% rename from Pf2eDataScrapper/Model/Common/Entity.cs rename to Pf2eDataScrapper/Model/Base/Entity.cs index 4c0f02f..67e6243 100644 --- a/Pf2eDataScrapper/Model/Common/Entity.cs +++ b/Pf2eDataScrapper/Model/Base/Entity.cs @@ -1,52 +1,61 @@ using Microsoft.EntityFrameworkCore; +using Pf2eDataScrapper.Model.Base.Keywords; +using Pf2eDataScrapper.Model.Base.Source; +using Pf2eDataScrapper.Model.Base.Targets; +using Pf2eDataScrapper.Model.Common; using Pf2eDataScrapper.Model.Enum; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -namespace Pf2eDataScrapper.Model.Common; +namespace Pf2eDataScrapper.Model.Base; -[Table("entity")] public class Entity { - [Key] - [Column("id", Order = 1)] + [System.ComponentModel.DataAnnotations.Key] + [Column(Order = 1)] public int Id { get; set; } - [Column("name", Order = 2)] - [StringLength(255)] - [Required] + [Column(Order = 2)] + [MaxLength(Pf2eDbContext.NameLength)] [Comment("Отображаемое имя")] public string Name { get; set; } = null!; - [Column("type", Order = 3)] - [Required] + [Column(Order = 3)] [Comment("Тип объекта")] public EntityType Type { get; set; } - [Column("slug", Order = 4)] - [Required] + [Column(Order = 4)] + [MaxLength(Pf2eDbContext.NameLength)] [Comment("Часть имени в URL")] public string Slug { get; set; } = null!; - [Column("img", Order = 5)] + [Column(Order = 5)] [StringLength(255)] [Comment("Изображение объекта")] public string Img { get; set; } = null!; - [Column("description")] + [Column(Order = 6)] [Comment("Текстовое описание объекта")] public string Description { get; set; } = null!; - [Column("rarity")] + [Column(Order = 7)] public EntityRarity Rarity { get; set; } = EntityRarity.Common; - [Column("is_translated")] + [Column(Order = 8)] [Comment("Флаг, указывающий, что у объекта существует перевод")] public bool? IsTranslated { get; set; } = false; - [Column("is_checked")] + [Column(Order = 9)] [Comment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи")] public bool? IsChecked { get; set; } = false; public virtual ICollection Traits { get; set; } = []; + + public virtual ICollection Keywords { get; set; } = []; + + public virtual ICollection Aliases { get; set; } = []; + + public virtual ICollection Sources { get; set; } = []; + + public virtual ICollection Extrnals { get; set; } = []; } diff --git a/Pf2eDataScrapper/Model/Common/EntityAlias.cs b/Pf2eDataScrapper/Model/Base/EntityAlias.cs similarity index 52% rename from Pf2eDataScrapper/Model/Common/EntityAlias.cs rename to Pf2eDataScrapper/Model/Base/EntityAlias.cs index 7dabb82..329fa7d 100644 --- a/Pf2eDataScrapper/Model/Common/EntityAlias.cs +++ b/Pf2eDataScrapper/Model/Base/EntityAlias.cs @@ -1,24 +1,21 @@ -using Pf2eDataScrapper.Model.Enum; +using Microsoft.EntityFrameworkCore; +using Pf2eDataScrapper.Model.Enum; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -namespace Pf2eDataScrapper.Model.Common; +namespace Pf2eDataScrapper.Model.Base; -[Table("entity_alias")] +[PrimaryKey(nameof(EntityId), nameof(Type))] public partial class EntityAlias { - [Key] - [Column("id", Order = 1)] - public int Id { get; set; } - - [Column("entity_id", Order = 2)] - [ForeignKey("Entity")] + [Column(Order = 1)] public int EntityId { get; set; } - [Column("type", Order = 3)] + [Column(Order = 2)] public AliasType Type { get; set; } = AliasType.Other; - [Column("alias", Order = 4)] + [Column(Order = 3)] + [MaxLength(Pf2eDbContext.NameLength)] public string Alias { get; set; } = null!; public virtual Entity Entity { get; set; } = null!; diff --git a/Pf2eDataScrapper/Model/Base/Keywords/Keyword.cs b/Pf2eDataScrapper/Model/Base/Keywords/Keyword.cs new file mode 100644 index 0000000..091f123 --- /dev/null +++ b/Pf2eDataScrapper/Model/Base/Keywords/Keyword.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Base.Keywords; + +public partial class Keyword +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public string Slug { get; set; } = null!; + + public virtual ICollection Entities { get; set; } = []; + + public virtual ICollection Aliases { get; set; } = []; + +} diff --git a/Pf2eDataScrapper/Model/Base/Keywords/KeywordAlias.cs b/Pf2eDataScrapper/Model/Base/Keywords/KeywordAlias.cs new file mode 100644 index 0000000..569a5fd --- /dev/null +++ b/Pf2eDataScrapper/Model/Base/Keywords/KeywordAlias.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Base.Keywords; + +public partial class KeywordAlias +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int KeywordId { get; set; } + + [Column(Order = 3)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Value { get; set; } = null!; + + public virtual Keyword Keyword { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Base/Source/EntitySource.cs b/Pf2eDataScrapper/Model/Base/Source/EntitySource.cs new file mode 100644 index 0000000..c1e3322 --- /dev/null +++ b/Pf2eDataScrapper/Model/Base/Source/EntitySource.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Base.Source; + +[PrimaryKey(nameof(EntityId), nameof(SourceId))] +public partial class EntitySource +{ + [Column(Order = 1)] + public int EntityId { get; set; } + + [Column(Order = 2)] + public int SourceId { get; set; } + + [Column(Order = 3)] + [MaxLength(255)] + [Comment("Номер страницы, эррата и т.д.")] + public string Suffix { get; set; } = null!; + + [Column(Order = 4)] + [Comment("Флаг, указывающий, что объект является частью ремастера")] + public bool IsRemaster { get; set; } + + public virtual Entity Entity { get; set; } = null!; + + public virtual Source Source { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Base/Source/Source.cs b/Pf2eDataScrapper/Model/Base/Source/Source.cs new file mode 100644 index 0000000..37d0d80 --- /dev/null +++ b/Pf2eDataScrapper/Model/Base/Source/Source.cs @@ -0,0 +1,22 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Base.Source; + +public partial class Source +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Name { get; set; } = null!; + + [Column(Order = 3)] + [MaxLength(255)] + public string Url { get; set; } = null!; + + public ICollection EntitySources { get; set; } = new List(); +} diff --git a/Pf2eDataScrapper/Model/Base/Targets/EntityExternal.cs b/Pf2eDataScrapper/Model/Base/Targets/EntityExternal.cs new file mode 100644 index 0000000..b533ed3 --- /dev/null +++ b/Pf2eDataScrapper/Model/Base/Targets/EntityExternal.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Base.Targets; + +[PrimaryKey(nameof(EntityId), nameof(TargetId))] +public partial class EntityExternal +{ + [Column(Order = 0)] + public int EntityId { get; set; } + + [Column(Order = 1)] + public int TargetId { get; set; } + + [Column(Order = 2)] + [MaxLength(255)] + [Comment("Часть URL до объекта. Для источников Foundry - полный UUID объекта")] + public string Suffix { get; set; } = ""; + + [Column(Order = 3)] + [MaxLength(16)] + [Comment("Контроль версии объекта")] + public string Md5 { get; set; } = null!; + + public virtual Entity Entity { get; set; } = null!; + + public virtual ExternalTarget Target { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Base/Targets/ExternalTarget.cs b/Pf2eDataScrapper/Model/Base/Targets/ExternalTarget.cs new file mode 100644 index 0000000..cbeb465 --- /dev/null +++ b/Pf2eDataScrapper/Model/Base/Targets/ExternalTarget.cs @@ -0,0 +1,23 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Base.Targets; + +public partial class ExternalTarget +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + [StringLength(Pf2eDbContext.NameLength)] + public string Name { get; set; } = null!; + + [Column(Order = 3)] + [StringLength(255)] + public string Icon { get; set; } = null!; + + [Column(Order = 4)] + public virtual ICollection EntityExternals { get; set; } = []; +} diff --git a/Pf2eDataScrapper/Model/CampaignFeature.cs b/Pf2eDataScrapper/Model/CampaignFeature.cs deleted file mode 100644 index d0da0fe..0000000 --- a/Pf2eDataScrapper/Model/CampaignFeature.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class CampaignFeature : IEntity -{ - public int Id { get; set; } - - public Entity Entity { get; set; } = null!; - - // TODO ActionType Category - - public int? Level { get; set; } - - public int Actions { get; set; } - - public string? Prerequisites { get; set; } - - public string? Extra { get; set; } -} diff --git a/Pf2eDataScrapper/Model/ClassKeyAbility.cs b/Pf2eDataScrapper/Model/ClassKeyAbility.cs deleted file mode 100644 index c86bb03..0000000 --- a/Pf2eDataScrapper/Model/ClassKeyAbility.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class ClassKeyAbility -{ - public int Id { get; set; } - - public int ClassId { get; set; } - - public string Value { get; set; } = null!; - - public virtual Class Class { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/ClassProgression.cs b/Pf2eDataScrapper/Model/ClassProgression.cs deleted file mode 100644 index d38c7e3..0000000 --- a/Pf2eDataScrapper/Model/ClassProgression.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class ClassProgression -{ - public int Id { get; set; } - - public int ClassId { get; set; } - - public int Level { get; set; } - - public int? EntityId { get; set; } - - public virtual Class Class { get; set; } = null!; - - public virtual Entity? Entity { get; set; } -} diff --git a/Pf2eDataScrapper/Model/ClassTraining.cs b/Pf2eDataScrapper/Model/ClassTraining.cs deleted file mode 100644 index 00cc102..0000000 --- a/Pf2eDataScrapper/Model/ClassTraining.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class ClassTraining -{ - public int Id { get; set; } - - public int ClassId { get; set; } - - public int? Item { get; set; } - - public string? Name { get; set; } - - public int Stage { get; set; } - - public virtual Class Class { get; set; } = null!; - - public virtual Training? ItemNavigation { get; set; } -} diff --git a/Pf2eDataScrapper/Model/Common/EntitySource.cs b/Pf2eDataScrapper/Model/Common/EntitySource.cs deleted file mode 100644 index 3978de3..0000000 --- a/Pf2eDataScrapper/Model/Common/EntitySource.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Pf2eDataScrapper.Model.Common; - -public partial class EntitySource -{ - public int EntityId { get; set; } - - public int SourceId { get; set; } - - public string Suffix { get; set; } = null!; - - public bool IsRemaster { get; set; } - - public virtual Entity Entity { get; set; } = null!; - - public virtual Source Source { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Common/Frequency.cs b/Pf2eDataScrapper/Model/Common/Frequency.cs new file mode 100644 index 0000000..439f7f1 --- /dev/null +++ b/Pf2eDataScrapper/Model/Common/Frequency.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Common; + +public partial class Frequency +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int Max { get; set; } + + [Column(Order = 3)] + public int Per { get; set; } + + [Column(Order = 4)] + public int? Value { get; set; } +} diff --git a/Pf2eDataScrapper/Model/Common/Language.cs b/Pf2eDataScrapper/Model/Common/Language.cs new file mode 100644 index 0000000..3406711 --- /dev/null +++ b/Pf2eDataScrapper/Model/Common/Language.cs @@ -0,0 +1,24 @@ +using Pf2eDataScrapper.Model.Enum; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Common; + +public partial class Language +{ + [System.ComponentModel.DataAnnotations.Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Name { get; set; } = null!; + + [Column(Order = 3)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Slug { get; set; } = null!; + + [Column(Order = 4)] + public EntityRarity Rarity { get; set; } +} diff --git a/Pf2eDataScrapper/Model/Common/Source.cs b/Pf2eDataScrapper/Model/Common/Source.cs deleted file mode 100644 index 35ef945..0000000 --- a/Pf2eDataScrapper/Model/Common/Source.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Pf2eDataScrapper.Model.Common; - -public partial class Source -{ - public int Id { get; set; } - - public string Name { get; set; } = null!; - - public string Url { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Common/Training.cs b/Pf2eDataScrapper/Model/Common/Training.cs new file mode 100644 index 0000000..773927d --- /dev/null +++ b/Pf2eDataScrapper/Model/Common/Training.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Common; + +public partial class Training +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Key { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Common/Trait.cs b/Pf2eDataScrapper/Model/Common/Trait.cs index 07df816..9097105 100644 --- a/Pf2eDataScrapper/Model/Common/Trait.cs +++ b/Pf2eDataScrapper/Model/Common/Trait.cs @@ -1,28 +1,29 @@ -using Pf2eDataScrapper.Model.Enum; +using Pf2eDataScrapper.Model.Base; +using Pf2eDataScrapper.Model.Enum; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Pf2eDataScrapper.Model.Common; -[Table("trait")] public partial class Trait { - [Key] - [Column("id", Order = 1)] + [System.ComponentModel.DataAnnotations.Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] public int Id { get; set; } - [Column("name", Order = 2)] - [Required] + [Column(Order = 2)] + [MaxLength(Pf2eDbContext.NameLength)] public string Name { get; set; } = null!; - [Column("type", Order = 3)] + [Column(Order = 3)] public TraitType Type { get; set; } - [Column("slug", Order = 4)] - [Required] + [Column(Order = 4)] + [MaxLength(Pf2eDbContext.NameLength)] public string Slug { get; set; } = null!; - [Column("description", Order = 5)] + [Column(Order = 5)] public string Description { get; set; } = null!; public virtual ICollection Entities { get; set; } = []; diff --git a/Pf2eDataScrapper/Model/DeityAttribute.cs b/Pf2eDataScrapper/Model/DeityAttribute.cs deleted file mode 100644 index 0a4ce2d..0000000 --- a/Pf2eDataScrapper/Model/DeityAttribute.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class DeityAttribute -{ - public int DeityId { get; set; } - - public string Attribute { get; set; } = null!; - - public virtual Deity Deity { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/DeityDomain.cs b/Pf2eDataScrapper/Model/DeityDomain.cs deleted file mode 100644 index 1dbe917..0000000 --- a/Pf2eDataScrapper/Model/DeityDomain.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class DeityDomain -{ - public int Id { get; set; } - - public int DeityId { get; set; } - - public bool IsPrimary { get; set; } - - public string Value { get; set; } = null!; - - public virtual Deity Deity { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/DeitySpell.cs b/Pf2eDataScrapper/Model/DeitySpell.cs deleted file mode 100644 index 21020aa..0000000 --- a/Pf2eDataScrapper/Model/DeitySpell.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class DeitySpell -{ - public int Id { get; set; } - - public int DeityId { get; set; } - - public int Level { get; set; } - - public int SpellId { get; set; } - - public virtual Deity Deity { get; set; } = null!; - - public virtual Spell Spell { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/DeityWeapon.cs b/Pf2eDataScrapper/Model/DeityWeapon.cs deleted file mode 100644 index e25dd50..0000000 --- a/Pf2eDataScrapper/Model/DeityWeapon.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class DeityWeapon -{ - public int Id { get; set; } - - public int DeityId { get; set; } - - public string Weapon { get; set; } = null!; - - public virtual Deity Deity { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/EntityExternal.cs b/Pf2eDataScrapper/Model/EntityExternal.cs deleted file mode 100644 index 7909e63..0000000 --- a/Pf2eDataScrapper/Model/EntityExternal.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class EntityExternal -{ - public int EntityId { get; set; } - - public int TargetId { get; set; } - - public string Path { get; set; } = null!; - - public string Suffix { get; set; } = null!; - - public string Md5 { get; set; } = null!; - - public virtual Entity Entity { get; set; } = null!; - - public virtual ExternalTarget Target { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/EntityKeyword.cs b/Pf2eDataScrapper/Model/EntityKeyword.cs deleted file mode 100644 index 3f3c9de..0000000 --- a/Pf2eDataScrapper/Model/EntityKeyword.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class EntityKeyword -{ - public int EntityId { get; set; } - - public int KeywordId { get; set; } - - public virtual Entity Entity { get; set; } = null!; - - public virtual Keyword Keyword { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Enum/ActionCategory.cs b/Pf2eDataScrapper/Model/Enum/ActionCategory.cs index 9867f88..58debf8 100644 --- a/Pf2eDataScrapper/Model/Enum/ActionCategory.cs +++ b/Pf2eDataScrapper/Model/Enum/ActionCategory.cs @@ -15,4 +15,19 @@ public enum ActionCategory [PgName("familiar")] familiar, + + [PgName("army_tactic")] + ArmyTactic, + + [PgName("army_war_action")] + ArmyWarAction, + + [PgName("kingdom_activity")] + KingdomActivity, + + [PgName("kingdom_feat")] + KingdomFeat, + + [PgName("kingdom_feature")] + KingdomFeature, } \ No newline at end of file diff --git a/Pf2eDataScrapper/Model/Enum/AttributeValues.cs b/Pf2eDataScrapper/Model/Enum/AttributeValues.cs new file mode 100644 index 0000000..bde92ac --- /dev/null +++ b/Pf2eDataScrapper/Model/Enum/AttributeValues.cs @@ -0,0 +1,27 @@ +using NpgsqlTypes; + +namespace Pf2eDataScrapper.Model.Enum; + +public enum AttributeValues +{ + [PgName("any")] + Any, + + [PgName("str")] + Strength, + + [PgName("dex")] + Dexterity, + + [PgName("con")] + Constitution, + + [PgName("int")] + Intelligence, + + [PgName("wis")] + Wisdom, + + [PgName("cha")] + Charisma +} diff --git a/Pf2eDataScrapper/Model/Enum/CampaignFeatureCategory.cs b/Pf2eDataScrapper/Model/Enum/CampaignFeatureCategory.cs deleted file mode 100644 index af48d66..0000000 --- a/Pf2eDataScrapper/Model/Enum/CampaignFeatureCategory.cs +++ /dev/null @@ -1,21 +0,0 @@ -using NpgsqlTypes; - -namespace Pf2eDataScrapper.Model.Enum; - -public enum CampaignFeatureCategory -{ - [PgName("army_tactic")] - ArmyTactic, - - [PgName("army_war_action")] - ArmyWarAction, - - [PgName("kingdom_activity")] - KingdomActivity, - - [PgName("kingdom_feat")] - KingdomFeat, - - [PgName("kingdom_feature")] - KingdomFeature, -} \ No newline at end of file diff --git a/Pf2eDataScrapper/Model/Enum/FeatCategory.cs b/Pf2eDataScrapper/Model/Enum/FeatCategory.cs index 2727a1f..73b7689 100644 --- a/Pf2eDataScrapper/Model/Enum/FeatCategory.cs +++ b/Pf2eDataScrapper/Model/Enum/FeatCategory.cs @@ -36,4 +36,7 @@ public enum FeatCategory [PgName("pfsboon")] Pfsboon, + + [PgName("campaign_feature")] + CampaignFeature, } \ No newline at end of file diff --git a/Pf2eDataScrapper/Model/Enum/TrainingStage.cs b/Pf2eDataScrapper/Model/Enum/TrainingStage.cs new file mode 100644 index 0000000..407e035 --- /dev/null +++ b/Pf2eDataScrapper/Model/Enum/TrainingStage.cs @@ -0,0 +1,13 @@ +namespace Pf2eDataScrapper.Model.Enum; +public enum TrainingStage +{ + Untrained = 0, + + Trained = 1, + + Expert = 2, + + Master = 3, + + Legendary = 4, +} diff --git a/Pf2eDataScrapper/Model/ExternalTarget.cs b/Pf2eDataScrapper/Model/ExternalTarget.cs deleted file mode 100644 index 51acb9d..0000000 --- a/Pf2eDataScrapper/Model/ExternalTarget.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class ExternalTarget -{ - public int Id { get; set; } - - public string Name { get; set; } = null!; - - public string Icon { get; set; } = null!; - - public virtual ICollection EntityExternals { get; set; } = new List(); -} diff --git a/Pf2eDataScrapper/Model/Feat.cs b/Pf2eDataScrapper/Model/Feat.cs deleted file mode 100644 index b020032..0000000 --- a/Pf2eDataScrapper/Model/Feat.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class Feat : IEntity -{ - public int Id { get; set; } - - public Entity Entity { get; set; } = null!; - - // TODO ActionType Category - - public int? Actions { get; set; } - - public int Level { get; set; } - - public int? LevelTaken { get; set; } - - public int? MaxTakable { get; set; } - - public string? Location { get; set; } - - public bool? OnlyLevel1 { get; set; } - - public string? Extra { get; set; } - - public virtual ICollection FeatPrerequisites { get; set; } = new List(); -} diff --git a/Pf2eDataScrapper/Model/FeatPrerequisite.cs b/Pf2eDataScrapper/Model/FeatPrerequisite.cs deleted file mode 100644 index 1a5ff59..0000000 --- a/Pf2eDataScrapper/Model/FeatPrerequisite.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class FeatPrerequisite -{ - public int Id { get; set; } - - public int FeatId { get; set; } - - public string Value { get; set; } = null!; - - public virtual Feat Feat { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Frequency.cs b/Pf2eDataScrapper/Model/Frequency.cs deleted file mode 100644 index 45ca398..0000000 --- a/Pf2eDataScrapper/Model/Frequency.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class Frequency -{ - public int Id { get; set; } - - public int Max { get; set; } - - public int Per { get; set; } - - public int? Value { get; set; } - - public virtual Entity IdNavigation { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Heritage.cs b/Pf2eDataScrapper/Model/Heritage.cs deleted file mode 100644 index f2ef764..0000000 --- a/Pf2eDataScrapper/Model/Heritage.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Pf2eDataScrapper.Model.Common; - -namespace Pf2eDataScrapper.Model; - -public partial class Heritage : IEntity -{ - public int Id { get; set; } - - public Entity Entity { get; set; } = null!; - - public int? AncestryId { get; set; } - - public virtual Ancestry? Ancestry { get; set; } -} diff --git a/Pf2eDataScrapper/Model/IEntity.cs b/Pf2eDataScrapper/Model/IEntity.cs index 27f2018..745c75c 100644 --- a/Pf2eDataScrapper/Model/IEntity.cs +++ b/Pf2eDataScrapper/Model/IEntity.cs @@ -1,4 +1,4 @@ -using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Base; namespace Pf2eDataScrapper.Model; diff --git a/Pf2eDataScrapper/Model/Keyword.cs b/Pf2eDataScrapper/Model/Keyword.cs deleted file mode 100644 index db70e9f..0000000 --- a/Pf2eDataScrapper/Model/Keyword.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class Keyword -{ - public int Id { get; set; } - - public string Slug { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/KeywordAlias.cs b/Pf2eDataScrapper/Model/KeywordAlias.cs deleted file mode 100644 index 8cba9ac..0000000 --- a/Pf2eDataScrapper/Model/KeywordAlias.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class KeywordAlias -{ - public int KeywordId { get; set; } - - public string Value { get; set; } = null!; - - public virtual Keyword Keyword { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Language.cs b/Pf2eDataScrapper/Model/Language.cs deleted file mode 100644 index 9e78aa7..0000000 --- a/Pf2eDataScrapper/Model/Language.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class Language -{ - public int Id { get; set; } - - public string Name { get; set; } = null!; - - public virtual ICollection AncestryLanguages { get; set; } = new List(); -} diff --git a/Pf2eDataScrapper/Model/Pf2eDbContext.cs b/Pf2eDataScrapper/Model/Pf2eDbContext.cs new file mode 100644 index 0000000..df01238 --- /dev/null +++ b/Pf2eDataScrapper/Model/Pf2eDbContext.cs @@ -0,0 +1,145 @@ +using Microsoft.EntityFrameworkCore; +using Pf2eDataScrapper.Model.Base; +using Pf2eDataScrapper.Model.Base.Keywords; +using Pf2eDataScrapper.Model.Base.Source; +using Pf2eDataScrapper.Model.Base.Targets; +using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Enum; +using Pf2eDataScrapper.Model.Structure; +using Pf2eDataScrapper.Model.Structure.AncestryRelation; +using Pf2eDataScrapper.Model.Structure.BackgroundRelation; +using Pf2eDataScrapper.Model.Structure.ClassRelation; +using Pf2eDataScrapper.Model.Structure.DeityRelation; +using Pf2eDataScrapper.Model.Structure.FeatRelation; +using Pf2eDataScrapper.Model.Structure.SpellRelation; + +namespace Pf2eDataScrapper.Model; + +public partial class Pf2eDbContext : DbContext +{ + public Pf2eDbContext() + { + } + + public Pf2eDbContext(DbContextOptions options) + : base(options) + { + } + + #region DbSets + + public virtual DbSet Actions { get; set; } + + public virtual DbSet Ancestries { get; set; } + + public virtual DbSet AncestryBoosts { get; set; } + + public virtual DbSet AncestryItems { get; set; } + + public virtual DbSet AncestryLanguages { get; set; } + + public virtual DbSet Backgrounds { get; set; } + + public virtual DbSet BackgroundBoosts { get; set; } + + public virtual DbSet BackgroundItems { get; set; } + + public virtual DbSet BackgroundSkills { get; set; } + + public virtual DbSet Classes { get; set; } + + public virtual DbSet ClassKeyAbilities { get; set; } + + public virtual DbSet ClassProgressions { get; set; } + + public virtual DbSet ClassTrainings { get; set; } + + public virtual DbSet Conditions { get; set; } + + public virtual DbSet Deities { get; set; } + + public virtual DbSet DeityAttributes { get; set; } + + public virtual DbSet DeityDomains { get; set; } + + public virtual DbSet DeitySpells { get; set; } + + public virtual DbSet DeityWeapons { get; set; } + + public virtual DbSet Entities { get; set; } + + public virtual DbSet EntityAliases { get; set; } + + public virtual DbSet EntityExternals { get; set; } + + public virtual DbSet EntitySources { get; set; } + + public virtual DbSet ExternalTargets { get; set; } + + public virtual DbSet Feats { get; set; } + + public virtual DbSet FeatPrerequisites { get; set; } + + public virtual DbSet Frequencies { get; set; } + + public virtual DbSet Heritages { get; set; } + + public virtual DbSet Keywords { get; set; } + + public virtual DbSet KeywordAliases { get; set; } + + public virtual DbSet Languages { get; set; } + + public virtual DbSet Sources { get; set; } + + public virtual DbSet Spells { get; set; } + + public virtual DbSet SpellAreas { get; set; } + + public virtual DbSet SpellDamages { get; set; } + + public virtual DbSet SpellDefenses { get; set; } + + public virtual DbSet SpellRituals { get; set; } + + public virtual DbSet Trainings { get; set; } + + public virtual DbSet Traits { get; set; } + + #endregion + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + EnvSettings.Load(); + optionsBuilder.LogTo(Console.WriteLine); + optionsBuilder.UseSnakeCaseNamingConvention(); + optionsBuilder.UseNpgsql(EnvSettings.DatabaseConnection, + builder => + { + builder + .MapEnum("entity_type") + .MapEnum("entity_rarity") + .MapEnum("alias_type") + .MapEnum("trait_type") + .MapEnum("action_type") + .MapEnum("action_category") + .MapEnum("enum_size") + .MapEnum("ancestry_vision") + .MapEnum("class_progression_type") + .MapEnum("condition_group") + .MapEnum("deity_category") + .MapEnum("deity_fonts") + .MapEnum("deity_sanctification") + .MapEnum("feat_action_type") + .MapEnum("feat_category") + .MapEnum("spell_area_type") + .MapEnum("spell_damage_category") + .MapEnum("spell_damage_kinds") + .MapEnum() + .MapEnum() + ; + } + ); + } + +} diff --git a/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs b/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs new file mode 100644 index 0000000..74fa9c4 --- /dev/null +++ b/Pf2eDataScrapper/Model/Pf2eDbContextModel.cs @@ -0,0 +1,324 @@ +using Microsoft.EntityFrameworkCore; +using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Enum; +using Pf2eDataScrapper.Model.Structure.AncestryRelation; +using Pf2eDataScrapper.Model.Structure.BackgroundRelation; +using Pf2eDataScrapper.Model.Structure.ClassRelation; +using Pf2eDataScrapper.Model.Structure.DeityRelation; +using Pf2eDataScrapper.Model.Structure.FeatRelation; +using Pf2eDataScrapper.Model.Structure.SpellRelation; +using Pf2eDataScrapper.Model.Structure; +using Pf2eDataScrapper.Model.Base.Source; +using Pf2eDataScrapper.Model.Base.Targets; +using Pf2eDataScrapper.Model.Base; +using Pf2eDataScrapper.Model.Base.Keywords; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System.Reflection.Metadata; + +namespace Pf2eDataScrapper.Model; + +public partial class Pf2eDbContext +{ + public const int NameLength = 255; + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.UseIdentityByDefaultColumns(); + + DefineEnums(modelBuilder); + DefineBase(modelBuilder); + DefineCommon(modelBuilder); + DefineStructure(modelBuilder); + } + + private void DefineEnums(ModelBuilder modelBuilder) + { + modelBuilder + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + .HasPostgresEnum() + ; + } + + private void DefineBase(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasMany(e => e.Traits).WithMany(t => t.Entities); + + entity.HasMany(e => e.Keywords).WithMany(t => t.Entities); + + // EntityAlias + entity.HasMany(e => e.Aliases).WithOne(e => e.Entity) + .HasForeignKey(e => e.EntityId) + .OnDelete(DeleteBehavior.Cascade); + + // EntitySource + entity.HasMany(e => e.Sources).WithOne(e => e.Entity) + .HasForeignKey(e => e.EntityId) + .OnDelete(DeleteBehavior.Cascade); + + // EntityExternal + entity.HasMany(e => e.Extrnals).WithOne(e => e.Entity) + .HasForeignKey(e => e.EntityId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => { }); + + // Source + modelBuilder.Entity(entity => + { + entity.Property(e => e.Id).HasColumnName("id"); + + entity.HasMany(s => s.EntitySources).WithOne(e => e.Source) + .HasForeignKey(e => e.SourceId) + .OnDelete(DeleteBehavior.Cascade); + + // + EntitySource + }); + modelBuilder.Entity(entity => { }); + + // External + modelBuilder.Entity(entity => + { + entity.HasMany(t => t.EntityExternals).WithOne(e => e.Target) + .HasForeignKey(e => e.TargetId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => { }); + + // Keywords + modelBuilder.Entity(entity => + { + entity.HasMany(e => e.Aliases).WithOne(e => e.Keyword) + .HasForeignKey(e => e.KeywordId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => { }); + } + + private void DefineCommon(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => { }); + + modelBuilder.Entity(entity => { }); + + modelBuilder.Entity(entity => { }); + + modelBuilder.Entity(entity => { }); + } + + private void BindEntity(EntityTypeBuilder entity) where T : class, IEntity + { + entity.HasOne(entity => entity.Entity) + .WithOne() + .HasForeignKey(entity => entity.Id) + .IsRequired(); + } + + private void DefineStructure(ModelBuilder modelBuilder) + { + // Action + modelBuilder.Entity(entity => + { + BindEntity(entity); + }); + + // Ancestry + modelBuilder.Entity(entity => + { + BindEntity(entity); + + entity.HasMany(e => e.AncestryBoosts).WithOne(e => e.Ancestry) + .HasForeignKey(e => e.AncestryId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.AncestryItems).WithOne(e => e.Ancestry) + .HasForeignKey(e => e.AncestryId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.AncestryLanguages).WithOne(e => e.Ancestry) + .HasForeignKey(e => e.AncestryId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => { }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Item).WithMany() + .HasForeignKey(d => d.ItemId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Language).WithMany() + .HasForeignKey(d => d.LanguageId) + .OnDelete(DeleteBehavior.Cascade); + }); + + // Background + modelBuilder.Entity(entity => + { + BindEntity(entity); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Background).WithMany(p => p.BackgroundBoosts) + .HasForeignKey(d => d.BackgroundId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Background).WithMany(p => p.BackgroundItems) + .HasForeignKey(d => d.BackgroundId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasOne(d => d.Entity).WithMany() + .HasForeignKey(d => d.EntityId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Background).WithMany(p => p.BackgroundSkills) + .HasForeignKey(d => d.BackgroundId) + .OnDelete(DeleteBehavior.Cascade); + }); + + // Class + modelBuilder.Entity(entity => + { + BindEntity(entity); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Class).WithMany(p => p.ClassKeyAbilities) + .HasForeignKey(d => d.ClassId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Class).WithMany(p => p.ClassProgressions) + .HasForeignKey(d => d.ClassId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasOne(d => d.Entity).WithMany() + .HasForeignKey(d => d.EntityId) + .OnDelete(DeleteBehavior.SetNull); + }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Class).WithMany(p => p.ClassTrainings) + .HasForeignKey(d => d.ClassId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasOne(d => d.Training).WithMany() + .HasForeignKey(d => d.TrainingId) + .OnDelete(DeleteBehavior.SetNull); + }); + + // Condition + modelBuilder.Entity(entity => + { + BindEntity(entity); + }); + + // Deity + modelBuilder.Entity(entity => + { + BindEntity(entity); + + entity.HasMany(e => e.DeityAttributes).WithOne(e => e.Deity) + .HasForeignKey(e => e.DeityId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.DeityDomains).WithOne(e => e.Deity) + .HasForeignKey(e => e.DeityId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.DeitySpells).WithOne(e => e.Deity) + .HasForeignKey(e => e.DeityId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.DeityWeapons).WithOne(e => e.Deity) + .HasForeignKey(e => e.DeityId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.Skills).WithMany(); + }); + modelBuilder.Entity(entity => { }); + modelBuilder.Entity(entity => { }); + modelBuilder.Entity(entity => + { + entity.HasOne(d => d.Spell).WithMany() + .HasForeignKey(d => d.SpellId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => { }); + + // Feat + modelBuilder.Entity(entity => + { + BindEntity(entity); + + entity.HasMany(e => e.FeatPrerequisites).WithOne(e => e.Feat) + .HasForeignKey(e => e.FeatId) + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity(entity => { }); + + // Heritage + modelBuilder.Entity(entity => + { + BindEntity(entity); + + entity.HasOne(d => d.Ancestry).WithMany(p => p.Heritages) + .HasForeignKey(d => d.AncestryId) + .OnDelete(DeleteBehavior.Cascade); + }); + + // Spell + modelBuilder.Entity(entity => + { + BindEntity(entity); + + entity.HasOne(e => e.SpellArea).WithOne(e => e.Spell) + .HasForeignKey(e => e.SpellId) + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(false); + + entity.HasOne(e => e.SpellRitual).WithOne(e => e.Spell) + .HasForeignKey(e => e.SpellId) + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(false); + + entity.HasMany(e => e.SpellDamages).WithOne(e => e.Spell) + .HasForeignKey(e => e.SpellId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasMany(e => e.SpellDefenses).WithOne(e => e.Spell) + .HasForeignKey(e => e.SpellId) + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity(entity => { }); + modelBuilder.Entity(entity => { }); + modelBuilder.Entity(entity => { }); + modelBuilder.Entity(entity => { }); + } +} diff --git a/Pf2eDataScrapper/Model/SpellArea.cs b/Pf2eDataScrapper/Model/SpellArea.cs deleted file mode 100644 index 5cc3d6f..0000000 --- a/Pf2eDataScrapper/Model/SpellArea.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class SpellArea -{ - public int SpellId { get; set; } - - public string? Details { get; set; } - - public int Value { get; set; } - - public virtual Spell Spell { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/SpellDamage.cs b/Pf2eDataScrapper/Model/SpellDamage.cs deleted file mode 100644 index f9bbca7..0000000 --- a/Pf2eDataScrapper/Model/SpellDamage.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class SpellDamage -{ - public int Id { get; set; } - - public int SpellId { get; set; } - - public string Key { get; set; } = null!; - - public bool? ApplyMod { get; set; } - - public string Formula { get; set; } = null!; - - public string? Materials { get; set; } - - public string Type { get; set; } = null!; - - public virtual Spell Spell { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/SpellDefense.cs b/Pf2eDataScrapper/Model/SpellDefense.cs deleted file mode 100644 index 64ee280..0000000 --- a/Pf2eDataScrapper/Model/SpellDefense.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class SpellDefense -{ - public int Id { get; set; } - - public int SpellId { get; set; } - - public bool IsPassive { get; set; } - - public bool? IsBasic { get; set; } - - public string Statistic { get; set; } = null!; - - public virtual Spell Spell { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/SpellRitual.cs b/Pf2eDataScrapper/Model/SpellRitual.cs deleted file mode 100644 index 8574f10..0000000 --- a/Pf2eDataScrapper/Model/SpellRitual.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class SpellRitual -{ - public int SpellId { get; set; } - - public string PrimaryCheck { get; set; } = null!; - - public int SecondaryCasters { get; set; } - - public string SecondaryChecks { get; set; } = null!; - - public virtual Spell Spell { get; set; } = null!; -} diff --git a/Pf2eDataScrapper/Model/Structure/Action.cs b/Pf2eDataScrapper/Model/Structure/Action.cs index 1f53780..6165cc4 100644 --- a/Pf2eDataScrapper/Model/Structure/Action.cs +++ b/Pf2eDataScrapper/Model/Structure/Action.cs @@ -1,4 +1,4 @@ -using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Base; using Pf2eDataScrapper.Model.Enum; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -7,19 +7,26 @@ namespace Pf2eDataScrapper.Model.Structure; public partial class Action : IEntity { - [Key] - [Column("id", Order = 1)] + [System.ComponentModel.DataAnnotations.Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] public int Id { get; set; } - public Entity Entity { get; set; } = null!; - + [Column(Order = 2)] public ActionType Type { get; set; } + [Column(Order = 3)] public ActionCategory Category { get; set; } + [Column(Order = 4)] public int? Actions { get; set; } + [Column(Order = 5)] public bool? DeathNote { get; set; } + [Column(Order = 6)] public string? Extra { get; set; } + + + public Entity Entity { get; set; } = null!; } diff --git a/Pf2eDataScrapper/Model/Structure/Ancestry.cs b/Pf2eDataScrapper/Model/Structure/Ancestry.cs new file mode 100644 index 0000000..4555c88 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/Ancestry.cs @@ -0,0 +1,39 @@ +using Pf2eDataScrapper.Model.Base; +using Pf2eDataScrapper.Model.Enum; +using Pf2eDataScrapper.Model.Structure.AncestryRelation; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure; + +public partial class Ancestry : IEntity +{ + [System.ComponentModel.DataAnnotations.Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int Id { get; set; } + + public Entity Entity { get; set; } = null!; + + [Column(Order = 2)] + public Size Size { get; set; } = Size.med; + + [Column(Order = 3)] + public int Hp { get; set; } + + [Column(Order = 4)] + public int Reach { get; set; } + + [Column(Order = 5)] + public int Speed { get; set; } + + [Column(Order = 6)] + public AncestryVision Vision { get; set; } = AncestryVision.normal; + + public virtual ICollection AncestryBoosts { get; set; } = []; + + public virtual ICollection AncestryItems { get; set; } = []; + + public virtual ICollection AncestryLanguages { get; set; } = []; + + public virtual ICollection Heritages { get; set; } = []; +} diff --git a/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryBoost.cs b/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryBoost.cs new file mode 100644 index 0000000..1f16e8e --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryBoost.cs @@ -0,0 +1,23 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure.AncestryRelation; + +public partial class AncestryBoost +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int AncestryId { get; set; } + + [Column(Order = 3)] + public bool Boost { get; set; } = true; + + [Column(Order = 4)] + public Enum.AttributeValues Value { get; set; } + + public virtual Ancestry Ancestry { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryItem.cs b/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryItem.cs new file mode 100644 index 0000000..6e2aea3 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryItem.cs @@ -0,0 +1,24 @@ +using Pf2eDataScrapper.Model.Structure; +using Pf2eDataScrapper.Model.Base; +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure.AncestryRelation; + +[PrimaryKey(nameof(AncestryId), nameof(ItemId))] +public partial class AncestryItem +{ + [Column(Order = 1)] + public int AncestryId { get; set; } + + [Column(Order = 2)] + public int ItemId { get; set; } + + [Column(Order = 3)] + public int Level { get; set; } + + public virtual Ancestry Ancestry { get; set; } = null!; + + public virtual Entity Item { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryLanguage.cs b/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryLanguage.cs new file mode 100644 index 0000000..cf7988d --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/AncestryRelation/AncestryLanguage.cs @@ -0,0 +1,23 @@ +using Microsoft.EntityFrameworkCore; +using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Structure; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure.AncestryRelation; + +[PrimaryKey(nameof(AncestryId), nameof(LanguageId))] +public partial class AncestryLanguage +{ + [Column(Order = 1)] + public int AncestryId { get; set; } + + [Column(Order = 2)] + public int LanguageId { get; set; } + + [Column(Order = 3)] + public bool IsAdditional { get; set; } + + public virtual Ancestry Ancestry { get; set; } = null!; + + public virtual Language Language { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/Background.cs b/Pf2eDataScrapper/Model/Structure/Background.cs new file mode 100644 index 0000000..12e6a39 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/Background.cs @@ -0,0 +1,22 @@ +using Pf2eDataScrapper.Model.Structure.BackgroundRelation; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Base; + +namespace Pf2eDataScrapper.Model.Structure; + +public partial class Background : IEntity +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int Id { get; set; } + + public Entity Entity { get; set; } = null!; + + public virtual ICollection BackgroundBoosts { get; set; } = []; + + public virtual ICollection BackgroundItems { get; set; } = []; + + public virtual ICollection BackgroundSkills { get; set; } = []; +} diff --git a/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundBoost.cs b/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundBoost.cs new file mode 100644 index 0000000..d7cfd37 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundBoost.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Enum; + +namespace Pf2eDataScrapper.Model.Structure.BackgroundRelation; + +public partial class BackgroundBoost +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int BackgroundId { get; set; } + + [Column(Order = 3)] + public AttributeValues Attribute { get; set; } + + public virtual Background Background { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundItem.cs b/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundItem.cs new file mode 100644 index 0000000..ddd22d3 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundItem.cs @@ -0,0 +1,24 @@ +using Pf2eDataScrapper.Model.Structure; +using Pf2eDataScrapper.Model.Base; +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.BackgroundRelation; + +[PrimaryKey(nameof(BackgroundId), nameof(EntityId))] +public partial class BackgroundItem +{ + [Column(Order = 1)] + public int BackgroundId { get; set; } + + [Column(Order = 2)] + public int EntityId { get; set; } + + [Column(Order = 3)] + public int? Level { get; set; } + + public virtual Background Background { get; set; } = null!; + + public virtual Entity Entity { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundTraining.cs b/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundTraining.cs new file mode 100644 index 0000000..aa282a3 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/BackgroundRelation/BackgroundTraining.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Enum; + +namespace Pf2eDataScrapper.Model.Structure.BackgroundRelation; + +public partial class BackgroundTraining +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int BackgroundId { get; set; } + + [Column(Order = 3)] + public int TrainingId { get; set; } + + [Column(Order = 4)] + public TrainingStage Level { get; set; } + + public virtual Background Background { get; set; } = null!; + + public virtual Training Training { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Class.cs b/Pf2eDataScrapper/Model/Structure/Class.cs similarity index 52% rename from Pf2eDataScrapper/Model/Class.cs rename to Pf2eDataScrapper/Model/Structure/Class.cs index 7b83a44..d34389c 100644 --- a/Pf2eDataScrapper/Model/Class.cs +++ b/Pf2eDataScrapper/Model/Structure/Class.cs @@ -1,24 +1,34 @@ -using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Structure.ClassRelation; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Base; -namespace Pf2eDataScrapper.Model; +namespace Pf2eDataScrapper.Model.Structure; public partial class Class : IEntity { + [Key] + [Column(Order = 1)] public int Id { get; set; } + [Column(Order = 2)] public Entity Entity { get; set; } = null!; + [Column(Order = 3)] public int Hp { get; set; } + [Column(Order = 4)] public int Perception { get; set; } + [Column(Order = 5)] public bool Spellcasting { get; set; } + [Column(Order = 6)] public int AdditionalTrainedSkills { get; set; } - public virtual ICollection ClassKeyAbilities { get; set; } = new List(); + public virtual ICollection ClassKeyAbilities { get; set; } = []; - public virtual ICollection ClassProgressions { get; set; } = new List(); + public virtual ICollection ClassProgressions { get; set; } = []; - public virtual ICollection ClassTrainings { get; set; } = new List(); + public virtual ICollection ClassTrainings { get; set; } = []; } diff --git a/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassKeyAbility.cs b/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassKeyAbility.cs new file mode 100644 index 0000000..0c7ed92 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassKeyAbility.cs @@ -0,0 +1,21 @@ +using Pf2eDataScrapper.Model.Enum; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure.ClassRelation; + +public partial class ClassKeyAbility +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int ClassId { get; set; } + + [Column(Order = 3)] + public AttributeValues Value { get; set; } + + public virtual Class Class { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassProgression.cs b/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassProgression.cs new file mode 100644 index 0000000..6562640 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassProgression.cs @@ -0,0 +1,29 @@ +namespace Pf2eDataScrapper.Model.Structure.ClassRelation; +using Pf2eDataScrapper.Model.Base; +using Pf2eDataScrapper.Model.Enum; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +public partial class ClassProgression +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int ClassId { get; set; } + + [Column(Order = 31)] + public int Level { get; set; } + + [Column(Order = 4)] + public ClassProgressionType Type { get; set; } + + [Column(Order = 5)] + public int? EntityId { get; set; } + + public virtual Class Class { get; set; } = null!; + + public virtual Entity? Entity { get; set; } +} diff --git a/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassTraining.cs b/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassTraining.cs new file mode 100644 index 0000000..69eb832 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/ClassRelation/ClassTraining.cs @@ -0,0 +1,30 @@ +using Pf2eDataScrapper.Model.Common; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.ClassRelation; + +public partial class ClassTraining +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int ClassId { get; set; } + + [Column(Order = 3)] + public int? TrainingId { get; set; } + + [Column(Order = 4)] + [MaxLength(Pf2eDbContext.NameLength)] + public string? Name { get; set; } + + [Column(Order = 5)] + public int Stage { get; set; } + + public virtual Class Class { get; set; } = null!; + + public virtual Training? Training { get; set; } +} diff --git a/Pf2eDataScrapper/Model/Structure/Condition.cs b/Pf2eDataScrapper/Model/Structure/Condition.cs index 025b152..9208d9e 100644 --- a/Pf2eDataScrapper/Model/Structure/Condition.cs +++ b/Pf2eDataScrapper/Model/Structure/Condition.cs @@ -1,22 +1,22 @@ -using Pf2eDataScrapper.Model.Common; -using Pf2eDataScrapper.Model.Enum; +using Pf2eDataScrapper.Model.Enum; +using Pf2eDataScrapper.Model.Base; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Pf2eDataScrapper.Model.Structure; -[Table("condition")] public partial class Condition : IEntity { [Key] - [Column("id", Order = 1)] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] public int Id { get; set; } public Entity Entity { get; set; } = null!; - [Column("group", Order = 2)] + [Column(Order = 2)] public ConditionGroup? Group { get; set; } - [Column("extra", Order = 3)] + [Column(Order = 3)] public string? Extra { get; set; } } diff --git a/Pf2eDataScrapper/Model/Deity.cs b/Pf2eDataScrapper/Model/Structure/Deity.cs similarity index 53% rename from Pf2eDataScrapper/Model/Deity.cs rename to Pf2eDataScrapper/Model/Structure/Deity.cs index 1527f3a..667188d 100644 --- a/Pf2eDataScrapper/Model/Deity.cs +++ b/Pf2eDataScrapper/Model/Structure/Deity.cs @@ -1,15 +1,31 @@ using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Base; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Structure.DeityRelation; +using Pf2eDataScrapper.Model.Enum; -namespace Pf2eDataScrapper.Model; +namespace Pf2eDataScrapper.Model.Structure; public partial class Deity : IEntity { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] public int Id { get; set; } public Entity Entity { get; set; } = null!; - // TODO Category Font Sanctification + [Column(Order = 2)] + public DeityCategory Category { get; set; } + [Column(Order = 3)] + public DeityFonts Fonts { get; set; } + + [Column(Order = 4)] + public DeitySanctification Sanctification { get; set; } + + [Column(Order = 5)] public bool SanctificationMust { get; set; } public virtual ICollection DeityAttributes { get; set; } = new List(); diff --git a/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityAttribute.cs b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityAttribute.cs new file mode 100644 index 0000000..16f1351 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityAttribute.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore; +using Pf2eDataScrapper.Model.Enum; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure.DeityRelation; + +[PrimaryKey(nameof(DeityId), nameof(Attribute))] +public partial class DeityAttribute +{ + [Column(Order = 1)] + public int DeityId { get; set; } + + [Column(Order = 2)] + public AttributeValues Attribute { get; set; } + + public virtual Deity Deity { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityDomain.cs b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityDomain.cs new file mode 100644 index 0000000..a44e33a --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityDomain.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.DeityRelation; + +public partial class DeityDomain +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int DeityId { get; set; } + + [Column(Order = 3)] + public bool IsPrimary { get; set; } + + [Column(Order = 4)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Value { get; set; } = null!; + + public virtual Deity Deity { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/DeityRelation/DeitySpell.cs b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeitySpell.cs new file mode 100644 index 0000000..3a12b8a --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeitySpell.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.DeityRelation; + +public partial class DeitySpell +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int DeityId { get; set; } + + [Column(Order = 3)] + public int Level { get; set; } + + [Column(Order = 4)] + public int SpellId { get; set; } + + public virtual Deity Deity { get; set; } = null!; + + public virtual Spell Spell { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityWeapon.cs b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityWeapon.cs new file mode 100644 index 0000000..28f8aec --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/DeityRelation/DeityWeapon.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.DeityRelation; + +public partial class DeityWeapon +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int DeityId { get; set; } + + [Column(Order = 3)] + [MaxLength(Pf2eDbContext.NameLength)] + public string Weapon { get; set; } = null!; + + public virtual Deity Deity { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/Feat.cs b/Pf2eDataScrapper/Model/Structure/Feat.cs new file mode 100644 index 0000000..4ad9bc4 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/Feat.cs @@ -0,0 +1,47 @@ +using Pf2eDataScrapper.Model.Structure.FeatRelation; +using Pf2eDataScrapper.Model.Base; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Enum; + +namespace Pf2eDataScrapper.Model.Structure; + +public partial class Feat : IEntity +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int Id { get; set; } + + public Entity Entity { get; set; } = null!; + + [Column(Order = 2)] + public ActionType Type { get; set; } + + [Column(Order = 3)] + public ActionCategory Category { get; set; } + + [Column(Order = 4)] + public int? Actions { get; set; } + + [Column(Order = 5)] + public int Level { get; set; } + + [Column(Order = 6)] + public int? LevelTaken { get; set; } + + [Column(Order = 7)] + public int? MaxTakable { get; set; } + + [Column(Order = 8)] + [MaxLength(255)] + public string? Location { get; set; } + + [Column(Order = 9)] + public bool? OnlyLevel1 { get; set; } + + [Column(Order = 10)] + public string? Extra { get; set; } + + public virtual ICollection FeatPrerequisites { get; set; } = []; +} diff --git a/Pf2eDataScrapper/Model/Structure/FeatRelation/FeatPrerequisite.cs b/Pf2eDataScrapper/Model/Structure/FeatRelation/FeatPrerequisite.cs new file mode 100644 index 0000000..4ee96c3 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/FeatRelation/FeatPrerequisite.cs @@ -0,0 +1,22 @@ +using Pf2eDataScrapper.Model.Structure; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Pf2eDataScrapper.Model.Structure.FeatRelation; + +public partial class FeatPrerequisite +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int FeatId { get; set; } + + [Column(Order = 3)] + [MaxLength(255)] + public string Value { get; set; } = null!; + + public virtual Feat Feat { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/Heritage.cs b/Pf2eDataScrapper/Model/Structure/Heritage.cs new file mode 100644 index 0000000..5b2bc2b --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/Heritage.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Base; + +namespace Pf2eDataScrapper.Model.Structure; + +public partial class Heritage : IEntity +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int Id { get; set; } + + public Entity Entity { get; set; } = null!; + + [Column(Order = 2)] + public int? AncestryId { get; set; } + + public virtual Ancestry? Ancestry { get; set; } +} diff --git a/Pf2eDataScrapper/Model/Spell.cs b/Pf2eDataScrapper/Model/Structure/Spell.cs similarity index 55% rename from Pf2eDataScrapper/Model/Spell.cs rename to Pf2eDataScrapper/Model/Structure/Spell.cs index 93fb1b2..09a3e13 100644 --- a/Pf2eDataScrapper/Model/Spell.cs +++ b/Pf2eDataScrapper/Model/Structure/Spell.cs @@ -1,40 +1,60 @@ -using Pf2eDataScrapper.Model.Common; +using Pf2eDataScrapper.Model.Structure.DeityRelation; +using Pf2eDataScrapper.Model.Structure.SpellRelation; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Base; -namespace Pf2eDataScrapper.Model; +namespace Pf2eDataScrapper.Model.Structure; public partial class Spell : IEntity { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] public int Id { get; set; } public Entity Entity { get; set; } = null!; + [Column(Order = 2)] public int Level { get; set; } + [Column(Order = 3)] public int Cost { get; set; } + [Column(Order = 4)] public bool Counteraction { get; set; } + [Column(Order = 5)] public bool Sustained { get; set; } + [Column(Order = 6)] + [MaxLength(255)] public string Duration { get; set; } = null!; + [Column(Order = 7)] + [MaxLength(255)] public string Range { get; set; } = null!; + [Column(Order = 8)] + [MaxLength(255)] public string Requirements { get; set; } = null!; + [Column(Order = 9)] + [MaxLength(255)] public string Target { get; set; } = null!; + [Column(Order = 10)] + [MaxLength(255)] public string Time { get; set; } = null!; + [Column(Order = 11)] public bool CanHeightening { get; set; } - - public virtual ICollection DeitySpells { get; set; } = new List(); - + public virtual SpellArea? SpellArea { get; set; } + public virtual SpellRitual? SpellRitual { get; set; } + public virtual ICollection SpellDamages { get; set; } = new List(); public virtual ICollection SpellDefenses { get; set; } = new List(); - - public virtual SpellRitual? SpellRitual { get; set; } } diff --git a/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellArea.cs b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellArea.cs new file mode 100644 index 0000000..20d2252 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellArea.cs @@ -0,0 +1,26 @@ +using Pf2eDataScrapper.Model.Structure; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Enum; + +namespace Pf2eDataScrapper.Model.Structure.SpellRelation; + +public partial class SpellArea +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int SpellId { get; set; } + + [Column(Order = 2)] + [MaxLength(255)] + public string? Details { get; set; } + + [Column(Order = 3)] + public SpellAreaType Type { get; set; } + + [Column(Order = 4)] + public int Value { get; set; } + + public virtual Spell Spell { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDamage.cs b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDamage.cs new file mode 100644 index 0000000..b9f0bc1 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDamage.cs @@ -0,0 +1,44 @@ +using Pf2eDataScrapper.Model.Structure; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using Pf2eDataScrapper.Model.Enum; + +namespace Pf2eDataScrapper.Model.Structure.SpellRelation; + +public partial class SpellDamage +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int SpellId { get; set; } + + [Column(Order = 3)] + [MaxLength(255)] + public string Key { get; set; } = null!; + + [Column(Order = 4)] + public bool? ApplyMod { get; set; } + + [Column(Order = 5)] + public SpellDamageCategory? Category { get; set; } + + [Column(Order = 6)] + [MaxLength(255)] + public string Formula { get; set; } = null!; + + [Column(Order = 7)] + public SpellDamageKinds Kinds { get; set; } + + [Column(Order = 8)] + [MaxLength(255)] + public string? Materials { get; set; } + + [Column(Order = 9)] + [MaxLength(255)] + public string Type { get; set; } = null!; + + public virtual Spell Spell { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDefense.cs b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDefense.cs new file mode 100644 index 0000000..a062cbc --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellDefense.cs @@ -0,0 +1,28 @@ +using Pf2eDataScrapper.Model.Structure; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.SpellRelation; + +public partial class SpellDefense +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column(Order = 1)] + public int Id { get; set; } + + [Column(Order = 2)] + public int SpellId { get; set; } + + [Column(Order = 3)] + public bool IsPassive { get; set; } + + [Column(Order = 4)] + public bool? IsBasic { get; set; } + + [Column(Order = 5)] + [MaxLength(255)] + public string Statistic { get; set; } = null!; + + public virtual Spell Spell { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellRitual.cs b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellRitual.cs new file mode 100644 index 0000000..e1b9b53 --- /dev/null +++ b/Pf2eDataScrapper/Model/Structure/SpellRelation/SpellRitual.cs @@ -0,0 +1,26 @@ +using Pf2eDataScrapper.Model.Structure; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace Pf2eDataScrapper.Model.Structure.SpellRelation; + +public partial class SpellRitual +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + [Column(Order = 1)] + public int SpellId { get; set; } + + [Column(Order = 2)] + [MaxLength(255)] + public string PrimaryCheck { get; set; } = null!; + + [Column(Order = 3)] + public int SecondaryCasters { get; set; } + + [Column(Order = 4)] + [MaxLength(255)] + public string SecondaryChecks { get; set; } = null!; + + public virtual Spell Spell { get; set; } = null!; +} diff --git a/Pf2eDataScrapper/Model/Training.cs b/Pf2eDataScrapper/Model/Training.cs deleted file mode 100644 index 223b75f..0000000 --- a/Pf2eDataScrapper/Model/Training.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Pf2eDataScrapper.Model; - -public partial class Training -{ - public int Id { get; set; } - - public string Key { get; set; } = null!; - - public virtual ICollection ClassTrainings { get; set; } = []; - - public virtual ICollection Deities { get; set; } = []; -} diff --git a/Pf2eDataScrapper/Pf2eDataScrapper.csproj b/Pf2eDataScrapper/Pf2eDataScrapper.csproj index 929a96b..6a2dae7 100644 --- a/Pf2eDataScrapper/Pf2eDataScrapper.csproj +++ b/Pf2eDataScrapper/Pf2eDataScrapper.csproj @@ -10,6 +10,7 @@ + diff --git a/Pf2eDataScrapper/Pf2eDbContext.cs b/Pf2eDataScrapper/Pf2eDbContext.cs deleted file mode 100644 index cd7ae43..0000000 --- a/Pf2eDataScrapper/Pf2eDbContext.cs +++ /dev/null @@ -1,1046 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Pf2eDataScrapper.Model; -using Pf2eDataScrapper.Model.Common; -using Pf2eDataScrapper.Model.Enum; -using Pf2eDataScrapper.Model.Structure; - -namespace Pf2eDataScrapper; - -public partial class Pf2eDbContext : DbContext -{ - public Pf2eDbContext() - { - } - - public Pf2eDbContext(DbContextOptions options) - : base(options) - { - } - - #region DbSets - - public virtual DbSet Actions { get; set; } - - public virtual DbSet Ancestries { get; set; } - - public virtual DbSet AncestryBoosts { get; set; } - - public virtual DbSet AncestryItems { get; set; } - - public virtual DbSet AncestryLanguages { get; set; } - - public virtual DbSet Backgrounds { get; set; } - - public virtual DbSet BackgroundBoosts { get; set; } - - public virtual DbSet BackgroundItems { get; set; } - - public virtual DbSet BackgroundSkills { get; set; } - - public virtual DbSet CampaignFeatures { get; set; } - - public virtual DbSet Classes { get; set; } - - public virtual DbSet ClassKeyAbilities { get; set; } - - public virtual DbSet ClassProgressions { get; set; } - - public virtual DbSet ClassTrainings { get; set; } - - public virtual DbSet Conditions { get; set; } - - public virtual DbSet Deities { get; set; } - - public virtual DbSet DeityAttributes { get; set; } - - public virtual DbSet DeityDomains { get; set; } - - public virtual DbSet DeitySpells { get; set; } - - public virtual DbSet DeityWeapons { get; set; } - - public virtual DbSet Entities { get; set; } - - public virtual DbSet EntityAliases { get; set; } - - public virtual DbSet EntityExternals { get; set; } - - public virtual DbSet EntityKeywords { get; set; } - - public virtual DbSet EntitySources { get; set; } - - public virtual DbSet ExternalTargets { get; set; } - - public virtual DbSet Feats { get; set; } - - public virtual DbSet FeatPrerequisites { get; set; } - - public virtual DbSet Frequencies { get; set; } - - public virtual DbSet Heritages { get; set; } - - public virtual DbSet Keywords { get; set; } - - public virtual DbSet KeywordAliases { get; set; } - - public virtual DbSet Languages { get; set; } - - public virtual DbSet Sources { get; set; } - - public virtual DbSet Spells { get; set; } - - public virtual DbSet SpellAreas { get; set; } - - public virtual DbSet SpellDamages { get; set; } - - public virtual DbSet SpellDefenses { get; set; } - - public virtual DbSet SpellRituals { get; set; } - - public virtual DbSet Trainings { get; set; } - - public virtual DbSet Traits { get; set; } - - #endregion - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - EnvSettings.Load(); - optionsBuilder.UseNpgsql(EnvSettings.DatabaseConnection, - builder => - { - builder - .MapEnum("entity_type") - .MapEnum("entity_rarity") - .MapEnum("alias_type") - .MapEnum("trait_type") - .MapEnum("action_type") - .MapEnum("action_category") - .MapEnum("enum_size") - .MapEnum("ancestry_vision") - .MapEnum("campaign_feature_category") - .MapEnum("class_progression_type") - .MapEnum("condition_group") - .MapEnum("deity_category") - .MapEnum("deity_fonts") - .MapEnum("deity_sanctification") - .MapEnum("feat_action_type") - .MapEnum("feat_category") - .MapEnum("spell_area_type") - .MapEnum("spell_damage_category") - .MapEnum("spell_damage_kinds") - ; - } - ); - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - modelBuilder.UseIdentityByDefaultColumns(); - - modelBuilder - .HasPostgresEnum("entity_type") - .HasPostgresEnum("entity_rarity") - .HasPostgresEnum("alias_type") - .HasPostgresEnum("trait_type") - .HasPostgresEnum("action_type") - .HasPostgresEnum("action_category") - .HasPostgresEnum("enum_size") - .HasPostgresEnum("ancestry_vision") - .HasPostgresEnum("campaign_feature_category") - .HasPostgresEnum("class_progression_type") - .HasPostgresEnum("condition_group") - .HasPostgresEnum("deity_category") - .HasPostgresEnum("deity_fonts") - .HasPostgresEnum("deity_sanctification") - .HasPostgresEnum("feat_action_type") - .HasPostgresEnum("feat_category") - .HasPostgresEnum("spell_area_type") - .HasPostgresEnum("spell_damage_category") - .HasPostgresEnum("spell_damage_kinds") - ; - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("entity_pkey"); - - entity.ToTable("entity"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Description).HasColumnName("description"); - entity.Property(e => e.Type).HasColumnName("type"); - entity.Property(e => e.Img) - .HasMaxLength(150) - .HasColumnName("img"); - entity.Property(e => e.IsChecked) - .HasDefaultValue(false) - .HasColumnName("is_checked"); - entity.Property(e => e.IsTranslated) - .HasDefaultValue(false) - .HasColumnName("is_translated"); - entity.Property(e => e.Name) - .HasMaxLength(150) - .HasColumnName("name"); - entity.Property(e => e.Slug) - .HasMaxLength(150) - .HasColumnName("slug"); - - entity.HasMany(d => d.Traits).WithMany(t => t.Entities) - .UsingEntity>( - "EntityTrait", - r => r.HasOne().WithMany() - .HasForeignKey("TraitId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_traits_trait_id_fkey"), - l => l.HasOne().WithMany() - .HasForeignKey("EntityId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_traits_entity_id_fkey"), - j => - { - j.HasKey("EntityId", "TraitId").HasName("entity_traits_pkey"); - j.ToTable("entity_traits"); - j.IndexerProperty("EntityId").HasColumnName("entity_id"); - j.IndexerProperty("TraitId").HasColumnName("trait_id"); - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("entity_aliases_pkey"); - - entity.ToTable("entity_aliases"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Alias) - .HasColumnType("character varying") - .HasColumnName("alias"); - entity.Property(e => e.EntityId).HasColumnName("entity_id"); - - entity.HasOne(d => d.Entity).WithMany() - .HasForeignKey(d => d.EntityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_aliases_entity_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => new { e.EntityId, e.TargetId }).HasName("entity_external_pkey"); - - entity.ToTable("entity_external"); - - entity.Property(e => e.EntityId).HasColumnName("entity_id"); - entity.Property(e => e.TargetId).HasColumnName("target_id"); - entity.Property(e => e.Md5) - .HasColumnType("character varying") - .HasColumnName("md5"); - entity.Property(e => e.Path) - .HasColumnType("character varying") - .HasColumnName("path"); - entity.Property(e => e.Suffix) - .HasDefaultValueSql("''::character varying") - .HasColumnType("character varying") - .HasColumnName("suffix"); - - entity.HasOne(d => d.Entity).WithMany() - .HasForeignKey(d => d.EntityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_external_entity_id_fkey"); - - entity.HasOne(d => d.Target).WithMany() - .HasForeignKey(d => d.TargetId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_external_target_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity - .HasNoKey() - .ToTable("entity_keywords"); - - entity.Property(e => e.EntityId).HasColumnName("entity_id"); - entity.Property(e => e.KeywordId).HasColumnName("keyword_id"); - - entity.HasOne(d => d.Entity).WithMany() - .HasForeignKey(d => d.EntityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_keywords_entity_id_fkey"); - - entity.HasOne(d => d.Keyword).WithMany() - .HasForeignKey(d => d.KeywordId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_keywords_keyword_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(p => new { p.EntityId, p.SourceId }).HasName("entity_sources_pkey"); - - entity.ToTable("entity_sources"); - - entity.Property(e => e.EntityId).HasColumnName("entity_id"); - entity.Property(e => e.IsRemaster).HasColumnName("is_remaster"); - entity.Property(e => e.SourceId).HasColumnName("source_id"); - entity.Property(e => e.Suffix) - .HasDefaultValueSql("''::character varying") - .HasColumnType("character varying") - .HasColumnName("suffix"); - - entity.HasOne(d => d.Entity).WithMany() - .HasForeignKey(d => d.EntityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_sources_entity_id_fkey"); - - entity.HasOne(d => d.Source).WithMany() - .HasForeignKey(d => d.SourceId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("entity_sources_source_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("external_target_pkey"); - - entity.ToTable("external_target"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Icon) - .HasColumnType("character varying") - .HasColumnName("icon"); - entity.Property(e => e.Name) - .HasColumnType("character varying") - .HasColumnName("name"); - }); - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("frequency_pkey"); - - entity.ToTable("frequency"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.Property(e => e.Max).HasColumnName("max"); - entity.Property(e => e.Per).HasColumnName("per"); - entity.Property(e => e.Value).HasColumnName("value"); - - entity.HasOne(d => d.IdNavigation).WithOne() - .HasForeignKey(d => d.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("frequency_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("keyword_pkey"); - - entity.ToTable("keyword"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Slug) - .HasMaxLength(50) - .HasColumnName("slug"); - }); - - modelBuilder.Entity(entity => - { - entity - .HasNoKey() - .ToTable("keyword_aliases"); - - entity.Property(e => e.KeywordId).HasColumnName("keyword_id"); - entity.Property(e => e.Value) - .HasColumnType("character varying") - .HasColumnName("value"); - - entity.HasOne(d => d.Keyword).WithMany() - .HasForeignKey(d => d.KeywordId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("keyword_aliases_keyword_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("language_pkey"); - - entity.ToTable("language"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Name) - .HasColumnType("character varying") - .HasColumnName("name"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("source_pkey"); - - entity.ToTable("source"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Name) - .HasColumnType("character varying") - .HasColumnName("name"); - entity.Property(e => e.Url) - .HasColumnType("character varying") - .HasColumnName("url"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("trainings_pkey"); - - entity.ToTable("trainings"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Key) - .HasColumnType("character varying") - .HasColumnName("key"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("trait_pkey"); - - entity.ToTable("trait"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.Description).HasColumnName("description"); - entity.Property(e => e.Name) - .HasColumnType("character varying") - .HasColumnName("name"); - entity.Property(e => e.Slug) - .HasColumnType("character varying") - .HasColumnName("slug"); - }); - - - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("action_pkey"); - - entity.ToTable("action"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("action_id_fkey"); - entity.Property(e => e.Actions).HasColumnName("actions"); - entity.Property(e => e.DeathNote).HasColumnName("death_note"); - - entity.Property(e => e.Type).HasColumnName("action_type"); - entity.Property(e => e.Category).HasColumnName("category"); - entity.Property(e => e.Extra).HasColumnName("extra"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("ancestry_pkey"); - - entity.ToTable("ancestry"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("ancestry_id_fkey"); - entity.Property(e => e.Hp).HasColumnName("hp"); - entity.Property(e => e.Reach).HasColumnName("reach"); - entity.Property(e => e.Speed).HasColumnName("speed"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("ancestry_boosts_pkey"); - - entity.ToTable("ancestry_boosts"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.AncestryId).HasColumnName("ancestry_id"); - entity.Property(e => e.Boost) - .HasDefaultValue(true) - .HasColumnName("boost"); - entity.Property(e => e.Value) - .HasMaxLength(3) - .HasColumnName("value"); - - entity.HasOne(d => d.Ancestry).WithMany(p => p.AncestryBoosts) - .HasForeignKey(d => d.AncestryId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("ancestry_boosts_ancestry_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => new { e.AncestryId, e.ItemId }).HasName("ancestry_items_pkey"); - - entity.ToTable("ancestry_items"); - - entity.Property(e => e.AncestryId).HasColumnName("ancestry_id"); - entity.Property(e => e.ItemId).HasColumnName("item_id"); - entity.Property(e => e.Level).HasColumnName("level"); - - entity.HasOne(d => d.Ancestry).WithMany(p => p.AncestryItems) - .HasForeignKey(d => d.AncestryId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("ancestry_items_ancestry_id_fkey"); - - entity.HasOne(d => d.Item).WithMany() - .HasForeignKey(d => d.ItemId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("ancestry_items_item_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => new { e.AncestryId, e.LanguageId }).HasName("ancestry_languages_pkey"); - - entity.ToTable("ancestry_languages"); - - entity.Property(e => e.AncestryId).HasColumnName("ancestry_id"); - entity.Property(e => e.LanguageId).HasColumnName("language_id"); - entity.Property(e => e.IsAdditional).HasColumnName("is_additional"); - - entity.HasOne(d => d.Ancestry).WithMany(p => p.AncestryLanguages) - .HasForeignKey(d => d.AncestryId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("ancestry_languages_ancestry_id_fkey"); - - entity.HasOne(d => d.Language).WithMany(p => p.AncestryLanguages) - .HasForeignKey(d => d.LanguageId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("ancestry_languages_language_id_fkey"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("background_pkey"); - - entity.ToTable("background"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("background_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("background_boosts_pkey"); - - entity.ToTable("background_boosts"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.BackgroundId).HasColumnName("background_id"); - entity.Property(e => e.Value) - .HasMaxLength(3) - .HasColumnName("value"); - - entity.HasOne(d => d.Background).WithMany(p => p.BackgroundBoosts) - .HasForeignKey(d => d.BackgroundId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("background_boosts_background_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => new { e.BackgroundId, e.EntityId }).HasName("background_items_pkey"); - - entity.ToTable("background_items"); - - entity.Property(e => e.BackgroundId).HasColumnName("background_id"); - entity.Property(e => e.EntityId).HasColumnName("entity_id"); - entity.Property(e => e.Level).HasColumnName("level"); - - entity.HasOne(d => d.Background).WithMany(p => p.BackgroundItems) - .HasForeignKey(d => d.BackgroundId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("background_items_background_id_fkey"); - - entity.HasOne(d => d.Entity).WithMany() - .HasForeignKey(d => d.EntityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("background_items_entity_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("background_skills_pkey"); - - entity.ToTable("background_skills"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.BackgroundId).HasColumnName("background_id"); - entity.Property(e => e.IsSkill).HasColumnName("is_skill"); - entity.Property(e => e.Name) - .HasColumnType("character varying") - .HasColumnName("name"); - - entity.HasOne(d => d.Background).WithMany(p => p.BackgroundSkills) - .HasForeignKey(d => d.BackgroundId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("background_skills_background_id_fkey"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("campaign_feature_pkey"); - - entity.ToTable("campaign_feature"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("campaign_feature_id_fkey"); - - entity.Property(e => e.Level).HasColumnName("level"); - entity.Property(e => e.Actions).HasColumnName("actions"); - entity.Property(e => e.Prerequisites) - .HasColumnType("character varying") - .HasColumnName("prerequisites"); - entity.Property(e => e.Extra).HasColumnName("extra"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("class_pkey"); - - entity.ToTable("class"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("class_id_fkey"); - - entity.Property(e => e.Hp).HasColumnName("hp"); - entity.Property(e => e.Perception).HasColumnName("perception"); - entity.Property(e => e.Spellcasting).HasColumnName("spellcasting"); - entity.Property(e => e.AdditionalTrainedSkills).HasColumnName("additionalTrainedSkills"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("class_key_abilities_pkey"); - - entity.ToTable("class_key_abilities"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.ClassId).HasColumnName("class_id"); - entity.Property(e => e.Value) - .HasMaxLength(3) - .HasColumnName("value"); - - entity.HasOne(d => d.Class).WithMany(p => p.ClassKeyAbilities) - .HasForeignKey(d => d.ClassId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("class_key_abilities_class_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("class_progression_pkey"); - - entity.ToTable("class_progression"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.ClassId).HasColumnName("class_id"); - entity.Property(e => e.EntityId).HasColumnName("entity_id"); - entity.Property(e => e.Level).HasColumnName("level"); - - entity.HasOne(d => d.Class).WithMany(p => p.ClassProgressions) - .HasForeignKey(d => d.ClassId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("class_progression_class_id_fkey"); - - entity.HasOne(d => d.Entity).WithMany() - .HasForeignKey(d => d.EntityId) - .HasConstraintName("class_progression_entity_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("class_trainings_pkey"); - - entity.ToTable("class_trainings"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.ClassId).HasColumnName("class_id"); - entity.Property(e => e.Item).HasColumnName("item"); - entity.Property(e => e.Name) - .HasColumnType("character varying") - .HasColumnName("name"); - entity.Property(e => e.Stage).HasColumnName("stage"); - - entity.HasOne(d => d.Class).WithMany(p => p.ClassTrainings) - .HasForeignKey(d => d.ClassId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("class_trainings_class_id_fkey"); - - entity.HasOne(d => d.ItemNavigation).WithMany(p => p.ClassTrainings) - .HasForeignKey(d => d.Item) - .HasConstraintName("class_trainings_item_fkey"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("condition_pkey"); - - entity.ToTable("condition"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("condition_id_fkey"); - - entity.Property(e => e.Group).HasColumnName("group"); - entity.Property(e => e.Extra).HasColumnName("extra"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("deity_pkey"); - - entity.ToTable("deity"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_id_fkey"); - - entity.Property(e => e.SanctificationMust).HasColumnName("sanctification_must"); - - entity.HasMany(d => d.Skills).WithMany(p => p.Deities) - .UsingEntity>( - "DeitySkill", - r => r.HasOne().WithMany() - .HasForeignKey("SkillId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_skills_skill_id_fkey"), - l => l.HasOne().WithMany() - .HasForeignKey("DeityId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_skills_deity_id_fkey"), - j => - { - j.HasKey("DeityId", "SkillId").HasName("deity_skills_pkey"); - j.ToTable("deity_skills"); - j.IndexerProperty("DeityId").HasColumnName("deity_id"); - j.IndexerProperty("SkillId").HasColumnName("skill_id"); - }); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => new { e.DeityId, e.Attribute }).HasName("deity_attributes_pkey"); - - entity.ToTable("deity_attributes"); - - entity.Property(e => e.DeityId).HasColumnName("deity_id"); - entity.Property(e => e.Attribute) - .HasMaxLength(3) - .HasColumnName("attribute"); - - entity.HasOne(d => d.Deity).WithMany(p => p.DeityAttributes) - .HasForeignKey(d => d.DeityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_attributes_deity_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("deity_domains_pkey"); - - entity.ToTable("deity_domains"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.DeityId).HasColumnName("deity_id"); - entity.Property(e => e.IsPrimary).HasColumnName("is_primary"); - entity.Property(e => e.Value) - .HasColumnType("character varying") - .HasColumnName("value"); - - entity.HasOne(d => d.Deity).WithMany(p => p.DeityDomains) - .HasForeignKey(d => d.DeityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_domains_deity_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("deity_spells_pkey"); - - entity.ToTable("deity_spells"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.DeityId).HasColumnName("deity_id"); - entity.Property(e => e.Level).HasColumnName("level"); - entity.Property(e => e.SpellId).HasColumnName("spell_id"); - - entity.HasOne(d => d.Deity).WithMany(p => p.DeitySpells) - .HasForeignKey(d => d.DeityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_spells_deity_id_fkey"); - - entity.HasOne(d => d.Spell).WithMany(p => p.DeitySpells) - .HasForeignKey(d => d.SpellId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_spells_spell_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("deity_weapons_pkey"); - - entity.ToTable("deity_weapons"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.DeityId).HasColumnName("deity_id"); - entity.Property(e => e.Weapon) - .HasColumnType("character varying") - .HasColumnName("weapon"); - - entity.HasOne(d => d.Deity).WithMany(p => p.DeityWeapons) - .HasForeignKey(d => d.DeityId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("deity_weapons_deity_id_fkey"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("feat_pkey"); - - entity.ToTable("feat"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("feat_id_fkey"); - - entity.Property(e => e.Actions).HasColumnName("actions"); - entity.Property(e => e.Level).HasColumnName("level"); - entity.Property(e => e.LevelTaken).HasColumnName("level_taken"); - entity.Property(e => e.MaxTakable).HasColumnName("max_takable"); - entity.Property(e => e.Location) - .HasMaxLength(12) - .HasColumnName("location"); - entity.Property(e => e.OnlyLevel1).HasColumnName("only_level_1"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("feat_prerequisites_pkey"); - - entity.ToTable("feat_prerequisites"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.FeatId).HasColumnName("feat_id"); - entity.Property(e => e.Value) - .HasColumnType("character varying") - .HasColumnName("value"); - - entity.HasOne(d => d.Feat).WithMany(p => p.FeatPrerequisites) - .HasForeignKey(d => d.FeatId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("feat_prerequisites_feat_id_fkey"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("heritage_pkey"); - - entity.ToTable("heritage"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("heritage_id_fkey"); - - entity.Property(e => e.AncestryId).HasColumnName("ancestry_id"); - entity.HasOne(d => d.Ancestry).WithMany(p => p.Heritages) - .HasForeignKey(d => d.AncestryId) - .HasConstraintName("heritage_ancestry_id_fkey"); - }); - - - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("spell_pkey"); - - entity.ToTable("spell"); - - entity.Property(e => e.Id) - .ValueGeneratedNever() - .HasColumnName("id"); - entity.HasOne(e => e.Entity).WithOne() - .HasForeignKey(e => e.Id) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("spell_id_fkey"); - - entity.Property(e => e.Level).HasColumnName("level"); - entity.Property(e => e.Cost).HasColumnName("cost"); - entity.Property(e => e.Counteraction).HasColumnName("counteraction"); - entity.Property(e => e.Sustained).HasColumnName("sustained"); - entity.Property(e => e.Duration) - .HasColumnType("character varying") - .HasColumnName("duration"); - entity.Property(e => e.Range) - .HasColumnType("character varying") - .HasColumnName("range"); - entity.Property(e => e.Requirements) - .HasColumnType("character varying") - .HasColumnName("requirements"); - entity.Property(e => e.Target) - .HasColumnType("character varying") - .HasColumnName("target"); - entity.Property(e => e.Time) - .HasColumnType("character varying") - .HasColumnName("time"); - entity.Property(e => e.CanHeightening).HasColumnName("can_heightening"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.SpellId).HasName("spell_area_pkey"); - - entity.ToTable("spell_area"); - - entity.Property(e => e.SpellId) - .ValueGeneratedNever() - .HasColumnName("spell_id"); - entity.Property(e => e.Details) - .HasColumnType("character varying") - .HasColumnName("details"); - entity.Property(e => e.Value).HasColumnName("value"); - - entity.HasOne(d => d.Spell).WithOne(p => p.SpellArea) - .HasForeignKey(d => d.SpellId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("spell_area_spell_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("spell_damage_pkey"); - - entity.ToTable("spell_damage"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.ApplyMod).HasColumnName("apply_mod"); - entity.Property(e => e.Formula) - .HasColumnType("character varying") - .HasColumnName("formula"); - entity.Property(e => e.Key) - .HasColumnType("character varying") - .HasColumnName("key"); - entity.Property(e => e.Materials) - .HasColumnType("character varying") - .HasColumnName("materials"); - entity.Property(e => e.SpellId).HasColumnName("spell_id"); - entity.Property(e => e.Type) - .HasColumnType("character varying") - .HasColumnName("type"); - - entity.HasOne(d => d.Spell).WithMany(p => p.SpellDamages) - .HasForeignKey(d => d.SpellId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("spell_damage_spell_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.Id).HasName("spell_defense_pkey"); - - entity.ToTable("spell_defense"); - - entity.Property(e => e.Id).HasColumnName("id"); - entity.Property(e => e.IsBasic).HasColumnName("is_basic"); - entity.Property(e => e.IsPassive).HasColumnName("is_passive"); - entity.Property(e => e.SpellId).HasColumnName("spell_id"); - entity.Property(e => e.Statistic) - .HasColumnType("character varying") - .HasColumnName("statistic"); - - entity.HasOne(d => d.Spell).WithMany(p => p.SpellDefenses) - .HasForeignKey(d => d.SpellId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("spell_defense_spell_id_fkey"); - }); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.SpellId).HasName("spell_ritual_pkey"); - - entity.ToTable("spell_ritual"); - - entity.Property(e => e.SpellId) - .ValueGeneratedNever() - .HasColumnName("spell_id"); - entity.Property(e => e.PrimaryCheck) - .HasColumnType("character varying") - .HasColumnName("primary_check"); - entity.Property(e => e.SecondaryCasters).HasColumnName("secondary_casters"); - entity.Property(e => e.SecondaryChecks) - .HasColumnType("character varying") - .HasColumnName("secondary_checks"); - - entity.HasOne(d => d.Spell).WithOne(p => p.SpellRitual) - .HasForeignKey(d => d.SpellId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("spell_ritual_spell_id_fkey"); - }); - - - OnModelCreatingPartial(modelBuilder); - } - - partial void OnModelCreatingPartial(ModelBuilder modelBuilder); -}