Compare commits

...
2 Commits
84 changed files with 1427 additions and 1624 deletions
@@ -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;
-26
View File
@@ -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<AncestryBoost> AncestryBoosts { get; set; } = [];
public virtual ICollection<AncestryItem> AncestryItems { get; set; } = [];
public virtual ICollection<AncestryLanguage> AncestryLanguages { get; set; } = [];
public virtual ICollection<Heritage> Heritages { get; set; } = [];
}
-14
View File
@@ -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!;
}
-16
View File
@@ -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!;
}
@@ -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!;
}
-16
View File
@@ -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<BackgroundBoost> BackgroundBoosts { get; set; } = new List<BackgroundBoost>();
public virtual ICollection<BackgroundItem> BackgroundItems { get; set; } = new List<BackgroundItem>();
public virtual ICollection<BackgroundSkill> BackgroundSkills { get; set; } = new List<BackgroundSkill>();
}
-12
View File
@@ -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!;
}
-16
View File
@@ -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!;
}
-14
View File
@@ -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!;
}
@@ -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<Trait> Traits { get; set; } = [];
public virtual ICollection<Keyword> Keywords { get; set; } = [];
public virtual ICollection<EntityAlias> Aliases { get; set; } = [];
public virtual ICollection<EntitySource> Sources { get; set; } = [];
public virtual ICollection<EntityExternal> Extrnals { get; set; } = [];
}
@@ -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!;
@@ -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<Entity> Entities { get; set; } = [];
public virtual ICollection<KeywordAlias> Aliases { get; set; } = [];
}
@@ -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!;
}
@@ -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!;
}
@@ -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<EntitySource> EntitySources { get; set; } = new List<EntitySource>();
}
@@ -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!;
}
@@ -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<EntityExternal> EntityExternals { get; set; } = [];
}
-20
View File
@@ -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; }
}
-12
View File
@@ -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!;
}
@@ -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; }
}
-18
View File
@@ -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; }
}
@@ -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!;
}
@@ -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; }
}
+24
View File
@@ -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; }
}
-10
View File
@@ -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!;
}
+16
View File
@@ -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!;
}
+11 -10
View File
@@ -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<Entity> Entities { get; set; } = [];
-10
View File
@@ -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!;
}
-14
View File
@@ -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!;
}
-16
View File
@@ -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!;
}
-12
View File
@@ -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!;
}
-20
View File
@@ -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!;
}
-14
View File
@@ -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!;
}
@@ -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,
}
@@ -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
}
@@ -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,
}
@@ -36,4 +36,7 @@ public enum FeatCategory
[PgName("pfsboon")]
Pfsboon,
[PgName("campaign_feature")]
CampaignFeature,
}
@@ -0,0 +1,13 @@
namespace Pf2eDataScrapper.Model.Enum;
public enum TrainingStage
{
Untrained = 0,
Trained = 1,
Expert = 2,
Master = 3,
Legendary = 4,
}
-12
View File
@@ -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<EntityExternal> EntityExternals { get; set; } = new List<EntityExternal>();
}
-28
View File
@@ -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<FeatPrerequisite> FeatPrerequisites { get; set; } = new List<FeatPrerequisite>();
}
@@ -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!;
}
-16
View File
@@ -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!;
}
-14
View File
@@ -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; }
}
+1 -1
View File
@@ -1,4 +1,4 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Base;
namespace Pf2eDataScrapper.Model;
-8
View File
@@ -1,8 +0,0 @@
namespace Pf2eDataScrapper.Model;
public partial class Keyword
{
public int Id { get; set; }
public string Slug { get; set; } = null!;
}
-10
View File
@@ -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!;
}
-10
View File
@@ -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<AncestryLanguage> AncestryLanguages { get; set; } = new List<AncestryLanguage>();
}
+145
View File
@@ -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<Pf2eDbContext> options)
: base(options)
{
}
#region DbSets
public virtual DbSet<Structure.Action> Actions { get; set; }
public virtual DbSet<Ancestry> Ancestries { get; set; }
public virtual DbSet<AncestryBoost> AncestryBoosts { get; set; }
public virtual DbSet<AncestryItem> AncestryItems { get; set; }
public virtual DbSet<AncestryLanguage> AncestryLanguages { get; set; }
public virtual DbSet<Background> Backgrounds { get; set; }
public virtual DbSet<BackgroundBoost> BackgroundBoosts { get; set; }
public virtual DbSet<BackgroundItem> BackgroundItems { get; set; }
public virtual DbSet<BackgroundTraining> BackgroundSkills { get; set; }
public virtual DbSet<Class> Classes { get; set; }
public virtual DbSet<ClassKeyAbility> ClassKeyAbilities { get; set; }
public virtual DbSet<ClassProgression> ClassProgressions { get; set; }
public virtual DbSet<ClassTraining> ClassTrainings { get; set; }
public virtual DbSet<Condition> Conditions { get; set; }
public virtual DbSet<Deity> Deities { get; set; }
public virtual DbSet<DeityAttribute> DeityAttributes { get; set; }
public virtual DbSet<DeityDomain> DeityDomains { get; set; }
public virtual DbSet<DeitySpell> DeitySpells { get; set; }
public virtual DbSet<DeityWeapon> DeityWeapons { get; set; }
public virtual DbSet<Entity> Entities { get; set; }
public virtual DbSet<EntityAlias> EntityAliases { get; set; }
public virtual DbSet<EntityExternal> EntityExternals { get; set; }
public virtual DbSet<EntitySource> EntitySources { get; set; }
public virtual DbSet<ExternalTarget> ExternalTargets { get; set; }
public virtual DbSet<Feat> Feats { get; set; }
public virtual DbSet<FeatPrerequisite> FeatPrerequisites { get; set; }
public virtual DbSet<Frequency> Frequencies { get; set; }
public virtual DbSet<Heritage> Heritages { get; set; }
public virtual DbSet<Keyword> Keywords { get; set; }
public virtual DbSet<KeywordAlias> KeywordAliases { get; set; }
public virtual DbSet<Language> Languages { get; set; }
public virtual DbSet<Source> Sources { get; set; }
public virtual DbSet<Spell> Spells { get; set; }
public virtual DbSet<SpellArea> SpellAreas { get; set; }
public virtual DbSet<SpellDamage> SpellDamages { get; set; }
public virtual DbSet<SpellDefense> SpellDefenses { get; set; }
public virtual DbSet<SpellRitual> SpellRituals { get; set; }
public virtual DbSet<Training> Trainings { get; set; }
public virtual DbSet<Trait> 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<EntityType>("entity_type")
.MapEnum<EntityRarity>("entity_rarity")
.MapEnum<AliasType>("alias_type")
.MapEnum<TraitType>("trait_type")
.MapEnum<ActionType>("action_type")
.MapEnum<ActionCategory>("action_category")
.MapEnum<Size>("enum_size")
.MapEnum<AncestryVision>("ancestry_vision")
.MapEnum<ClassProgressionType>("class_progression_type")
.MapEnum<ConditionGroup>("condition_group")
.MapEnum<DeityCategory>("deity_category")
.MapEnum<DeityFonts>("deity_fonts")
.MapEnum<DeitySanctification>("deity_sanctification")
.MapEnum<FeatActionType>("feat_action_type")
.MapEnum<FeatCategory>("feat_category")
.MapEnum<SpellAreaType>("spell_area_type")
.MapEnum<SpellDamageCategory>("spell_damage_category")
.MapEnum<SpellDamageKinds>("spell_damage_kinds")
.MapEnum<AttributeValues>()
.MapEnum<TrainingStage>()
;
}
);
}
}
@@ -0,0 +1,323 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
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
{
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<EntityType>()
.HasPostgresEnum<EntityRarity>()
.HasPostgresEnum<AliasType>()
.HasPostgresEnum<TraitType>()
.HasPostgresEnum<ActionType>()
.HasPostgresEnum<ActionCategory>()
.HasPostgresEnum<Size>()
.HasPostgresEnum<AncestryVision>()
.HasPostgresEnum<ClassProgressionType>()
.HasPostgresEnum<ConditionGroup>()
.HasPostgresEnum<DeityCategory>()
.HasPostgresEnum<DeityFonts>()
.HasPostgresEnum<DeitySanctification>()
.HasPostgresEnum<FeatActionType>()
.HasPostgresEnum<FeatCategory>()
.HasPostgresEnum<SpellAreaType>()
.HasPostgresEnum<SpellDamageCategory>()
.HasPostgresEnum<SpellDamageKinds>()
.HasPostgresEnum<AttributeValues>()
.HasPostgresEnum<TrainingStage>()
;
}
private void DefineBase(ModelBuilder modelBuilder)
{
modelBuilder.Entity<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<EntityAlias>(entity => { });
// Source
modelBuilder.Entity<Source>(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<EntitySource>(entity => { });
// External
modelBuilder.Entity<ExternalTarget>(entity =>
{
entity.HasMany(t => t.EntityExternals).WithOne(e => e.Target)
.HasForeignKey(e => e.TargetId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<EntityExternal>(entity => { });
// Keywords
modelBuilder.Entity<Keyword>(entity =>
{
entity.HasMany(e => e.Aliases).WithOne(e => e.Keyword)
.HasForeignKey(e => e.KeywordId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<KeywordAlias>(entity => { });
}
private void DefineCommon(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Frequency>(entity => { });
modelBuilder.Entity<Language>(entity => { });
modelBuilder.Entity<Training>(entity => { });
modelBuilder.Entity<Trait>(entity => { });
}
private void BindEntity<T>(EntityTypeBuilder<T> entity) where T : class, IEntity
{
entity.HasOne(entity => entity.Entity)
.WithOne()
.HasForeignKey<T>(entity => entity.Id)
.IsRequired();
}
private void DefineStructure(ModelBuilder modelBuilder)
{
// Action
modelBuilder.Entity<Structure.Action>(entity =>
{
BindEntity(entity);
});
// Ancestry
modelBuilder.Entity<Ancestry>(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<AncestryBoost>(entity => { });
modelBuilder.Entity<AncestryItem>(entity =>
{
entity.HasOne(d => d.Item).WithMany()
.HasForeignKey(d => d.ItemId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<AncestryLanguage>(entity =>
{
entity.HasOne(d => d.Language).WithMany()
.HasForeignKey(d => d.LanguageId)
.OnDelete(DeleteBehavior.Cascade);
});
// Background
modelBuilder.Entity<Background>(entity =>
{
BindEntity(entity);
});
modelBuilder.Entity<BackgroundBoost>(entity =>
{
entity.HasOne(d => d.Background).WithMany(p => p.BackgroundBoosts)
.HasForeignKey(d => d.BackgroundId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<BackgroundItem>(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<BackgroundTraining>(entity =>
{
entity.HasOne(d => d.Background).WithMany(p => p.BackgroundSkills)
.HasForeignKey(d => d.BackgroundId)
.OnDelete(DeleteBehavior.Cascade);
});
// Class
modelBuilder.Entity<Class>(entity =>
{
BindEntity(entity);
});
modelBuilder.Entity<ClassKeyAbility>(entity =>
{
entity.HasOne(d => d.Class).WithMany(p => p.ClassKeyAbilities)
.HasForeignKey(d => d.ClassId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<ClassProgression>(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<ClassTraining>(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<Condition>(entity =>
{
BindEntity(entity);
});
// Deity
modelBuilder.Entity<Deity>(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<DeityAttribute>(entity => { });
modelBuilder.Entity<DeityDomain>(entity => { });
modelBuilder.Entity<DeitySpell>(entity =>
{
entity.HasOne(d => d.Spell).WithMany()
.HasForeignKey(d => d.SpellId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<DeityWeapon>(entity => { });
// Feat
modelBuilder.Entity<Feat>(entity =>
{
BindEntity(entity);
entity.HasMany(e => e.FeatPrerequisites).WithOne(e => e.Feat)
.HasForeignKey(e => e.FeatId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<FeatPrerequisite>(entity => { });
// Heritage
modelBuilder.Entity<Heritage>(entity =>
{
BindEntity(entity);
entity.HasOne(d => d.Ancestry).WithMany(p => p.Heritages)
.HasForeignKey(d => d.AncestryId)
.OnDelete(DeleteBehavior.Cascade);
});
// Spell
modelBuilder.Entity<Spell>(entity =>
{
BindEntity(entity);
entity.HasOne(e => e.SpellArea).WithOne(e => e.Spell)
.HasForeignKey<SpellArea>(e => e.SpellId)
.OnDelete(DeleteBehavior.Cascade)
.IsRequired(false);
entity.HasOne(e => e.SpellRitual).WithOne(e => e.Spell)
.HasForeignKey<SpellArea>(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<SpellArea>(entity => { });
modelBuilder.Entity<SpellDamage>(entity => { });
modelBuilder.Entity<SpellDefense>(entity => { });
modelBuilder.Entity<SpellRitual>(entity => { });
}
}
-12
View File
@@ -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!;
}
-20
View File
@@ -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!;
}
-16
View File
@@ -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!;
}
-14
View File
@@ -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!;
}
+12 -6
View File
@@ -1,25 +1,31 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Enum;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -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<AncestryBoost> AncestryBoosts { get; set; } = [];
public virtual ICollection<AncestryItem> AncestryItems { get; set; } = [];
public virtual ICollection<AncestryLanguage> AncestryLanguages { get; set; } = [];
public virtual ICollection<Heritage> Heritages { get; set; } = [];
}
@@ -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!;
}
@@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore;
using Pf2eDataScrapper.Model.Base;
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!;
}
@@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore;
using Pf2eDataScrapper.Model.Common;
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!;
}
@@ -0,0 +1,22 @@
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Structure.BackgroundRelation;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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<BackgroundBoost> BackgroundBoosts { get; set; } = [];
public virtual ICollection<BackgroundItem> BackgroundItems { get; set; } = [];
public virtual ICollection<BackgroundTraining> BackgroundSkills { get; set; } = [];
}
@@ -0,0 +1,21 @@
using Pf2eDataScrapper.Model.Enum;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore;
using Pf2eDataScrapper.Model.Base;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,27 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Enum;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -1,24 +1,34 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Structure.ClassRelation;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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<ClassKeyAbility> ClassKeyAbilities { get; set; } = new List<ClassKeyAbility>();
public virtual ICollection<ClassKeyAbility> ClassKeyAbilities { get; set; } = [];
public virtual ICollection<ClassProgression> ClassProgressions { get; set; } = new List<ClassProgression>();
public virtual ICollection<ClassProgression> ClassProgressions { get; set; } = [];
public virtual ICollection<ClassTraining> ClassTrainings { get; set; } = new List<ClassTraining>();
public virtual ICollection<ClassTraining> ClassTrainings { get; set; } = [];
}
@@ -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!;
}
@@ -0,0 +1,29 @@
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Enum;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Pf2eDataScrapper.Model.Structure.ClassRelation;
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; }
}
@@ -0,0 +1,30 @@
using Pf2eDataScrapper.Model.Common;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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; }
}
@@ -1,22 +1,22 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Enum;
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; }
}
@@ -1,15 +1,31 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Enum;
using Pf2eDataScrapper.Model.Structure.DeityRelation;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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<DeityAttribute> DeityAttributes { get; set; } = new List<DeityAttribute>();
@@ -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!;
}
@@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,25 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,21 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
+47
View File
@@ -0,0 +1,47 @@
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Enum;
using Pf2eDataScrapper.Model.Structure.FeatRelation;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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<FeatPrerequisite> FeatPrerequisites { get; set; } = [];
}
@@ -0,0 +1,21 @@
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!;
}
@@ -0,0 +1,20 @@
using Pf2eDataScrapper.Model.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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; }
}
@@ -1,40 +1,59 @@
using Pf2eDataScrapper.Model.Common;
using Pf2eDataScrapper.Model.Base;
using Pf2eDataScrapper.Model.Structure.SpellRelation;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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<DeitySpell> DeitySpells { get; set; } = new List<DeitySpell>();
public virtual SpellArea? SpellArea { get; set; }
public virtual SpellRitual? SpellRitual { get; set; }
public virtual ICollection<SpellDamage> SpellDamages { get; set; } = new List<SpellDamage>();
public virtual ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
public virtual SpellRitual? SpellRitual { get; set; }
}
@@ -0,0 +1,25 @@
using Pf2eDataScrapper.Model.Enum;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,43 @@
using Pf2eDataScrapper.Model.Enum;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,27 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
@@ -0,0 +1,25 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
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!;
}
-12
View File
@@ -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<ClassTraining> ClassTrainings { get; set; } = [];
public virtual ICollection<Deity> Deities { get; set; } = [];
}
+1
View File
@@ -10,6 +10,7 @@
<ItemGroup>
<PackageReference Include="dotenv.net" Version="3.2.1" />
<PackageReference Include="EFCore.NamingConventions" Version="9.0.0" />
<PackageReference Include="Goblinfactory.ProgressBar" Version="1.0.0" />
<PackageReference Include="linq2db" Version="5.4.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.4" />
File diff suppressed because it is too large Load Diff
-1
View File
@@ -1,5 +1,4 @@
using Pf2eDataScrapper;
using Pf2eDataScrapper.Importers.Implementations.Aonprd;
using Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry;
EnvSettings.Load();