diff --git a/DatabaseViewer/App.config b/DatabaseViewer/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/DatabaseViewer/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DatabaseViewer/DatabaseViewer.csproj b/DatabaseViewer/DatabaseViewer.csproj
new file mode 100644
index 0000000..f1d9613
--- /dev/null
+++ b/DatabaseViewer/DatabaseViewer.csproj
@@ -0,0 +1,89 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {9590B32F-4C69-48FA-AD0F-E482FB4728AB}
+ WinExe
+ DatabaseViewer
+ DatabaseViewer
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ MainViewerForm.cs
+
+
+
+
+ MainViewerForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+ {ff82896a-92ca-4c63-8fdc-959ecc513773}
+ Pf2eDataScrapper
+
+
+
+
\ No newline at end of file
diff --git a/DatabaseViewer/MainViewerForm.Designer.cs b/DatabaseViewer/MainViewerForm.Designer.cs
new file mode 100644
index 0000000..1baf642
--- /dev/null
+++ b/DatabaseViewer/MainViewerForm.Designer.cs
@@ -0,0 +1,140 @@
+namespace DatabaseViewer
+{
+ partial class MainViewerForm
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором форм Windows
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.RootSplitContainer = new System.Windows.Forms.SplitContainer();
+ this.InnerSplitContainer = new System.Windows.Forms.SplitContainer();
+ this.EntityDataGridView = new System.Windows.Forms.DataGridView();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.TypeListBox = new System.Windows.Forms.ListBox();
+ ((System.ComponentModel.ISupportInitialize)(this.RootSplitContainer)).BeginInit();
+ this.RootSplitContainer.Panel1.SuspendLayout();
+ this.RootSplitContainer.Panel2.SuspendLayout();
+ this.RootSplitContainer.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.InnerSplitContainer)).BeginInit();
+ this.InnerSplitContainer.Panel1.SuspendLayout();
+ this.InnerSplitContainer.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.EntityDataGridView)).BeginInit();
+ this.SuspendLayout();
+ //
+ // RootSplitContainer
+ //
+ this.RootSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.RootSplitContainer.Location = new System.Drawing.Point(0, 24);
+ this.RootSplitContainer.Name = "RootSplitContainer";
+ //
+ // RootSplitContainer.Panel1
+ //
+ this.RootSplitContainer.Panel1.Controls.Add(this.TypeListBox);
+ this.RootSplitContainer.Panel1MinSize = 200;
+ //
+ // RootSplitContainer.Panel2
+ //
+ this.RootSplitContainer.Panel2.Controls.Add(this.InnerSplitContainer);
+ this.RootSplitContainer.Panel2MinSize = 400;
+ this.RootSplitContainer.Size = new System.Drawing.Size(984, 687);
+ this.RootSplitContainer.SplitterDistance = 200;
+ this.RootSplitContainer.TabIndex = 0;
+ //
+ // InnerSplitContainer
+ //
+ this.InnerSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.InnerSplitContainer.Location = new System.Drawing.Point(0, 0);
+ this.InnerSplitContainer.Name = "InnerSplitContainer";
+ this.InnerSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ //
+ // InnerSplitContainer.Panel1
+ //
+ this.InnerSplitContainer.Panel1.Controls.Add(this.EntityDataGridView);
+ this.InnerSplitContainer.Size = new System.Drawing.Size(780, 687);
+ this.InnerSplitContainer.SplitterDistance = 328;
+ this.InnerSplitContainer.TabIndex = 0;
+ //
+ // EntityDataGridView
+ //
+ this.EntityDataGridView.AllowUserToAddRows = false;
+ this.EntityDataGridView.AllowUserToDeleteRows = false;
+ this.EntityDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.EntityDataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.EntityDataGridView.Location = new System.Drawing.Point(0, 0);
+ this.EntityDataGridView.Name = "EntityDataGridView";
+ this.EntityDataGridView.ReadOnly = true;
+ this.EntityDataGridView.Size = new System.Drawing.Size(780, 328);
+ this.EntityDataGridView.TabIndex = 0;
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Size = new System.Drawing.Size(984, 24);
+ this.menuStrip1.TabIndex = 1;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // TypeListBox
+ //
+ this.TypeListBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.TypeListBox.FormattingEnabled = true;
+ this.TypeListBox.Location = new System.Drawing.Point(0, 0);
+ this.TypeListBox.Name = "TypeListBox";
+ this.TypeListBox.Size = new System.Drawing.Size(200, 687);
+ this.TypeListBox.TabIndex = 0;
+ //
+ // MainViewerForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(984, 711);
+ this.Controls.Add(this.RootSplitContainer);
+ this.Controls.Add(this.menuStrip1);
+ this.MainMenuStrip = this.menuStrip1;
+ this.Name = "MainViewerForm";
+ this.Text = "Form1";
+ this.RootSplitContainer.Panel1.ResumeLayout(false);
+ this.RootSplitContainer.Panel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.RootSplitContainer)).EndInit();
+ this.RootSplitContainer.ResumeLayout(false);
+ this.InnerSplitContainer.Panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.InnerSplitContainer)).EndInit();
+ this.InnerSplitContainer.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.EntityDataGridView)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.SplitContainer RootSplitContainer;
+ private System.Windows.Forms.SplitContainer InnerSplitContainer;
+ private System.Windows.Forms.DataGridView EntityDataGridView;
+ private System.Windows.Forms.MenuStrip menuStrip1;
+ private System.Windows.Forms.ListBox TypeListBox;
+ }
+}
+
diff --git a/DatabaseViewer/MainViewerForm.cs b/DatabaseViewer/MainViewerForm.cs
new file mode 100644
index 0000000..8793c7e
--- /dev/null
+++ b/DatabaseViewer/MainViewerForm.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Pf2eDataScrapper.Model;
+
+namespace DatabaseViewer
+{
+ public partial class MainViewerForm : Form
+ {
+ public Pf2eDbContext Context;
+
+ public MainViewerForm()
+ {
+ InitializeComponent();
+
+
+ }
+ }
+}
diff --git a/DatabaseViewer/MainViewerForm.resx b/DatabaseViewer/MainViewerForm.resx
new file mode 100644
index 0000000..d5494e3
--- /dev/null
+++ b/DatabaseViewer/MainViewerForm.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/DatabaseViewer/Program.cs b/DatabaseViewer/Program.cs
new file mode 100644
index 0000000..5352fa5
--- /dev/null
+++ b/DatabaseViewer/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace DatabaseViewer
+{
+ internal static class Program
+ {
+ ///
+ /// Главная точка входа для приложения.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainViewerForm());
+ }
+ }
+}
diff --git a/DatabaseViewer/Properties/AssemblyInfo.cs b/DatabaseViewer/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..db090ef
--- /dev/null
+++ b/DatabaseViewer/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Общие сведения об этой сборке предоставляются следующим набором
+// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
+// связанных со сборкой.
+[assembly: AssemblyTitle("DatabaseViewer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DatabaseViewer")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
+// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
+// COM, следует установить атрибут ComVisible в TRUE для этого типа.
+[assembly: ComVisible(false)]
+
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
+[assembly: Guid("9590b32f-4c69-48fa-ad0f-e482fb4728ab")]
+
+// Сведения о версии сборки состоят из указанных ниже четырех значений:
+//
+// Основной номер версии
+// Дополнительный номер версии
+// Номер сборки
+// Редакция
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DatabaseViewer/Properties/Resources.Designer.cs b/DatabaseViewer/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..ebd25de
--- /dev/null
+++ b/DatabaseViewer/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программным средством.
+// Версия среды выполнения: 4.0.30319.42000
+//
+// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если
+// код создан повторно.
+//
+//------------------------------------------------------------------------------
+
+namespace DatabaseViewer.Properties
+{
+
+
+ ///
+ /// Класс ресурсов со строгим типом для поиска локализованных строк и пр.
+ ///
+ // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder
+ // класс с помощью таких средств, как ResGen или Visual Studio.
+ // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen
+ // с параметром /str или заново постройте свой VS-проект.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DatabaseViewer.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Переопределяет свойство CurrentUICulture текущего потока для всех
+ /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/DatabaseViewer/Properties/Resources.resx b/DatabaseViewer/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/DatabaseViewer/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/DatabaseViewer/Properties/Settings.Designer.cs b/DatabaseViewer/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..7cbd24e
--- /dev/null
+++ b/DatabaseViewer/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace DatabaseViewer.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings) (global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/DatabaseViewer/Properties/Settings.settings b/DatabaseViewer/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/DatabaseViewer/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Pf2eDataScrapper.sln b/Pf2eDataScrapper.sln
index 13b25e5..cb8e73e 100644
--- a/Pf2eDataScrapper.sln
+++ b/Pf2eDataScrapper.sln
@@ -1,9 +1,12 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
-VisualStudioVersion = 17.13.35919.96 d17.13
+VisualStudioVersion = 17.13.35919.96
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pf2eDataScrapper", "Pf2eDataScrapper\Pf2eDataScrapper.csproj", "{FF82896A-92CA-4C63-8FDC-959ECC513773}"
+ ProjectSection(ProjectDependencies) = postProject
+ {D32B7787-D912-4B21-B341-7C1F42F62D36} = {D32B7787-D912-4B21-B341-7C1F42F62D36}
+ EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Элементы решения", "Элементы решения", "{754FC069-D67B-A9D7-50A1-8D1CA196D8F1}"
ProjectSection(SolutionItems) = preProject
@@ -12,6 +15,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Элементы решен
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "output", "output", "{36D591C7-65C7-A0D1-1CBC-10CDE441BDC8}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pf2eModel", "Pf2eModel\Pf2eModel.csproj", "{D32B7787-D912-4B21-B341-7C1F42F62D36}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -22,6 +27,10 @@ Global
{FF82896A-92CA-4C63-8FDC-959ECC513773}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF82896A-92CA-4C63-8FDC-959ECC513773}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF82896A-92CA-4C63-8FDC-959ECC513773}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D32B7787-D912-4B21-B341-7C1F42F62D36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D32B7787-D912-4B21-B341-7C1F42F62D36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D32B7787-D912-4B21-B341-7C1F42F62D36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D32B7787-D912-4B21-B341-7C1F42F62D36}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Pf2eDataScrapper/Importers/DatabaseHelper.cs b/Pf2eDataScrapper/Importers/DatabaseHelper.cs
index 1b950c2..f6c5208 100644
--- a/Pf2eDataScrapper/Importers/DatabaseHelper.cs
+++ b/Pf2eDataScrapper/Importers/DatabaseHelper.cs
@@ -1,4 +1,4 @@
-using Pf2eDataScrapper.Model;
+using Pf2eModel.Model;
using Slugify;
namespace Pf2eDataScrapper.Importers;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs
index a54b95b..0558e90 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdReference.cs
@@ -1,5 +1,4 @@
-
-namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
internal class AonprdReference(string id, string file)
{
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs
index 64c8997..7be2b55 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AbstractProcessor.cs
@@ -1,11 +1,11 @@
using LinqToDB;
using Newtonsoft.Json.Linq;
-using Pf2eDataScrapper.Model;
-using Pf2eDataScrapper.Model.Base;
-using Pf2eDataScrapper.Model.Base.Source;
-using Pf2eDataScrapper.Model.Base.Targets;
-using Pf2eDataScrapper.Model.Enum;
-using Pf2eDataScrapper.Model.Structure;
+using Pf2eModel.Model;
+using Pf2eModel.Model.Base;
+using Pf2eModel.Model.Base.Source;
+using Pf2eModel.Model.Base.Targets;
+using Pf2eModel.Model.Enum;
+using Pf2eModel.Model.Structure;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumResolver.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumResolver.cs
new file mode 100644
index 0000000..bb9bedf
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/AonprdEnumResolver.cs
@@ -0,0 +1,69 @@
+using Pf2eDataScrapper.Importers.Repositories;
+using Pf2eModel.Model.Enum;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using static LinqToDB.Reflection.Methods.LinqToDB.Insert;
+
+namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
+public static class AonprdEnumResolver
+{
+ private static readonly ICollection Solvers = [
+ new Solver(new() {
+ { "Single Action", ActionType.SingleAction },
+ { "Reaction or One Action", ActionType.SingleAction },
+ { "Free Action or One Action", ActionType.SingleAction },
+ { "Two Actions", ActionType.TwoActions },
+ { "Three Actions", ActionType.ThreeActions },
+ { "Single Action to Three Actions", ActionType.SingleToThreeActions },
+ { "Single Action or more Actions", ActionType.SingleToThreeActions },
+ { "Single Action or Two Actions", ActionType.SingleToTwoActions },
+ { "Single Action to Two Actions", ActionType.SingleToTwoActions },
+ }),
+
+ new Solver(new() {
+ { "Rulebooks", SourceCategory.Rulebooks },
+ { "Adventure Paths", SourceCategory.AdventurePaths },
+ { "Lost Omens", SourceCategory.LostOmens },
+ { "Adventures", SourceCategory.Adventures },
+ { "Comics", SourceCategory.Comics },
+ { "Blog Posts", SourceCategory.BlogPosts },
+ { "Society", SourceCategory.Society },
+ }),
+ ];
+
+ public static T ResolveEventArgs(string value) where T : struct, Enum
+ {
+ Type type = typeof(T);
+
+ Solver? solver = Solvers.FirstOrDefault(s => s.Type == type);
+
+ if (solver is null || solver.GetType() != typeof(Solver))
+ {
+ throw new EnumResolverEnumUnknownException(type);
+ }
+
+ Solver tSolver = (Solver) solver;
+
+ return tSolver.Data.TryGetValue(value, out var data) ? data : throw new EnumResolverValueUnknownException(type, value);
+ }
+
+ private abstract class Solver
+ {
+ public abstract Type Type { get; }
+ }
+
+ private class Solver(Dictionary data) : Solver where T : struct, Enum
+ {
+ public override Type Type { get; } = typeof(T);
+ public Dictionary Data { get; } = data;
+ }
+
+ public class EnumResolverEnumUnknownException(Type t) : Exception($"Can't resolve type '{t.FullName}': Solver not defined");
+
+ public class EnumResolverValueUnknownException(Type t, string value) : Exception($"Can't resolve type '{t.FullName}': Value '{value}' is not matched");
+
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs
index 160e487..a8854cf 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/ActionProcessor.cs
@@ -1,5 +1,5 @@
using Newtonsoft.Json.Linq;
-using Pf2eDataScrapper.Model.Enum;
+using Pf2eModel.Model.Enum;
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
@@ -8,7 +8,7 @@ internal class ActionProcessor(ProcessorInput input) : AbstractProcessor(input)
{
public override EntityType Type => EntityType.Action;
- public override Model.Structure.Action Object { get; } = new();
+ public override Pf2eModel.Model.Structure.Action Object { get; } = new();
public override void Process()
{
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs
index 47433fc..a94ac09 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/DataBuilder/Processors/TraitProcessor.cs
@@ -1,5 +1,5 @@
-using Pf2eDataScrapper.Model.Enum;
-using Pf2eDataScrapper.Model.Structure;
+using Pf2eModel.Model.Enum;
+using Pf2eModel.Model.Structure;
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs
index 9a25466..fc5b23f 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/AbstractProcessor.cs
@@ -1,11 +1,11 @@
using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
-using Pf2eDataScrapper.Model;
-using Pf2eDataScrapper.Model.Base;
-using Pf2eDataScrapper.Model.Base.Source;
-using Pf2eDataScrapper.Model.Base.Targets;
-using Pf2eDataScrapper.Model.Enum;
-using Pf2eDataScrapper.Model.Structure;
+using Pf2eModel.Model;
+using Pf2eModel.Model.Base;
+using Pf2eModel.Model.Base.Source;
+using Pf2eModel.Model.Base.Targets;
+using Pf2eModel.Model.Enum;
+using Pf2eModel.Model.Structure;
using System.Security.Cryptography;
using System.Text;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs
index c7ad38c..3b42d95 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ActionProcessor.cs
@@ -1,5 +1,5 @@
using Newtonsoft.Json.Linq;
-using Pf2eDataScrapper.Model.Enum;
+using Pf2eModel.Model.Enum;
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder.Processors;
@@ -8,17 +8,17 @@ internal class ActionProcessor(JObject input) : AbstractProcessor(input)
{
public override EntityType Type => EntityType.Action;
- public override Model.Structure.Action Object { get; } = new();
+ public override Pf2eModel.Model.Structure.Action Object { get; } = new();
public override void Process()
{
base.Process();
-
+ /*
Object.Type = EnumRequired("system.actionType.value");
- // Object.Category = EnumOptional("system.category", ActionCategory.Unknown);
+ Object.Category = EnumOptional("system.category", ActionCategory.Unknown);
Object.Actions = GetOptional("system.actions.value");
- // Object.DeathNote = GetOptional("system.deathNote");
-
+ Object.DeathNote = GetOptional("system.deathNote");
+ */
JObject extra = new()
{
{ "selfEffect", Input.SelectToken("system.selfEffect") }
diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ConditionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ConditionProcessor.cs
index a185340..33e7434 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ConditionProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/DataBuilder/Processors/ConditionProcessor.cs
@@ -1,6 +1,6 @@
using Newtonsoft.Json.Linq;
-using Pf2eDataScrapper.Model.Enum;
-using Pf2eDataScrapper.Model.Structure;
+using Pf2eModel.Model.Enum;
+using Pf2eModel.Model.Structure;
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder.Processors;
diff --git a/Pf2eDataScrapper/Migrations/20250418062802_1.Designer.cs b/Pf2eDataScrapper/Migrations/20250418062802_1.Designer.cs
deleted file mode 100644
index 5c3eea7..0000000
--- a/Pf2eDataScrapper/Migrations/20250418062802_1.Designer.cs
+++ /dev/null
@@ -1,2054 +0,0 @@
-//
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using Pf2eDataScrapper.Model;
-using Pf2eDataScrapper.Model.Enum;
-
-#nullable disable
-
-namespace Pf2eDataScrapper.Migrations
-{
- [DbContext(typeof(Pf2eDbContext))]
- [Migration("20250418062802_1")]
- partial class _1
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "9.0.4")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_type", new[] { "none", "1_action", "2_actions", "3_actions", "1-3_actions", "1-2_actions" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "darkvision" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "any", "str", "dex", "con", "int", "wis", "cha" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "entity", "ancestry_feat", "class_feat", "general_feat", "skill_feat", "skill_increase" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "unknown", "senses", "abilities", "death", "attitudes", "detection" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "deity", "pantheon", "covenant", "philosophy" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "none", "heal", "harm", "any" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "holy", "unholy", "any" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestryfeature", "classfeature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign_feature" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "med", "tiny" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
- NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "tradition" });
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("DeityTraining", b =>
- {
- b.Property("DeityId")
- .HasColumnType("integer")
- .HasColumnName("deity_id");
-
- b.Property("SkillsId")
- .HasColumnType("integer")
- .HasColumnName("skills_id");
-
- b.HasKey("DeityId", "SkillsId")
- .HasName("pk_deity_training");
-
- b.HasIndex("SkillsId")
- .HasDatabaseName("ix_deity_training_skills_id");
-
- b.ToTable("deity_training", (string)null);
- });
-
- modelBuilder.Entity("EntityKeyword", b =>
- {
- b.Property("EntitiesId")
- .HasColumnType("integer")
- .HasColumnName("entities_id");
-
- b.Property("KeywordsId")
- .HasColumnType("integer")
- .HasColumnName("keywords_id");
-
- b.HasKey("EntitiesId", "KeywordsId")
- .HasName("pk_entity_keyword");
-
- b.HasIndex("KeywordsId")
- .HasDatabaseName("ix_entity_keyword_keywords_id");
-
- b.ToTable("entity_keyword", (string)null);
- });
-
- modelBuilder.Entity("EntityTrait", b =>
- {
- b.Property("EntitiesId")
- .HasColumnType("integer")
- .HasColumnName("entities_id");
-
- b.Property("TraitsId")
- .HasColumnType("integer")
- .HasColumnName("traits_id");
-
- b.HasKey("EntitiesId", "TraitsId")
- .HasName("pk_entity_trait");
-
- b.HasIndex("TraitsId")
- .HasDatabaseName("ix_entity_trait_traits_id");
-
- b.ToTable("entity_trait", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text")
- .HasColumnName("description")
- .HasColumnOrder(6)
- .HasComment("Текстовое описание объекта");
-
- b.Property("Img")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("img")
- .HasColumnOrder(5)
- .HasComment("Изображение объекта");
-
- b.Property("IsChecked")
- .HasColumnType("boolean")
- .HasColumnName("is_checked")
- .HasColumnOrder(9)
- .HasComment("Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи");
-
- b.Property("IsTranslated")
- .HasColumnType("boolean")
- .HasColumnName("is_translated")
- .HasColumnOrder(8)
- .HasComment("Флаг, указывающий, что у объекта существует перевод");
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(2)
- .HasComment("Отображаемое имя");
-
- b.Property("Rarity")
- .HasColumnType("entity_rarity")
- .HasColumnName("rarity")
- .HasColumnOrder(7);
-
- b.Property("Slug")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("slug")
- .HasColumnOrder(4)
- .HasComment("Часть имени в URL");
-
- b.Property("Type")
- .HasColumnType("entity_type")
- .HasColumnName("type")
- .HasColumnOrder(3)
- .HasComment("Тип объекта");
-
- b.HasKey("Id")
- .HasName("pk_entities");
-
- b.ToTable("entities", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b =>
- {
- b.Property("EntityId")
- .HasColumnType("integer")
- .HasColumnName("entity_id")
- .HasColumnOrder(1);
-
- b.Property("Type")
- .HasColumnType("alias_type")
- .HasColumnName("type")
- .HasColumnOrder(2);
-
- b.Property("Alias")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("alias")
- .HasColumnOrder(3);
-
- b.HasKey("EntityId", "Type")
- .HasName("pk_entity_aliases");
-
- b.ToTable("entity_aliases", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Slug")
- .IsRequired()
- .HasColumnType("text")
- .HasColumnName("slug")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_keywords");
-
- b.ToTable("keywords", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("KeywordId")
- .HasColumnType("integer")
- .HasColumnName("keyword_id")
- .HasColumnOrder(2);
-
- b.Property("Value")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("value")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_keyword_aliases");
-
- b.HasIndex("KeywordId")
- .HasDatabaseName("ix_keyword_aliases_keyword_id");
-
- b.ToTable("keyword_aliases", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b =>
- {
- b.Property("EntityId")
- .HasColumnType("integer")
- .HasColumnName("entity_id")
- .HasColumnOrder(1);
-
- b.Property("SourceId")
- .HasColumnType("integer")
- .HasColumnName("source_id")
- .HasColumnOrder(2);
-
- b.Property("IsRemaster")
- .HasColumnType("boolean")
- .HasColumnName("is_remaster")
- .HasColumnOrder(4)
- .HasComment("Флаг, указывающий, что объект является частью ремастера");
-
- b.Property("Suffix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("suffix")
- .HasColumnOrder(3)
- .HasComment("Номер страницы, эррата и т.д.");
-
- b.HasKey("EntityId", "SourceId")
- .HasName("pk_entity_sources");
-
- b.HasIndex("SourceId")
- .HasDatabaseName("ix_entity_sources_source_id");
-
- b.ToTable("entity_sources", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Category")
- .HasColumnType("source_category")
- .HasColumnName("category")
- .HasColumnOrder(3);
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(2);
-
- b.Property("ReleaseDate")
- .HasColumnType("date")
- .HasColumnName("release_date")
- .HasColumnOrder(4);
-
- b.HasKey("Id")
- .HasName("pk_sources");
-
- b.ToTable("sources", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b =>
- {
- b.Property("EntityId")
- .HasColumnType("integer")
- .HasColumnName("entity_id")
- .HasColumnOrder(0);
-
- b.Property("TargetId")
- .HasColumnType("integer")
- .HasColumnName("target_id")
- .HasColumnOrder(1);
-
- b.Property("Md5")
- .IsRequired()
- .HasMaxLength(32)
- .HasColumnType("character varying(32)")
- .HasColumnName("md5")
- .HasColumnOrder(3)
- .HasComment("Контроль версии объекта");
-
- b.Property("Suffix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("suffix")
- .HasColumnOrder(2)
- .HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта");
-
- b.HasKey("EntityId", "TargetId")
- .HasName("pk_entity_externals");
-
- b.HasIndex("TargetId")
- .HasDatabaseName("ix_entity_externals_target_id");
-
- b.ToTable("entity_externals", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Icon")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("icon")
- .HasColumnOrder(3);
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(2);
-
- b.Property("Prefix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("prefix")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_external_targets");
-
- b.ToTable("external_targets", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Common.Frequency", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Max")
- .HasColumnType("integer")
- .HasColumnName("max")
- .HasColumnOrder(2);
-
- b.Property("Per")
- .HasColumnType("integer")
- .HasColumnName("per")
- .HasColumnOrder(3);
-
- b.Property("Value")
- .HasColumnType("integer")
- .HasColumnName("value")
- .HasColumnOrder(4);
-
- b.HasKey("Id")
- .HasName("pk_frequencies");
-
- b.ToTable("frequencies", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Common.Language", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(2);
-
- b.Property("Rarity")
- .HasColumnType("entity_rarity")
- .HasColumnName("rarity")
- .HasColumnOrder(4);
-
- b.Property("Slug")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("slug")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_languages");
-
- b.ToTable("languages", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Common.Training", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Key")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("key")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_trainings");
-
- b.ToTable("trainings", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Actions")
- .HasColumnType("integer")
- .HasColumnName("actions")
- .HasColumnOrder(3);
-
- b.Property("Extra")
- .HasColumnType("text")
- .HasColumnName("extra")
- .HasColumnOrder(6);
-
- b.Property("IsFreeAction")
- .HasColumnType("boolean")
- .HasColumnName("is_free_action")
- .HasColumnOrder(6);
-
- b.Property("IsPassive")
- .HasColumnType("boolean")
- .HasColumnName("is_passive")
- .HasColumnOrder(6);
-
- b.Property("IsReaction")
- .HasColumnType("boolean")
- .HasColumnName("is_reaction")
- .HasColumnOrder(5);
-
- b.Property("MaxActions")
- .HasColumnType("integer")
- .HasColumnName("max_actions")
- .HasColumnOrder(4);
-
- b.Property("Type")
- .HasColumnType("action_type")
- .HasColumnName("type")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_actions");
-
- b.ToTable("actions", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Hp")
- .HasColumnType("integer")
- .HasColumnName("hp")
- .HasColumnOrder(3);
-
- b.Property("Reach")
- .HasColumnType("integer")
- .HasColumnName("reach")
- .HasColumnOrder(4);
-
- b.Property("Size")
- .HasColumnType("size")
- .HasColumnName("size")
- .HasColumnOrder(2);
-
- b.Property("Speed")
- .HasColumnType("integer")
- .HasColumnName("speed")
- .HasColumnOrder(5);
-
- b.Property("Vision")
- .HasColumnType("ancestry_vision")
- .HasColumnName("vision")
- .HasColumnOrder(6);
-
- b.HasKey("Id")
- .HasName("pk_ancestries");
-
- b.ToTable("ancestries", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AncestryId")
- .HasColumnType("integer")
- .HasColumnName("ancestry_id")
- .HasColumnOrder(2);
-
- b.Property("Boost")
- .HasColumnType("boolean")
- .HasColumnName("boost")
- .HasColumnOrder(3);
-
- b.Property("Value")
- .HasColumnType("attribute_values")
- .HasColumnName("value")
- .HasColumnOrder(4);
-
- b.HasKey("Id")
- .HasName("pk_ancestry_boosts");
-
- b.HasIndex("AncestryId")
- .HasDatabaseName("ix_ancestry_boosts_ancestry_id");
-
- b.ToTable("ancestry_boosts", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b =>
- {
- b.Property("AncestryId")
- .HasColumnType("integer")
- .HasColumnName("ancestry_id")
- .HasColumnOrder(1);
-
- b.Property("ItemId")
- .HasColumnType("integer")
- .HasColumnName("item_id")
- .HasColumnOrder(2);
-
- b.Property("Level")
- .HasColumnType("integer")
- .HasColumnName("level")
- .HasColumnOrder(3);
-
- b.HasKey("AncestryId", "ItemId")
- .HasName("pk_ancestry_items");
-
- b.HasIndex("ItemId")
- .HasDatabaseName("ix_ancestry_items_item_id");
-
- b.ToTable("ancestry_items", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b =>
- {
- b.Property("AncestryId")
- .HasColumnType("integer")
- .HasColumnName("ancestry_id")
- .HasColumnOrder(1);
-
- b.Property("LanguageId")
- .HasColumnType("integer")
- .HasColumnName("language_id")
- .HasColumnOrder(2);
-
- b.Property("IsAdditional")
- .HasColumnType("boolean")
- .HasColumnName("is_additional")
- .HasColumnOrder(3);
-
- b.HasKey("AncestryId", "LanguageId")
- .HasName("pk_ancestry_languages");
-
- b.HasIndex("LanguageId")
- .HasDatabaseName("ix_ancestry_languages_language_id");
-
- b.ToTable("ancestry_languages", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.HasKey("Id")
- .HasName("pk_backgrounds");
-
- b.ToTable("backgrounds", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Attribute")
- .HasColumnType("attribute_values")
- .HasColumnName("attribute")
- .HasColumnOrder(3);
-
- b.Property("BackgroundId")
- .HasColumnType("integer")
- .HasColumnName("background_id")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_background_boosts");
-
- b.HasIndex("BackgroundId")
- .HasDatabaseName("ix_background_boosts_background_id");
-
- b.ToTable("background_boosts", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b =>
- {
- b.Property("BackgroundId")
- .HasColumnType("integer")
- .HasColumnName("background_id")
- .HasColumnOrder(1);
-
- b.Property("EntityId")
- .HasColumnType("integer")
- .HasColumnName("entity_id")
- .HasColumnOrder(2);
-
- b.Property("Level")
- .HasColumnType("integer")
- .HasColumnName("level")
- .HasColumnOrder(3);
-
- b.HasKey("BackgroundId", "EntityId")
- .HasName("pk_background_items");
-
- b.HasIndex("EntityId")
- .HasDatabaseName("ix_background_items_entity_id");
-
- b.ToTable("background_items", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("BackgroundId")
- .HasColumnType("integer")
- .HasColumnName("background_id")
- .HasColumnOrder(2);
-
- b.Property("Level")
- .HasColumnType("training_stage")
- .HasColumnName("level")
- .HasColumnOrder(4);
-
- b.Property("TrainingId")
- .HasColumnType("integer")
- .HasColumnName("training_id")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_background_skills");
-
- b.HasIndex("BackgroundId")
- .HasDatabaseName("ix_background_skills_background_id");
-
- b.HasIndex("TrainingId")
- .HasDatabaseName("ix_background_skills_training_id");
-
- b.ToTable("background_skills", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("AdditionalTrainedSkills")
- .HasColumnType("integer")
- .HasColumnName("additional_trained_skills")
- .HasColumnOrder(6);
-
- b.Property("Hp")
- .HasColumnType("integer")
- .HasColumnName("hp")
- .HasColumnOrder(3);
-
- b.Property("Perception")
- .HasColumnType("integer")
- .HasColumnName("perception")
- .HasColumnOrder(4);
-
- b.Property("Spellcasting")
- .HasColumnType("boolean")
- .HasColumnName("spellcasting")
- .HasColumnOrder(5);
-
- b.HasKey("Id")
- .HasName("pk_classes");
-
- b.ToTable("classes", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClassId")
- .HasColumnType("integer")
- .HasColumnName("class_id")
- .HasColumnOrder(2);
-
- b.Property("Value")
- .HasColumnType("attribute_values")
- .HasColumnName("value")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_class_key_abilities");
-
- b.HasIndex("ClassId")
- .HasDatabaseName("ix_class_key_abilities_class_id");
-
- b.ToTable("class_key_abilities", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClassId")
- .HasColumnType("integer")
- .HasColumnName("class_id")
- .HasColumnOrder(2);
-
- b.Property("EntityId")
- .HasColumnType("integer")
- .HasColumnName("entity_id")
- .HasColumnOrder(5);
-
- b.Property("Level")
- .HasColumnType("integer")
- .HasColumnName("level")
- .HasColumnOrder(31);
-
- b.Property("Type")
- .HasColumnType("class_progression_type")
- .HasColumnName("type")
- .HasColumnOrder(4);
-
- b.HasKey("Id")
- .HasName("pk_class_progressions");
-
- b.HasIndex("ClassId")
- .HasDatabaseName("ix_class_progressions_class_id");
-
- b.HasIndex("EntityId")
- .HasDatabaseName("ix_class_progressions_entity_id");
-
- b.ToTable("class_progressions", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClassId")
- .HasColumnType("integer")
- .HasColumnName("class_id")
- .HasColumnOrder(2);
-
- b.Property("Name")
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("name")
- .HasColumnOrder(4);
-
- b.Property("Stage")
- .HasColumnType("integer")
- .HasColumnName("stage")
- .HasColumnOrder(5);
-
- b.Property("TrainingId")
- .HasColumnType("integer")
- .HasColumnName("training_id")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_class_trainings");
-
- b.HasIndex("ClassId")
- .HasDatabaseName("ix_class_trainings_class_id");
-
- b.HasIndex("TrainingId")
- .HasDatabaseName("ix_class_trainings_training_id");
-
- b.ToTable("class_trainings", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Extra")
- .HasColumnType("text")
- .HasColumnName("extra")
- .HasColumnOrder(3);
-
- b.Property("Group")
- .HasColumnType("condition_group")
- .HasColumnName("group")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_conditions");
-
- b.ToTable("conditions", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Category")
- .HasColumnType("deity_category")
- .HasColumnName("category")
- .HasColumnOrder(2);
-
- b.Property("Fonts")
- .HasColumnType("deity_fonts")
- .HasColumnName("fonts")
- .HasColumnOrder(3);
-
- b.Property("Sanctification")
- .HasColumnType("deity_sanctification")
- .HasColumnName("sanctification")
- .HasColumnOrder(4);
-
- b.Property("SanctificationMust")
- .HasColumnType("boolean")
- .HasColumnName("sanctification_must")
- .HasColumnOrder(5);
-
- b.HasKey("Id")
- .HasName("pk_deities");
-
- b.ToTable("deities", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b =>
- {
- b.Property("DeityId")
- .HasColumnType("integer")
- .HasColumnName("deity_id")
- .HasColumnOrder(1);
-
- b.Property("Attribute")
- .HasColumnType("attribute_values")
- .HasColumnName("attribute")
- .HasColumnOrder(2);
-
- b.HasKey("DeityId", "Attribute")
- .HasName("pk_deity_attributes");
-
- b.ToTable("deity_attributes", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("DeityId")
- .HasColumnType("integer")
- .HasColumnName("deity_id")
- .HasColumnOrder(2);
-
- b.Property("IsPrimary")
- .HasColumnType("boolean")
- .HasColumnName("is_primary")
- .HasColumnOrder(3);
-
- b.Property("Value")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("value")
- .HasColumnOrder(4);
-
- b.HasKey("Id")
- .HasName("pk_deity_domains");
-
- b.HasIndex("DeityId")
- .HasDatabaseName("ix_deity_domains_deity_id");
-
- b.ToTable("deity_domains", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("DeityId")
- .HasColumnType("integer")
- .HasColumnName("deity_id")
- .HasColumnOrder(2);
-
- b.Property("Level")
- .HasColumnType("integer")
- .HasColumnName("level")
- .HasColumnOrder(3);
-
- b.Property("SpellId")
- .HasColumnType("integer")
- .HasColumnName("spell_id")
- .HasColumnOrder(4);
-
- b.HasKey("Id")
- .HasName("pk_deity_spells");
-
- b.HasIndex("DeityId")
- .HasDatabaseName("ix_deity_spells_deity_id");
-
- b.HasIndex("SpellId")
- .HasDatabaseName("ix_deity_spells_spell_id");
-
- b.ToTable("deity_spells", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("DeityId")
- .HasColumnType("integer")
- .HasColumnName("deity_id")
- .HasColumnOrder(2);
-
- b.Property("Weapon")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("weapon")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_deity_weapons");
-
- b.HasIndex("DeityId")
- .HasDatabaseName("ix_deity_weapons_deity_id");
-
- b.ToTable("deity_weapons", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Actions")
- .HasColumnType("integer")
- .HasColumnName("actions")
- .HasColumnOrder(4);
-
- b.Property("Category")
- .HasColumnType("action_category")
- .HasColumnName("category")
- .HasColumnOrder(3);
-
- b.Property("Extra")
- .HasColumnType("text")
- .HasColumnName("extra")
- .HasColumnOrder(10);
-
- b.Property("Level")
- .HasColumnType("integer")
- .HasColumnName("level")
- .HasColumnOrder(5);
-
- b.Property("LevelTaken")
- .HasColumnType("integer")
- .HasColumnName("level_taken")
- .HasColumnOrder(6);
-
- b.Property("Location")
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("location")
- .HasColumnOrder(8);
-
- b.Property("MaxTakable")
- .HasColumnType("integer")
- .HasColumnName("max_takable")
- .HasColumnOrder(7);
-
- b.Property("OnlyLevel1")
- .HasColumnType("boolean")
- .HasColumnName("only_level1")
- .HasColumnOrder(9);
-
- b.Property("Type")
- .HasColumnType("action_type")
- .HasColumnName("type")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_feats");
-
- b.ToTable("feats", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("FeatId")
- .HasColumnType("integer")
- .HasColumnName("feat_id")
- .HasColumnOrder(2);
-
- b.Property("Value")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("value")
- .HasColumnOrder(3);
-
- b.HasKey("Id")
- .HasName("pk_feat_prerequisites");
-
- b.HasIndex("FeatId")
- .HasDatabaseName("ix_feat_prerequisites_feat_id");
-
- b.ToTable("feat_prerequisites", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("AncestryId")
- .HasColumnType("integer")
- .HasColumnName("ancestry_id")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_heritages");
-
- b.HasIndex("AncestryId")
- .HasDatabaseName("ix_heritages_ancestry_id");
-
- b.ToTable("heritages", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("CanHeightening")
- .HasColumnType("boolean")
- .HasColumnName("can_heightening")
- .HasColumnOrder(11);
-
- b.Property("Cost")
- .HasColumnType("integer")
- .HasColumnName("cost")
- .HasColumnOrder(3);
-
- b.Property("Counteraction")
- .HasColumnType("boolean")
- .HasColumnName("counteraction")
- .HasColumnOrder(4);
-
- b.Property("Duration")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("duration")
- .HasColumnOrder(6);
-
- b.Property("Level")
- .HasColumnType("integer")
- .HasColumnName("level")
- .HasColumnOrder(2);
-
- b.Property("Range")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("range")
- .HasColumnOrder(7);
-
- b.Property("Requirements")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("requirements")
- .HasColumnOrder(8);
-
- b.Property("Sustained")
- .HasColumnType("boolean")
- .HasColumnName("sustained")
- .HasColumnOrder(5);
-
- b.Property("Target")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("target")
- .HasColumnOrder(9);
-
- b.Property("Time")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("time")
- .HasColumnOrder(10);
-
- b.HasKey("Id")
- .HasName("pk_spells");
-
- b.ToTable("spells", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b =>
- {
- b.Property("SpellId")
- .HasColumnType("integer")
- .HasColumnName("spell_id")
- .HasColumnOrder(1);
-
- b.Property("Details")
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("details")
- .HasColumnOrder(2);
-
- b.Property("Type")
- .HasColumnType("spell_area_type")
- .HasColumnName("type")
- .HasColumnOrder(3);
-
- b.Property("Value")
- .HasColumnType("integer")
- .HasColumnName("value")
- .HasColumnOrder(4);
-
- b.HasKey("SpellId")
- .HasName("pk_spell_areas");
-
- b.ToTable("spell_areas", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ApplyMod")
- .HasColumnType("boolean")
- .HasColumnName("apply_mod")
- .HasColumnOrder(4);
-
- b.Property("Category")
- .HasColumnType("spell_damage_category")
- .HasColumnName("category")
- .HasColumnOrder(5);
-
- b.Property("Formula")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("formula")
- .HasColumnOrder(6);
-
- b.Property("Key")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("key")
- .HasColumnOrder(3);
-
- b.Property("Kinds")
- .HasColumnType("spell_damage_kinds")
- .HasColumnName("kinds")
- .HasColumnOrder(7);
-
- b.Property("Materials")
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("materials")
- .HasColumnOrder(8);
-
- b.Property("SpellId")
- .HasColumnType("integer")
- .HasColumnName("spell_id")
- .HasColumnOrder(2);
-
- b.Property("Type")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("type")
- .HasColumnOrder(9);
-
- b.HasKey("Id")
- .HasName("pk_spell_damages");
-
- b.HasIndex("SpellId")
- .HasDatabaseName("ix_spell_damages_spell_id");
-
- b.ToTable("spell_damages", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("IsBasic")
- .HasColumnType("boolean")
- .HasColumnName("is_basic")
- .HasColumnOrder(4);
-
- b.Property("IsPassive")
- .HasColumnType("boolean")
- .HasColumnName("is_passive")
- .HasColumnOrder(3);
-
- b.Property("SpellId")
- .HasColumnType("integer")
- .HasColumnName("spell_id")
- .HasColumnOrder(2);
-
- b.Property("Statistic")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("statistic")
- .HasColumnOrder(5);
-
- b.HasKey("Id")
- .HasName("pk_spell_defenses");
-
- b.HasIndex("SpellId")
- .HasDatabaseName("ix_spell_defenses_spell_id");
-
- b.ToTable("spell_defenses", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b =>
- {
- b.Property("SpellId")
- .HasColumnType("integer")
- .HasColumnName("spell_id")
- .HasColumnOrder(1);
-
- b.Property("PrimaryCheck")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("primary_check")
- .HasColumnOrder(2);
-
- b.Property("SecondaryCasters")
- .HasColumnType("integer")
- .HasColumnName("secondary_casters")
- .HasColumnOrder(3);
-
- b.Property("SecondaryChecks")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("secondary_checks")
- .HasColumnOrder(4);
-
- b.HasKey("SpellId")
- .HasName("pk_spell_rituals");
-
- b.ToTable("spell_rituals", (string)null);
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b =>
- {
- b.Property("Id")
- .HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- b.Property("Type")
- .HasColumnType("trait_type")
- .HasColumnName("type")
- .HasColumnOrder(2);
-
- b.HasKey("Id")
- .HasName("pk_traits");
-
- b.ToTable("traits", (string)null);
- });
-
- modelBuilder.Entity("DeityTraining", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", null)
- .WithMany()
- .HasForeignKey("DeityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_training_deities_deity_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Common.Training", null)
- .WithMany()
- .HasForeignKey("SkillsId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_training_trainings_skills_id");
- });
-
- modelBuilder.Entity("EntityKeyword", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null)
- .WithMany()
- .HasForeignKey("EntitiesId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_keyword_entities_entities_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", null)
- .WithMany()
- .HasForeignKey("KeywordsId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_keyword_keywords_keywords_id");
- });
-
- modelBuilder.Entity("EntityTrait", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", null)
- .WithMany()
- .HasForeignKey("EntitiesId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_trait_entities_entities_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Structure.Trait", null)
- .WithMany()
- .HasForeignKey("TraitsId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_trait_traits_traits_id");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.EntityAlias", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithMany("Aliases")
- .HasForeignKey("EntityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_aliases_entities_entity_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.KeywordAlias", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Keywords.Keyword", "Keyword")
- .WithMany("Aliases")
- .HasForeignKey("KeywordId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_keyword_aliases_keywords_keyword_id");
-
- b.Navigation("Keyword");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.EntitySource", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithMany("Sources")
- .HasForeignKey("EntityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_sources_entities_entity_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Source.Source", "Source")
- .WithMany("EntitySources")
- .HasForeignKey("SourceId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_sources_sources_source_id");
-
- b.Navigation("Entity");
-
- b.Navigation("Source");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.EntityExternal", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithMany("Externals")
- .HasForeignKey("EntityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_externals_entities_entity_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", "Target")
- .WithMany("EntityExternals")
- .HasForeignKey("TargetId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_externals_external_targets_target_id");
-
- b.Navigation("Entity");
-
- b.Navigation("Target");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Action", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Action", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_actions_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Ancestry", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_ancestries_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryBoost", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry")
- .WithMany("AncestryBoosts")
- .HasForeignKey("AncestryId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_ancestry_boosts_ancestries_ancestry_id");
-
- b.Navigation("Ancestry");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryItem", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry")
- .WithMany("AncestryItems")
- .HasForeignKey("AncestryId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_ancestry_items_ancestries_ancestry_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Item")
- .WithMany()
- .HasForeignKey("ItemId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_ancestry_items_entities_item_id");
-
- b.Navigation("Ancestry");
-
- b.Navigation("Item");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.AncestryRelation.AncestryLanguage", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry")
- .WithMany("AncestryLanguages")
- .HasForeignKey("AncestryId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_ancestry_languages_ancestries_ancestry_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Common.Language", "Language")
- .WithMany()
- .HasForeignKey("LanguageId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_ancestry_languages_languages_language_id");
-
- b.Navigation("Ancestry");
-
- b.Navigation("Language");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Background", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_backgrounds_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundBoost", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background")
- .WithMany("BackgroundBoosts")
- .HasForeignKey("BackgroundId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_background_boosts_backgrounds_background_id");
-
- b.Navigation("Background");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundItem", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background")
- .WithMany("BackgroundItems")
- .HasForeignKey("BackgroundId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_background_items_backgrounds_background_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithMany()
- .HasForeignKey("EntityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_background_items_entities_entity_id");
-
- b.Navigation("Background");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.BackgroundRelation.BackgroundTraining", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Background", "Background")
- .WithMany("BackgroundSkills")
- .HasForeignKey("BackgroundId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_background_skills_backgrounds_background_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training")
- .WithMany()
- .HasForeignKey("TrainingId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_background_skills_trainings_training_id");
-
- b.Navigation("Background");
-
- b.Navigation("Training");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Class", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_classes_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassKeyAbility", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class")
- .WithMany("ClassKeyAbilities")
- .HasForeignKey("ClassId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_class_key_abilities_classes_class_id");
-
- b.Navigation("Class");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassProgression", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class")
- .WithMany("ClassProgressions")
- .HasForeignKey("ClassId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_class_progressions_classes_class_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithMany()
- .HasForeignKey("EntityId")
- .OnDelete(DeleteBehavior.SetNull)
- .HasConstraintName("fk_class_progressions_entities_entity_id");
-
- b.Navigation("Class");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.ClassRelation.ClassTraining", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Class", "Class")
- .WithMany("ClassTrainings")
- .HasForeignKey("ClassId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_class_trainings_classes_class_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Common.Training", "Training")
- .WithMany()
- .HasForeignKey("TrainingId")
- .OnDelete(DeleteBehavior.SetNull)
- .HasConstraintName("fk_class_trainings_trainings_training_id");
-
- b.Navigation("Class");
-
- b.Navigation("Training");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Condition", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Condition", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_conditions_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Deity", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deities_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityAttribute", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity")
- .WithMany("DeityAttributes")
- .HasForeignKey("DeityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_attributes_deities_deity_id");
-
- b.Navigation("Deity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityDomain", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity")
- .WithMany("DeityDomains")
- .HasForeignKey("DeityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_domains_deities_deity_id");
-
- b.Navigation("Deity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeitySpell", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity")
- .WithMany("DeitySpells")
- .HasForeignKey("DeityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_spells_deities_deity_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell")
- .WithMany()
- .HasForeignKey("SpellId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_spells_spells_spell_id");
-
- b.Navigation("Deity");
-
- b.Navigation("Spell");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.DeityRelation.DeityWeapon", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Deity", "Deity")
- .WithMany("DeityWeapons")
- .HasForeignKey("DeityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_deity_weapons_deities_deity_id");
-
- b.Navigation("Deity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Feat", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_feats_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.FeatRelation.FeatPrerequisite", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Feat", "Feat")
- .WithMany("FeatPrerequisites")
- .HasForeignKey("FeatId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_feat_prerequisites_feats_feat_id");
-
- b.Navigation("Feat");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Heritage", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Ancestry", "Ancestry")
- .WithMany("Heritages")
- .HasForeignKey("AncestryId")
- .OnDelete(DeleteBehavior.Cascade)
- .HasConstraintName("fk_heritages_ancestries_ancestry_id");
-
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Heritage", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_heritages_entities_id");
-
- b.Navigation("Ancestry");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Spell", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_spells_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell")
- .WithOne("SpellArea")
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellArea", "SpellId")
- .OnDelete(DeleteBehavior.Cascade)
- .HasConstraintName("fk_spell_areas_spells_spell_id");
-
- b.Navigation("Spell");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDamage", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell")
- .WithMany("SpellDamages")
- .HasForeignKey("SpellId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_spell_damages_spells_spell_id");
-
- b.Navigation("Spell");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellDefense", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell")
- .WithMany("SpellDefenses")
- .HasForeignKey("SpellId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_spell_defenses_spells_spell_id");
-
- b.Navigation("Spell");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Structure.Spell", "Spell")
- .WithOne("SpellRitual")
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.SpellRelation.SpellRitual", "SpellId")
- .OnDelete(DeleteBehavior.Cascade)
- .HasConstraintName("fk_spell_rituals_spells_spell_id");
-
- b.Navigation("Spell");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Trait", b =>
- {
- b.HasOne("Pf2eDataScrapper.Model.Base.Entity", "Entity")
- .WithOne()
- .HasForeignKey("Pf2eDataScrapper.Model.Structure.Trait", "Id")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_traits_entities_id");
-
- b.Navigation("Entity");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Entity", b =>
- {
- b.Navigation("Aliases");
-
- b.Navigation("Externals");
-
- b.Navigation("Sources");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Keywords.Keyword", b =>
- {
- b.Navigation("Aliases");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Source.Source", b =>
- {
- b.Navigation("EntitySources");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Base.Targets.ExternalTarget", b =>
- {
- b.Navigation("EntityExternals");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Ancestry", b =>
- {
- b.Navigation("AncestryBoosts");
-
- b.Navigation("AncestryItems");
-
- b.Navigation("AncestryLanguages");
-
- b.Navigation("Heritages");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Background", b =>
- {
- b.Navigation("BackgroundBoosts");
-
- b.Navigation("BackgroundItems");
-
- b.Navigation("BackgroundSkills");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Class", b =>
- {
- b.Navigation("ClassKeyAbilities");
-
- b.Navigation("ClassProgressions");
-
- b.Navigation("ClassTrainings");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Deity", b =>
- {
- b.Navigation("DeityAttributes");
-
- b.Navigation("DeityDomains");
-
- b.Navigation("DeitySpells");
-
- b.Navigation("DeityWeapons");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Feat", b =>
- {
- b.Navigation("FeatPrerequisites");
- });
-
- modelBuilder.Entity("Pf2eDataScrapper.Model.Structure.Spell", b =>
- {
- b.Navigation("SpellArea");
-
- b.Navigation("SpellDamages");
-
- b.Navigation("SpellDefenses");
-
- b.Navigation("SpellRitual");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/Pf2eDataScrapper/Migrations/20250418062802_1.cs b/Pf2eDataScrapper/Migrations/20250418062802_1.cs
deleted file mode 100644
index e1fc9f5..0000000
--- a/Pf2eDataScrapper/Migrations/20250418062802_1.cs
+++ /dev/null
@@ -1,1199 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-using Pf2eDataScrapper.Model.Enum;
-
-#nullable disable
-
-namespace Pf2eDataScrapper.Migrations
-{
- ///
- public partial class _1 : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AlterDatabase()
- .Annotation("Npgsql:Enum:action_category", "unknown,offensive,defensive,interaction,familiar,army_tactic,army_war_action,kingdom_activity,kingdom_feat,kingdom_feature")
- .Annotation("Npgsql:Enum:action_type", "none,1_action,2_actions,3_actions,1-3_actions,1-2_actions")
- .Annotation("Npgsql:Enum:alias_type", "legacy,english,legacy_english,hobby,other")
- .Annotation("Npgsql:Enum:ancestry_vision", "normal,low-light-vision,darkvision")
- .Annotation("Npgsql:Enum:attribute_values", "any,str,dex,con,int,wis,cha")
- .Annotation("Npgsql:Enum:class_progression_type", "entity,ancestry_feat,class_feat,general_feat,skill_feat,skill_increase")
- .Annotation("Npgsql:Enum:condition_group", "unknown,senses,abilities,death,attitudes,detection")
- .Annotation("Npgsql:Enum:deity_category", "deity,pantheon,covenant,philosophy")
- .Annotation("Npgsql:Enum:deity_fonts", "none,heal,harm,any")
- .Annotation("Npgsql:Enum:deity_sanctification", "holy,unholy,any")
- .Annotation("Npgsql:Enum:entity_rarity", "common,uncommon,rare,unique")
- .Annotation("Npgsql:Enum:entity_type", "unknown,trait,action,ancestry,background,backpack,campaign_feature,class,condition,deity,feat,heritage,spell")
- .Annotation("Npgsql:Enum:feat_action_type", "passive,action,reaction,free")
- .Annotation("Npgsql:Enum:feat_category", "ancestryfeature,classfeature,calling,class,skill,general,ancestry,bonus,deityboon,curse,pfsboon,campaign_feature")
- .Annotation("Npgsql:Enum:size", "med,tiny")
- .Annotation("Npgsql:Enum:source_category", "rulebook,adventure-path,lost-omens")
- .Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder")
- .Annotation("Npgsql:Enum:spell_damage_category", "persistent,splash")
- .Annotation("Npgsql:Enum:spell_damage_kinds", "damage,healing,any")
- .Annotation("Npgsql:Enum:training_stage", "untrained,trained,expert,master,legendary")
- .Annotation("Npgsql:Enum:trait_type", "regular,tradition");
-
- migrationBuilder.CreateTable(
- name: "entities",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Отображаемое имя"),
- type = table.Column(type: "entity_type", nullable: false, comment: "Тип объекта"),
- slug = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть имени в URL"),
- img = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Изображение объекта"),
- description = table.Column(type: "text", nullable: false, comment: "Текстовое описание объекта"),
- rarity = table.Column(type: "entity_rarity", nullable: false),
- is_translated = table.Column(type: "boolean", nullable: true, comment: "Флаг, указывающий, что у объекта существует перевод"),
- is_checked = table.Column(type: "boolean", nullable: true, comment: "Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи")
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_entities", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "external_targets",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- icon = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- prefix = table.Column(type: "character varying(255)", maxLength: 255, nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_external_targets", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "frequencies",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- max = table.Column(type: "integer", nullable: false),
- per = table.Column(type: "integer", nullable: false),
- value = table.Column(type: "integer", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_frequencies", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "keywords",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- slug = table.Column(type: "text", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_keywords", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "languages",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- slug = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- rarity = table.Column(type: "entity_rarity", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_languages", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "sources",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false),
- category = table.Column(type: "source_category", nullable: false),
- release_date = table.Column(type: "date", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_sources", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "trainings",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- key = table.Column(type: "character varying(255)", maxLength: 255, nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_trainings", x => x.id);
- });
-
- migrationBuilder.CreateTable(
- name: "actions",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false),
- type = table.Column(type: "action_type", nullable: false),
- actions = table.Column(type: "integer", nullable: true),
- max_actions = table.Column(type: "integer", nullable: true),
- is_reaction = table.Column(type: "boolean", nullable: false),
- is_free_action = table.Column(type: "boolean", nullable: false),
- is_passive = table.Column(type: "boolean", nullable: false),
- extra = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_actions", x => x.id);
- table.ForeignKey(
- name: "fk_actions_entities_id",
- column: x => x.id,
- principalTable: "entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "ancestries",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false),
- size = table.Column(type: "size", nullable: false),
- hp = table.Column(type: "integer", nullable: false),
- reach = table.Column(type: "integer", nullable: false),
- speed = table.Column(type: "integer", nullable: false),
- vision = table.Column(type: "ancestry_vision", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_ancestries", x => x.id);
- table.ForeignKey(
- name: "fk_ancestries_entities_id",
- column: x => x.id,
- principalTable: "entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "backgrounds",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_backgrounds", x => x.id);
- table.ForeignKey(
- name: "fk_backgrounds_entities_id",
- column: x => x.id,
- principalTable: "entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "classes",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false),
- hp = table.Column(type: "integer", nullable: false),
- perception = table.Column(type: "integer", nullable: false),
- spellcasting = table.Column