Compare commits
2
Commits
bf6d600c4b
...
0c95c6d68b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0c95c6d68b | ||
|
|
d095001caf |
+2
-1
@@ -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;
|
||||
|
||||
@@ -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; } = [];
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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>();
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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; } = [];
|
||||
}
|
||||
+8
-11
@@ -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; } = [];
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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; } = [];
|
||||
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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>();
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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,4 +1,4 @@
|
||||
using Pf2eDataScrapper.Model.Common;
|
||||
using Pf2eDataScrapper.Model.Base;
|
||||
|
||||
namespace Pf2eDataScrapper.Model;
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
namespace Pf2eDataScrapper.Model;
|
||||
|
||||
public partial class Keyword
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string Slug { get; set; } = 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!;
|
||||
}
|
||||
@@ -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>();
|
||||
}
|
||||
@@ -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 => { });
|
||||
}
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -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; } = [];
|
||||
}
|
||||
@@ -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,5 +1,4 @@
|
||||
using Pf2eDataScrapper;
|
||||
using Pf2eDataScrapper.Importers.Implementations.Aonprd;
|
||||
using Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry;
|
||||
|
||||
EnvSettings.Load();
|
||||
|
||||
Reference in New Issue
Block a user