diff --git a/Pf2eDataScrapper/Forms/EntityViewForm.Designer.cs b/Pf2eDataScrapper/Forms/EntityViewForm.Designer.cs
index e2982e4..3a18dd8 100644
--- a/Pf2eDataScrapper/Forms/EntityViewForm.Designer.cs
+++ b/Pf2eDataScrapper/Forms/EntityViewForm.Designer.cs
@@ -38,7 +38,7 @@ partial class EntityViewForm
DescriptionTextBox = new TextBox();
DatabaseViewer = new DatabaseViewerControl();
EntityTreeViewerControl = new EntityTreeViewerControl();
- MainMenuStrip = new MenuStrip();
+ MenuStrip = new MenuStrip();
FileToolStripMenuItem = new ToolStripMenuItem();
ExitToolStripMenuItem = new ToolStripMenuItem();
WindowsToolStripMenuItem = new ToolStripMenuItem();
@@ -54,7 +54,7 @@ partial class EntityViewForm
((System.ComponentModel.ISupportInitialize)ResultSplitContainer).BeginInit();
ResultSplitContainer.Panel2.SuspendLayout();
ResultSplitContainer.SuspendLayout();
- MainMenuStrip.SuspendLayout();
+ MenuStrip.SuspendLayout();
SuspendLayout();
//
// RootSplitContainer
@@ -110,10 +110,6 @@ partial class EntityViewForm
ResultSplitContainer.Location = new Point(0, 0);
ResultSplitContainer.Name = "ResultSplitContainer";
//
- // ResultSplitContainer.Panel1
- //
- ResultSplitContainer.Panel1.Controls.Add(EntityTreeViewerControl);
- //
// ResultSplitContainer.Panel2
//
ResultSplitContainer.Panel2.Controls.Add(DescriptionTextBox);
@@ -156,14 +152,14 @@ partial class EntityViewForm
EntityTreeViewerControl.TabIndex = 0;
EntityTreeViewerControl.TypeFontSize = 7F;
//
- // MainMenuStrip
+ // MenuStrip
//
- MainMenuStrip.Items.AddRange(new ToolStripItem[] { FileToolStripMenuItem, WindowsToolStripMenuItem });
- MainMenuStrip.Location = new Point(0, 0);
- MainMenuStrip.Name = "MainMenuStrip";
- MainMenuStrip.Size = new Size(1384, 24);
- MainMenuStrip.TabIndex = 1;
- MainMenuStrip.Text = "menuStrip1";
+ MenuStrip.Items.AddRange(new ToolStripItem[] { FileToolStripMenuItem, WindowsToolStripMenuItem });
+ MenuStrip.Location = new Point(0, 0);
+ MenuStrip.Name = "MainMenuStrip";
+ MenuStrip.Size = new Size(1384, 24);
+ MenuStrip.TabIndex = 1;
+ MenuStrip.Text = "menuStrip1";
//
// FileToolStripMenuItem
//
@@ -175,7 +171,7 @@ partial class EntityViewForm
// ExitToolStripMenuItem
//
ExitToolStripMenuItem.Name = "ExitToolStripMenuItem";
- ExitToolStripMenuItem.Size = new Size(180, 22);
+ ExitToolStripMenuItem.Size = new Size(109, 22);
ExitToolStripMenuItem.Text = "Выход";
ExitToolStripMenuItem.Click += ExitToolStripMenuItem_Click;
//
@@ -206,7 +202,7 @@ partial class EntityViewForm
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1384, 861);
Controls.Add(RootSplitContainer);
- Controls.Add(MainMenuStrip);
+ Controls.Add(MenuStrip);
Name = "EntityViewForm";
Text = "DataBaseViewer";
RootSplitContainer.Panel1.ResumeLayout(false);
@@ -220,8 +216,8 @@ partial class EntityViewForm
ResultSplitContainer.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)ResultSplitContainer).EndInit();
ResultSplitContainer.ResumeLayout(false);
- MainMenuStrip.ResumeLayout(false);
- MainMenuStrip.PerformLayout();
+ MenuStrip.ResumeLayout(false);
+ MenuStrip.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -235,7 +231,7 @@ partial class EntityViewForm
private TextBox DescriptionTextBox;
private EntityTreeViewerControl EntityTreeViewerControl;
private DatabaseViewerControl DatabaseViewer;
- private MenuStrip MainMenuStrip;
+ private MenuStrip MenuStrip;
private ToolStripMenuItem FileToolStripMenuItem;
private ToolStripMenuItem ExitToolStripMenuItem;
private ToolStripMenuItem WindowsToolStripMenuItem;
diff --git a/Pf2eDataScrapper/Forms/EntityViewForm.resx b/Pf2eDataScrapper/Forms/EntityViewForm.resx
index 51c499e..9b2a006 100644
--- a/Pf2eDataScrapper/Forms/EntityViewForm.resx
+++ b/Pf2eDataScrapper/Forms/EntityViewForm.resx
@@ -117,7 +117,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
17, 17
diff --git a/Pf2eDataScrapper/Forms/StartForm.Designer.cs b/Pf2eDataScrapper/Forms/StartForm.Designer.cs
index 297306d..7519395 100644
--- a/Pf2eDataScrapper/Forms/StartForm.Designer.cs
+++ b/Pf2eDataScrapper/Forms/StartForm.Designer.cs
@@ -36,7 +36,7 @@ partial class StartForm
SelectAllButton = new Button();
DeselectAllButton = new Button();
StartButton = new Button();
- MainMenuStrip = new MenuStrip();
+ MenuStrip = new MenuStrip();
FileToolStripMenuItem = new ToolStripMenuItem();
ExitToolStripMenuItem = new ToolStripMenuItem();
WindowsToolStripMenuItem = new ToolStripMenuItem();
@@ -49,7 +49,7 @@ partial class StartForm
MainSplitContainer.SuspendLayout();
PropertiesGroupBox.SuspendLayout();
ProcessorsGroupBox.SuspendLayout();
- MainMenuStrip.SuspendLayout();
+ MenuStrip.SuspendLayout();
SuspendLayout();
//
// MainSplitContainer
@@ -143,14 +143,14 @@ partial class StartForm
StartButton.UseVisualStyleBackColor = true;
StartButton.Click += StartButton_Click;
//
- // MainMenuStrip
+ // MenuStrip
//
- MainMenuStrip.Items.AddRange(new ToolStripItem[] { FileToolStripMenuItem, WindowsToolStripMenuItem, StartToolStripMenuItem });
- MainMenuStrip.Location = new Point(0, 0);
- MainMenuStrip.Name = "MainMenuStrip";
- MainMenuStrip.Size = new Size(931, 24);
- MainMenuStrip.TabIndex = 1;
- MainMenuStrip.Text = "menuStrip1";
+ MenuStrip.Items.AddRange(new ToolStripItem[] { FileToolStripMenuItem, WindowsToolStripMenuItem, StartToolStripMenuItem });
+ MenuStrip.Location = new Point(0, 0);
+ MenuStrip.Name = "MenuStrip";
+ MenuStrip.Size = new Size(931, 24);
+ MenuStrip.TabIndex = 1;
+ MenuStrip.Text = "menuStrip1";
//
// FileToolStripMenuItem
//
@@ -200,7 +200,7 @@ partial class StartForm
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(931, 677);
Controls.Add(MainSplitContainer);
- Controls.Add(MainMenuStrip);
+ Controls.Add(MenuStrip);
Name = "StartForm";
Text = "Настройки импорта данных";
Load += StartForm_Load;
@@ -210,8 +210,8 @@ partial class StartForm
MainSplitContainer.ResumeLayout(false);
PropertiesGroupBox.ResumeLayout(false);
ProcessorsGroupBox.ResumeLayout(false);
- MainMenuStrip.ResumeLayout(false);
- MainMenuStrip.PerformLayout();
+ MenuStrip.ResumeLayout(false);
+ MenuStrip.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -226,7 +226,7 @@ partial class StartForm
private Button SelectAllButton;
private Button DeselectAllButton;
private Controls.ProcessorCollectionControl ProcessorCollectionControl;
- private MenuStrip MainMenuStrip;
+ private MenuStrip MenuStrip;
private ToolStripMenuItem FileToolStripMenuItem;
private ToolStripMenuItem ExitToolStripMenuItem;
private ToolStripMenuItem WindowsToolStripMenuItem;
diff --git a/Pf2eDataScrapper/Forms/StartForm.resx b/Pf2eDataScrapper/Forms/StartForm.resx
index fc37e2c..2099966 100644
--- a/Pf2eDataScrapper/Forms/StartForm.resx
+++ b/Pf2eDataScrapper/Forms/StartForm.resx
@@ -117,7 +117,7 @@
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/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs
index d035a3c..9121e01 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs
@@ -7,7 +7,6 @@ using Pf2eDataScrapper.Processors;
using Pf2eModel;
using Pf2eModel.Model;
using Pf2eModel.Model.Base;
-using Pf2eModel.Model.Base.Legacy;
using Pf2eModel.Model.Base.Source;
using Pf2eModel.Model.Base.Targets;
using Pf2eModel.Model.Common.I18n;
@@ -59,17 +58,10 @@ internal abstract class AbstractEntityProcessor(
///
public override void Process()
{
- if (Input.GetOptional("remaster_id") is not null)
- {
- throw new LegacyItemException(Input.GetOptional("name", ""));
- }
-
AddEntity();
AddSource();
AddExternal();
AddTraits();
-
- AddLegacy();
}
///
@@ -229,29 +221,5 @@ internal abstract class AbstractEntityProcessor(
}
}
- ///
- /// Добавление устаревших сущностей.
- ///
- protected virtual void AddLegacy()
- {
- JArray? legacyIdArray = Input.GetOptional("legacy_id");
-
- if (legacyIdArray is null || legacyIdArray.Count == 0)
- {
- return;
- }
-
- string[] legacyIds = legacyIdArray.ToArray().Select(t => t.ToString()).ToArray();
- List legacyEntities = Context
- .LegacyEntityExternals.Where(lee => legacyIds.Contains(lee.ExternalId))
- .Select(lee => lee.LegacyEntity)
- .ToList();
-
- foreach (LegacyEntity legacyEntity in legacyEntities)
- {
- Entity.LegacyEntities.Add(legacyEntity);
- }
- }
-
#endregion
}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Common/LegacyProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Common/LegacyProcessor.cs
deleted file mode 100644
index e376d9b..0000000
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Common/LegacyProcessor.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-using Newtonsoft.Json.Linq;
-using Pf2eDataScrapper.App;
-using Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
-using Pf2eDataScrapper.Processors;
-using Pf2eModel;
-using Pf2eModel.Model.Base.Legacy;
-using Pf2eModel.Model.Common.I18n;
-using StringHelper = Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.StringHelper;
-
-namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Common;
-
-[ProcessorCollection(
- "aonprd:legacy",
- InnerType = null,
- CompendiumType = ProcessorCompendiumEnum.Aonprd,
- Description = "Создание ссылок на устаревшие сущности",
- Group = ProcessorGroupEnum.AonprdPreparation,
- Parallel = true
-)]
-[ProcessorDependencies(["aonprd:source", "aonprd:external"])]
-internal class LegacyProcessor(
- ProcessorInput input,
- AonprdBuilderGlobals globals,
- StringHelper stringHelper
-) : AbstractInputProcessor(input)
-{
- public Pf2eDbContext Context { get; } = new();
- public AonprdBuilderGlobals Globals { get; } = globals;
- public StringHelper StringHelper { get; } = stringHelper;
-
- private LegacyEntity LegacyEntity { get; set; } = null!;
-
- public override void Process()
- {
- if (Input.GetOptional("remaster_id") is null)
- {
- throw new SilentSkipItemException();
- }
-
- LegacyEntity = new()
- {
- Name = { [LocaleType.English] = Input.GetOptional("name", "sidebar-29") },
- };
-
- AddSource();
- AddExternal();
- }
-
- ///
- /// Генерация источников сущности.
- ///
- protected virtual void AddSource()
- {
- string[] sourceNames = Input
- .GetRequired("source")
- .Select(token => token.ToString())
- .ToArray();
-
- if (sourceNames.Length == 0)
- {
- throw new(
- $"Source for entity with id \"{LegacyEntity.Name[LocaleType.English]}\" "
- + $"(Aonprd id \"{Input.GetRequired("id")}\") is not found"
- );
- }
- /*
- Dictionary sourceIds = Context
- .Sources.AsNoTracking()
- .Where(s => sourceNames.Contains(s.Name))
- .ToDictionary(s => s.Name, s => s.Id);
- */
- foreach (string sourceName in sourceNames)
- {
- LegacyEntitySource entitySource = new()
- {
- LegacyEntity = LegacyEntity,
- SourceId = Globals.SourceIds[sourceName],
- Suffix = StringHelper.ResolveSource(Input.GetRequired("source_markdown")),
- IsRemaster = Input.GetOptional("legacy_id") is not null,
- };
-
- Context.LegacyEntitySources.Add(entitySource);
- LegacyEntity.Sources.Add(entitySource);
- }
- }
-
- ///
- /// Генерация внешних ссылок сущности.
- ///
- protected virtual void AddExternal()
- {
- LegacyEntityExternal external = new()
- {
- LegacyEntity = LegacyEntity,
- TargetId = Globals.AonprdTarget.Id,
- ExternalId = Input.GetRequired("id"),
- Suffix = Input.GetRequired("url"),
- Md5 = Input.Md5(),
- };
-
- Context.LegacyEntityExternals.Add(external);
- }
-
- public override void Save()
- {
- Context.LegacyEntities.Add(LegacyEntity);
-
- Context.SaveChanges(false);
- Context.Dispose();
- }
-}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/TraitProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/TraitProcessor.cs
index fb5cd39..db6443d 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/TraitProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/TraitProcessor.cs
@@ -2,7 +2,6 @@
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
using Pf2eDataScrapper.Processors;
-using Pf2eModel.Model.Base.Legacy;
using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure;
@@ -37,11 +36,6 @@ internal class TraitProcessor(
Context.Traits.Add(Object);
Globals.TraitIds[Entity.Name[LocaleType.English]] = Entity.Id;
-
- foreach (LegacyEntity legacyEntity in Entity.LegacyEntities)
- {
- Globals.TraitIds[legacyEntity.Name[LocaleType.English]] = Entity.Id;
- }
}
///
diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs
index 829fc9d..3c25f0f 100644
--- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs
@@ -56,7 +56,7 @@ internal abstract class FoundryEnAbstractProcessor(
{
Type = LocaleType.English,
Alias = Entity.Group,
- EntityId = Entity.Id,
+ LegacyId = Entity.Id,
Entity = Entity
};
Context.EntityAliases.Add(alias);
diff --git a/Pf2eModel/Migrations/20250514120355_1.Designer.cs b/Pf2eModel/Migrations/20250515054227_1.Designer.cs
similarity index 94%
rename from Pf2eModel/Migrations/20250514120355_1.Designer.cs
rename to Pf2eModel/Migrations/20250515054227_1.Designer.cs
index f1f0fcb..c3d5113 100644
--- a/Pf2eModel/Migrations/20250514120355_1.Designer.cs
+++ b/Pf2eModel/Migrations/20250515054227_1.Designer.cs
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
namespace Pf2eModel.Migrations
{
[DbContext(typeof(Pf2eDbContext))]
- [Migration("20250514120355_1")]
+ [Migration("20250515054227_1")]
partial class _1
{
///
@@ -86,25 +86,6 @@ namespace Pf2eModel.Migrations
b.ToTable("entity_keyword", (string)null);
});
- modelBuilder.Entity("EntityLegacyEntity", b =>
- {
- b.Property("LegacyEntitiesId")
- .HasColumnType("integer")
- .HasColumnName("legacy_entities_id");
-
- b.Property("RemasterEntitiesId")
- .HasColumnType("integer")
- .HasColumnName("remaster_entities_id");
-
- b.HasKey("LegacyEntitiesId", "RemasterEntitiesId")
- .HasName("pk_entity_legacy_entity");
-
- b.HasIndex("RemasterEntitiesId")
- .HasDatabaseName("ix_entity_legacy_entity_remaster_entities_id");
-
- b.ToTable("entity_legacy_entity", (string)null);
- });
-
modelBuilder.Entity("EntityTrait", b =>
{
b.Property("EntitiesId")
@@ -194,6 +175,40 @@ namespace Pf2eModel.Migrations
b.ToTable("entities", (string)null);
});
+ modelBuilder.Entity("Pf2eModel.Model.Base.EntityAlias", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasColumnOrder(1)
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("EntityId")
+ .HasColumnType("integer")
+ .HasColumnName("entity_id")
+ .HasColumnOrder(2)
+ .HasComment("Связанная сущность");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasColumnOrder(3)
+ .HasComment("Алиас");
+
+ b.HasKey("Id")
+ .HasName("pk_entity_aliases");
+
+ b.HasIndex("EntityId")
+ .HasDatabaseName("ix_entity_aliases_entity_id");
+
+ b.ToTable("entity_aliases", (string)null);
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Base.Keywords.Keyword", b =>
{
b.Property("Id")
@@ -259,121 +274,52 @@ namespace Pf2eModel.Migrations
b.ToTable("keyword_aliases", (string)null);
});
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntity", b =>
+ modelBuilder.Entity("Pf2eModel.Model.Base.LegacyRemaster", b =>
{
- b.Property("Id")
- .ValueGeneratedOnAdd()
+ b.Property("LegacyId")
.HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("jsonb")
- .HasColumnName("name")
- .HasColumnOrder(2)
- .HasComment("Отображаемое имя");
-
- b.HasKey("Id")
- .HasName("pk_legacy_entities");
-
- b.ToTable("legacy_entities", (string)null);
- });
-
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntityExternal", b =>
- {
- b.Property("LegacyEntityId")
- .HasColumnType("integer")
- .HasColumnName("legacy_entity_id")
+ .HasColumnName("legacy_id")
.HasColumnOrder(1)
.HasComment("Идентификатор сущности");
- b.Property("TargetId")
+ b.Property("RemasterId")
.HasColumnType("integer")
- .HasColumnName("target_id")
+ .HasColumnName("remaster_id")
.HasColumnOrder(2)
.HasComment("Идентификатор цели");
- b.Property("ExternalId")
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("external_id")
- .HasColumnOrder(3);
-
- b.Property("Md5")
- .IsRequired()
- .HasMaxLength(32)
- .HasColumnType("character varying(32)")
- .HasColumnName("md5")
- .HasColumnOrder(5)
- .HasComment("Контрольная сумма объекта");
-
- b.Property("Suffix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("suffix")
- .HasColumnOrder(4)
- .HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта");
-
- b.HasKey("LegacyEntityId", "TargetId")
- .HasName("pk_legacy_entity_externals");
-
- b.HasIndex("TargetId")
- .HasDatabaseName("ix_legacy_entity_externals_target_id");
-
- b.ToTable("legacy_entity_externals", (string)null);
- });
-
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntitySource", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
+ b.Property("LegacyEntitiesId")
.HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(0)
- .HasComment("Идентификатор");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("IsRemaster")
- .HasColumnType("boolean")
- .HasColumnName("is_remaster")
- .HasColumnOrder(4)
- .HasComment("Флаг, указывающий, что объект является частью ремастера");
+ .HasColumnName("legacy_entities_id");
b.Property("LegacyEntityId")
.HasColumnType("integer")
- .HasColumnName("legacy_entity_id")
- .HasColumnOrder(1)
- .HasComment("Идентификатор устаревшей сущности");
+ .HasColumnName("legacy_entity_id");
- b.Property("SourceId")
+ b.Property("RemasterEntitiesId")
.HasColumnType("integer")
- .HasColumnName("source_id")
- .HasColumnOrder(2)
- .HasComment("Идентификатор источника");
+ .HasColumnName("remaster_entities_id");
- b.Property("Suffix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("suffix")
- .HasColumnOrder(3)
- .HasComment("Номер страницы, эррата и т.д.");
+ b.Property("RemasterEntityId")
+ .HasColumnType("integer")
+ .HasColumnName("remaster_entity_id");
- b.HasKey("Id")
- .HasName("pk_legacy_entity_sources");
+ b.HasKey("LegacyId", "RemasterId")
+ .HasName("pk_legacy_remasters");
+
+ b.HasIndex("LegacyEntitiesId")
+ .HasDatabaseName("ix_legacy_remasters_legacy_entities_id");
b.HasIndex("LegacyEntityId")
- .HasDatabaseName("ix_legacy_entity_sources_legacy_entity_id");
+ .HasDatabaseName("ix_legacy_remasters_legacy_entity_id");
- b.HasIndex("SourceId")
- .HasDatabaseName("ix_legacy_entity_sources_source_id");
+ b.HasIndex("RemasterEntitiesId")
+ .HasDatabaseName("ix_legacy_remasters_remaster_entities_id");
- b.ToTable("legacy_entity_sources", (string)null);
+ b.HasIndex("RemasterEntityId")
+ .HasDatabaseName("ix_legacy_remasters_remaster_entity_id");
+
+ b.ToTable("legacy_remasters", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Base.Source.EntitySource", b =>
@@ -1984,23 +1930,6 @@ namespace Pf2eModel.Migrations
.HasConstraintName("fk_entity_keyword_keywords_keywords_id");
});
- modelBuilder.Entity("EntityLegacyEntity", b =>
- {
- b.HasOne("Pf2eModel.Model.Base.Legacy.LegacyEntity", null)
- .WithMany()
- .HasForeignKey("LegacyEntitiesId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_legacy_entity_legacy_entities_legacy_entities_id");
-
- b.HasOne("Pf2eModel.Model.Base.Entity", null)
- .WithMany()
- .HasForeignKey("RemasterEntitiesId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_legacy_entity_entities_remaster_entities_id");
- });
-
modelBuilder.Entity("EntityTrait", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", null)
@@ -2018,6 +1947,18 @@ namespace Pf2eModel.Migrations
.HasConstraintName("fk_entity_trait_traits_traits_id");
});
+ modelBuilder.Entity("Pf2eModel.Model.Base.EntityAlias", b =>
+ {
+ b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
+ .WithMany("Aliases")
+ .HasForeignKey("EntityId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_entity_aliases_entities_entity_id");
+
+ b.Navigation("Entity");
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Base.Keywords.KeywordAlias", b =>
{
b.HasOne("Pf2eModel.Model.Base.Keywords.Keyword", "Keyword")
@@ -2030,46 +1971,39 @@ namespace Pf2eModel.Migrations
b.Navigation("Keyword");
});
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntityExternal", b =>
+ modelBuilder.Entity("Pf2eModel.Model.Base.LegacyRemaster", b =>
{
- b.HasOne("Pf2eModel.Model.Base.Legacy.LegacyEntity", "LegacyEntity")
- .WithMany("Externals")
+ b.HasOne("Pf2eModel.Model.Base.Entity", null)
+ .WithMany()
+ .HasForeignKey("LegacyEntitiesId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_legacy_remasters_entities_legacy_entities_id");
+
+ b.HasOne("Pf2eModel.Model.Base.Entity", "LegacyEntity")
+ .WithMany()
.HasForeignKey("LegacyEntityId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
- .HasConstraintName("fk_legacy_entity_externals_legacy_entities_legacy_entity_id");
+ .HasConstraintName("fk_legacy_remasters_entities_legacy_entity_id");
- b.HasOne("Pf2eModel.Model.Base.Targets.ExternalTarget", "Target")
- .WithMany("LegacyEntityExternals")
- .HasForeignKey("TargetId")
+ b.HasOne("Pf2eModel.Model.Base.Entity", null)
+ .WithMany()
+ .HasForeignKey("RemasterEntitiesId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
- .HasConstraintName("fk_legacy_entity_externals_external_targets_target_id");
+ .HasConstraintName("fk_legacy_remasters_entities_remaster_entities_id");
+
+ b.HasOne("Pf2eModel.Model.Base.Entity", "RemasterEntity")
+ .WithMany()
+ .HasForeignKey("RemasterEntityId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_legacy_remasters_entities_remaster_entity_id");
b.Navigation("LegacyEntity");
- b.Navigation("Target");
- });
-
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntitySource", b =>
- {
- b.HasOne("Pf2eModel.Model.Base.Legacy.LegacyEntity", "LegacyEntity")
- .WithMany("Sources")
- .HasForeignKey("LegacyEntityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_legacy_entity_sources_legacy_entities_legacy_entity_id");
-
- b.HasOne("Pf2eModel.Model.Base.Source.Source", "Source")
- .WithMany("LegacyEntitySources")
- .HasForeignKey("SourceId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_legacy_entity_sources_sources_source_id");
-
- b.Navigation("LegacyEntity");
-
- b.Navigation("Source");
+ b.Navigation("RemasterEntity");
});
modelBuilder.Entity("Pf2eModel.Model.Base.Source.EntitySource", b =>
@@ -2700,6 +2634,8 @@ namespace Pf2eModel.Migrations
modelBuilder.Entity("Pf2eModel.Model.Base.Entity", b =>
{
+ b.Navigation("Aliases");
+
b.Navigation("Externals");
b.Navigation("Sources");
@@ -2710,25 +2646,14 @@ namespace Pf2eModel.Migrations
b.Navigation("Aliases");
});
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntity", b =>
- {
- b.Navigation("Externals");
-
- b.Navigation("Sources");
- });
-
modelBuilder.Entity("Pf2eModel.Model.Base.Source.Source", b =>
{
b.Navigation("EntitySources");
-
- b.Navigation("LegacyEntitySources");
});
modelBuilder.Entity("Pf2eModel.Model.Base.Targets.ExternalTarget", b =>
{
b.Navigation("EntityExternals");
-
- b.Navigation("LegacyEntityExternals");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Ancestry", b =>
diff --git a/Pf2eModel/Migrations/20250514120355_1.cs b/Pf2eModel/Migrations/20250515054227_1.cs
similarity index 94%
rename from Pf2eModel/Migrations/20250514120355_1.cs
rename to Pf2eModel/Migrations/20250515054227_1.cs
index fefb752..3eee44b 100644
--- a/Pf2eModel/Migrations/20250514120355_1.cs
+++ b/Pf2eModel/Migrations/20250515054227_1.cs
@@ -101,19 +101,6 @@ namespace Pf2eModel.Migrations
table.PrimaryKey("pk_keywords", x => x.id);
});
- migrationBuilder.CreateTable(
- name: "legacy_entities",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- name = table.Column(type: "jsonb", nullable: false, comment: "Отображаемое имя")
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_legacy_entities", x => x.id);
- });
-
migrationBuilder.CreateTable(
name: "sources",
columns: table => new
@@ -261,6 +248,26 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
+ migrationBuilder.CreateTable(
+ name: "entity_aliases",
+ columns: table => new
+ {
+ id = table.Column(type: "integer", nullable: false, comment: "Идентификатор")
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ entity_id = table.Column(type: "integer", nullable: false, comment: "Связанная сущность"),
+ name = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Алиас")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("pk_entity_aliases", x => x.id);
+ table.ForeignKey(
+ name: "fk_entity_aliases_entities_entity_id",
+ column: x => x.entity_id,
+ principalTable: "entities",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
migrationBuilder.CreateTable(
name: "feats",
columns: table => new
@@ -304,6 +311,46 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
+ migrationBuilder.CreateTable(
+ name: "legacy_remasters",
+ columns: table => new
+ {
+ legacy_id = table.Column(type: "integer", nullable: false, comment: "Идентификатор сущности"),
+ remaster_id = table.Column(type: "integer", nullable: false, comment: "Идентификатор цели"),
+ legacy_entity_id = table.Column(type: "integer", nullable: false),
+ remaster_entity_id = table.Column(type: "integer", nullable: false),
+ legacy_entities_id = table.Column(type: "integer", nullable: false),
+ remaster_entities_id = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("pk_legacy_remasters", x => new { x.legacy_id, x.remaster_id });
+ table.ForeignKey(
+ name: "fk_legacy_remasters_entities_legacy_entities_id",
+ column: x => x.legacy_entities_id,
+ principalTable: "entities",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "fk_legacy_remasters_entities_legacy_entity_id",
+ column: x => x.legacy_entity_id,
+ principalTable: "entities",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "fk_legacy_remasters_entities_remaster_entities_id",
+ column: x => x.remaster_entities_id,
+ principalTable: "entities",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "fk_legacy_remasters_entities_remaster_entity_id",
+ column: x => x.remaster_entity_id,
+ principalTable: "entities",
+ principalColumn: "id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
migrationBuilder.CreateTable(
name: "rituals",
columns: table => new
@@ -477,57 +524,6 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
- migrationBuilder.CreateTable(
- name: "entity_legacy_entity",
- columns: table => new
- {
- legacy_entities_id = table.Column(type: "integer", nullable: false),
- remaster_entities_id = table.Column(type: "integer", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_entity_legacy_entity", x => new { x.legacy_entities_id, x.remaster_entities_id });
- table.ForeignKey(
- name: "fk_entity_legacy_entity_entities_remaster_entities_id",
- column: x => x.remaster_entities_id,
- principalTable: "entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "fk_entity_legacy_entity_legacy_entities_legacy_entities_id",
- column: x => x.legacy_entities_id,
- principalTable: "legacy_entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "legacy_entity_externals",
- columns: table => new
- {
- legacy_entity_id = table.Column(type: "integer", nullable: false, comment: "Идентификатор сущности"),
- target_id = table.Column(type: "integer", nullable: false, comment: "Идентификатор цели"),
- external_id = table.Column(type: "character varying(255)", maxLength: 255, nullable: true),
- suffix = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Часть URL до объекта. Для источников Foundry - полный UUID объекта"),
- md5 = table.Column(type: "character varying(32)", maxLength: 32, nullable: false, comment: "Контрольная сумма объекта")
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_legacy_entity_externals", x => new { x.legacy_entity_id, x.target_id });
- table.ForeignKey(
- name: "fk_legacy_entity_externals_external_targets_target_id",
- column: x => x.target_id,
- principalTable: "external_targets",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "fk_legacy_entity_externals_legacy_entities_legacy_entity_id",
- column: x => x.legacy_entity_id,
- principalTable: "legacy_entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
migrationBuilder.CreateTable(
name: "entity_sources",
columns: table => new
@@ -556,34 +552,6 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
- migrationBuilder.CreateTable(
- name: "legacy_entity_sources",
- columns: table => new
- {
- id = table.Column(type: "integer", nullable: false, comment: "Идентификатор")
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- legacy_entity_id = table.Column(type: "integer", nullable: false, comment: "Идентификатор устаревшей сущности"),
- source_id = table.Column(type: "integer", nullable: false, comment: "Идентификатор источника"),
- suffix = table.Column(type: "character varying(255)", maxLength: 255, nullable: false, comment: "Номер страницы, эррата и т.д."),
- is_remaster = table.Column(type: "boolean", nullable: false, comment: "Флаг, указывающий, что объект является частью ремастера")
- },
- constraints: table =>
- {
- table.PrimaryKey("pk_legacy_entity_sources", x => x.id);
- table.ForeignKey(
- name: "fk_legacy_entity_sources_legacy_entities_legacy_entity_id",
- column: x => x.legacy_entity_id,
- principalTable: "legacy_entities",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "fk_legacy_entity_sources_sources_source_id",
- column: x => x.source_id,
- principalTable: "sources",
- principalColumn: "id",
- onDelete: ReferentialAction.Cascade);
- });
-
migrationBuilder.CreateTable(
name: "ancestry_boosts",
columns: table => new
@@ -1343,6 +1311,11 @@ namespace Pf2eModel.Migrations
table: "deity_weapons",
column: "deity_id");
+ migrationBuilder.CreateIndex(
+ name: "ix_entity_aliases_entity_id",
+ table: "entity_aliases",
+ column: "entity_id");
+
migrationBuilder.CreateIndex(
name: "ix_entity_externals_target_id",
table: "entity_externals",
@@ -1353,11 +1326,6 @@ namespace Pf2eModel.Migrations
table: "entity_keyword",
column: "keywords_id");
- migrationBuilder.CreateIndex(
- name: "ix_entity_legacy_entity_remaster_entities_id",
- table: "entity_legacy_entity",
- column: "remaster_entities_id");
-
migrationBuilder.CreateIndex(
name: "ix_entity_sources_entity_id",
table: "entity_sources",
@@ -1394,19 +1362,24 @@ namespace Pf2eModel.Migrations
column: "entity_id");
migrationBuilder.CreateIndex(
- name: "ix_legacy_entity_externals_target_id",
- table: "legacy_entity_externals",
- column: "target_id");
+ name: "ix_legacy_remasters_legacy_entities_id",
+ table: "legacy_remasters",
+ column: "legacy_entities_id");
migrationBuilder.CreateIndex(
- name: "ix_legacy_entity_sources_legacy_entity_id",
- table: "legacy_entity_sources",
+ name: "ix_legacy_remasters_legacy_entity_id",
+ table: "legacy_remasters",
column: "legacy_entity_id");
migrationBuilder.CreateIndex(
- name: "ix_legacy_entity_sources_source_id",
- table: "legacy_entity_sources",
- column: "source_id");
+ name: "ix_legacy_remasters_remaster_entities_id",
+ table: "legacy_remasters",
+ column: "remaster_entities_id");
+
+ migrationBuilder.CreateIndex(
+ name: "ix_legacy_remasters_remaster_entity_id",
+ table: "legacy_remasters",
+ column: "remaster_entity_id");
migrationBuilder.CreateIndex(
name: "ix_ritual_checks_ritual_id",
@@ -1518,15 +1491,15 @@ namespace Pf2eModel.Migrations
migrationBuilder.DropTable(
name: "deity_weapons");
+ migrationBuilder.DropTable(
+ name: "entity_aliases");
+
migrationBuilder.DropTable(
name: "entity_externals");
migrationBuilder.DropTable(
name: "entity_keyword");
- migrationBuilder.DropTable(
- name: "entity_legacy_entity");
-
migrationBuilder.DropTable(
name: "entity_sources");
@@ -1546,10 +1519,7 @@ namespace Pf2eModel.Migrations
name: "keyword_aliases");
migrationBuilder.DropTable(
- name: "legacy_entity_externals");
-
- migrationBuilder.DropTable(
- name: "legacy_entity_sources");
+ name: "legacy_remasters");
migrationBuilder.DropTable(
name: "ritual_areas");
@@ -1587,6 +1557,12 @@ namespace Pf2eModel.Migrations
migrationBuilder.DropTable(
name: "deities");
+ migrationBuilder.DropTable(
+ name: "external_targets");
+
+ migrationBuilder.DropTable(
+ name: "sources");
+
migrationBuilder.DropTable(
name: "traits");
@@ -1596,15 +1572,6 @@ namespace Pf2eModel.Migrations
migrationBuilder.DropTable(
name: "keywords");
- migrationBuilder.DropTable(
- name: "external_targets");
-
- migrationBuilder.DropTable(
- name: "legacy_entities");
-
- migrationBuilder.DropTable(
- name: "sources");
-
migrationBuilder.DropTable(
name: "rituals");
diff --git a/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs b/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs
index 77fe09f..a353789 100644
--- a/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs
+++ b/Pf2eModel/Migrations/Pf2eDbContextModelSnapshot.cs
@@ -83,25 +83,6 @@ namespace Pf2eModel.Migrations
b.ToTable("entity_keyword", (string)null);
});
- modelBuilder.Entity("EntityLegacyEntity", b =>
- {
- b.Property("LegacyEntitiesId")
- .HasColumnType("integer")
- .HasColumnName("legacy_entities_id");
-
- b.Property("RemasterEntitiesId")
- .HasColumnType("integer")
- .HasColumnName("remaster_entities_id");
-
- b.HasKey("LegacyEntitiesId", "RemasterEntitiesId")
- .HasName("pk_entity_legacy_entity");
-
- b.HasIndex("RemasterEntitiesId")
- .HasDatabaseName("ix_entity_legacy_entity_remaster_entities_id");
-
- b.ToTable("entity_legacy_entity", (string)null);
- });
-
modelBuilder.Entity("EntityTrait", b =>
{
b.Property("EntitiesId")
@@ -191,6 +172,40 @@ namespace Pf2eModel.Migrations
b.ToTable("entities", (string)null);
});
+ modelBuilder.Entity("Pf2eModel.Model.Base.EntityAlias", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasColumnOrder(1)
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("EntityId")
+ .HasColumnType("integer")
+ .HasColumnName("entity_id")
+ .HasColumnOrder(2)
+ .HasComment("Связанная сущность");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasColumnOrder(3)
+ .HasComment("Алиас");
+
+ b.HasKey("Id")
+ .HasName("pk_entity_aliases");
+
+ b.HasIndex("EntityId")
+ .HasDatabaseName("ix_entity_aliases_entity_id");
+
+ b.ToTable("entity_aliases", (string)null);
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Base.Keywords.Keyword", b =>
{
b.Property("Id")
@@ -256,121 +271,52 @@ namespace Pf2eModel.Migrations
b.ToTable("keyword_aliases", (string)null);
});
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntity", b =>
+ modelBuilder.Entity("Pf2eModel.Model.Base.LegacyRemaster", b =>
{
- b.Property("Id")
- .ValueGeneratedOnAdd()
+ b.Property("LegacyId")
.HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(1);
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("jsonb")
- .HasColumnName("name")
- .HasColumnOrder(2)
- .HasComment("Отображаемое имя");
-
- b.HasKey("Id")
- .HasName("pk_legacy_entities");
-
- b.ToTable("legacy_entities", (string)null);
- });
-
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntityExternal", b =>
- {
- b.Property("LegacyEntityId")
- .HasColumnType("integer")
- .HasColumnName("legacy_entity_id")
+ .HasColumnName("legacy_id")
.HasColumnOrder(1)
.HasComment("Идентификатор сущности");
- b.Property("TargetId")
+ b.Property("RemasterId")
.HasColumnType("integer")
- .HasColumnName("target_id")
+ .HasColumnName("remaster_id")
.HasColumnOrder(2)
.HasComment("Идентификатор цели");
- b.Property("ExternalId")
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("external_id")
- .HasColumnOrder(3);
-
- b.Property("Md5")
- .IsRequired()
- .HasMaxLength(32)
- .HasColumnType("character varying(32)")
- .HasColumnName("md5")
- .HasColumnOrder(5)
- .HasComment("Контрольная сумма объекта");
-
- b.Property("Suffix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("suffix")
- .HasColumnOrder(4)
- .HasComment("Часть URL до объекта. Для источников Foundry - полный UUID объекта");
-
- b.HasKey("LegacyEntityId", "TargetId")
- .HasName("pk_legacy_entity_externals");
-
- b.HasIndex("TargetId")
- .HasDatabaseName("ix_legacy_entity_externals_target_id");
-
- b.ToTable("legacy_entity_externals", (string)null);
- });
-
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntitySource", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
+ b.Property("LegacyEntitiesId")
.HasColumnType("integer")
- .HasColumnName("id")
- .HasColumnOrder(0)
- .HasComment("Идентификатор");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("IsRemaster")
- .HasColumnType("boolean")
- .HasColumnName("is_remaster")
- .HasColumnOrder(4)
- .HasComment("Флаг, указывающий, что объект является частью ремастера");
+ .HasColumnName("legacy_entities_id");
b.Property("LegacyEntityId")
.HasColumnType("integer")
- .HasColumnName("legacy_entity_id")
- .HasColumnOrder(1)
- .HasComment("Идентификатор устаревшей сущности");
+ .HasColumnName("legacy_entity_id");
- b.Property("SourceId")
+ b.Property("RemasterEntitiesId")
.HasColumnType("integer")
- .HasColumnName("source_id")
- .HasColumnOrder(2)
- .HasComment("Идентификатор источника");
+ .HasColumnName("remaster_entities_id");
- b.Property("Suffix")
- .IsRequired()
- .HasMaxLength(255)
- .HasColumnType("character varying(255)")
- .HasColumnName("suffix")
- .HasColumnOrder(3)
- .HasComment("Номер страницы, эррата и т.д.");
+ b.Property("RemasterEntityId")
+ .HasColumnType("integer")
+ .HasColumnName("remaster_entity_id");
- b.HasKey("Id")
- .HasName("pk_legacy_entity_sources");
+ b.HasKey("LegacyId", "RemasterId")
+ .HasName("pk_legacy_remasters");
+
+ b.HasIndex("LegacyEntitiesId")
+ .HasDatabaseName("ix_legacy_remasters_legacy_entities_id");
b.HasIndex("LegacyEntityId")
- .HasDatabaseName("ix_legacy_entity_sources_legacy_entity_id");
+ .HasDatabaseName("ix_legacy_remasters_legacy_entity_id");
- b.HasIndex("SourceId")
- .HasDatabaseName("ix_legacy_entity_sources_source_id");
+ b.HasIndex("RemasterEntitiesId")
+ .HasDatabaseName("ix_legacy_remasters_remaster_entities_id");
- b.ToTable("legacy_entity_sources", (string)null);
+ b.HasIndex("RemasterEntityId")
+ .HasDatabaseName("ix_legacy_remasters_remaster_entity_id");
+
+ b.ToTable("legacy_remasters", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Base.Source.EntitySource", b =>
@@ -1981,23 +1927,6 @@ namespace Pf2eModel.Migrations
.HasConstraintName("fk_entity_keyword_keywords_keywords_id");
});
- modelBuilder.Entity("EntityLegacyEntity", b =>
- {
- b.HasOne("Pf2eModel.Model.Base.Legacy.LegacyEntity", null)
- .WithMany()
- .HasForeignKey("LegacyEntitiesId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_legacy_entity_legacy_entities_legacy_entities_id");
-
- b.HasOne("Pf2eModel.Model.Base.Entity", null)
- .WithMany()
- .HasForeignKey("RemasterEntitiesId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_entity_legacy_entity_entities_remaster_entities_id");
- });
-
modelBuilder.Entity("EntityTrait", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", null)
@@ -2015,6 +1944,18 @@ namespace Pf2eModel.Migrations
.HasConstraintName("fk_entity_trait_traits_traits_id");
});
+ modelBuilder.Entity("Pf2eModel.Model.Base.EntityAlias", b =>
+ {
+ b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
+ .WithMany("Aliases")
+ .HasForeignKey("EntityId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_entity_aliases_entities_entity_id");
+
+ b.Navigation("Entity");
+ });
+
modelBuilder.Entity("Pf2eModel.Model.Base.Keywords.KeywordAlias", b =>
{
b.HasOne("Pf2eModel.Model.Base.Keywords.Keyword", "Keyword")
@@ -2027,46 +1968,39 @@ namespace Pf2eModel.Migrations
b.Navigation("Keyword");
});
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntityExternal", b =>
+ modelBuilder.Entity("Pf2eModel.Model.Base.LegacyRemaster", b =>
{
- b.HasOne("Pf2eModel.Model.Base.Legacy.LegacyEntity", "LegacyEntity")
- .WithMany("Externals")
+ b.HasOne("Pf2eModel.Model.Base.Entity", null)
+ .WithMany()
+ .HasForeignKey("LegacyEntitiesId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_legacy_remasters_entities_legacy_entities_id");
+
+ b.HasOne("Pf2eModel.Model.Base.Entity", "LegacyEntity")
+ .WithMany()
.HasForeignKey("LegacyEntityId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
- .HasConstraintName("fk_legacy_entity_externals_legacy_entities_legacy_entity_id");
+ .HasConstraintName("fk_legacy_remasters_entities_legacy_entity_id");
- b.HasOne("Pf2eModel.Model.Base.Targets.ExternalTarget", "Target")
- .WithMany("LegacyEntityExternals")
- .HasForeignKey("TargetId")
+ b.HasOne("Pf2eModel.Model.Base.Entity", null)
+ .WithMany()
+ .HasForeignKey("RemasterEntitiesId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
- .HasConstraintName("fk_legacy_entity_externals_external_targets_target_id");
+ .HasConstraintName("fk_legacy_remasters_entities_remaster_entities_id");
+
+ b.HasOne("Pf2eModel.Model.Base.Entity", "RemasterEntity")
+ .WithMany()
+ .HasForeignKey("RemasterEntityId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("fk_legacy_remasters_entities_remaster_entity_id");
b.Navigation("LegacyEntity");
- b.Navigation("Target");
- });
-
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntitySource", b =>
- {
- b.HasOne("Pf2eModel.Model.Base.Legacy.LegacyEntity", "LegacyEntity")
- .WithMany("Sources")
- .HasForeignKey("LegacyEntityId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_legacy_entity_sources_legacy_entities_legacy_entity_id");
-
- b.HasOne("Pf2eModel.Model.Base.Source.Source", "Source")
- .WithMany("LegacyEntitySources")
- .HasForeignKey("SourceId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired()
- .HasConstraintName("fk_legacy_entity_sources_sources_source_id");
-
- b.Navigation("LegacyEntity");
-
- b.Navigation("Source");
+ b.Navigation("RemasterEntity");
});
modelBuilder.Entity("Pf2eModel.Model.Base.Source.EntitySource", b =>
@@ -2697,6 +2631,8 @@ namespace Pf2eModel.Migrations
modelBuilder.Entity("Pf2eModel.Model.Base.Entity", b =>
{
+ b.Navigation("Aliases");
+
b.Navigation("Externals");
b.Navigation("Sources");
@@ -2707,25 +2643,14 @@ namespace Pf2eModel.Migrations
b.Navigation("Aliases");
});
- modelBuilder.Entity("Pf2eModel.Model.Base.Legacy.LegacyEntity", b =>
- {
- b.Navigation("Externals");
-
- b.Navigation("Sources");
- });
-
modelBuilder.Entity("Pf2eModel.Model.Base.Source.Source", b =>
{
b.Navigation("EntitySources");
-
- b.Navigation("LegacyEntitySources");
});
modelBuilder.Entity("Pf2eModel.Model.Base.Targets.ExternalTarget", b =>
{
b.Navigation("EntityExternals");
-
- b.Navigation("LegacyEntityExternals");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Ancestry", b =>
diff --git a/Pf2eModel/Model/Base/Entity.cs b/Pf2eModel/Model/Base/Entity.cs
index ecc28fc..823839c 100644
--- a/Pf2eModel/Model/Base/Entity.cs
+++ b/Pf2eModel/Model/Base/Entity.cs
@@ -2,7 +2,6 @@
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base.Keywords;
-using Pf2eModel.Model.Base.Legacy;
using Pf2eModel.Model.Base.Source;
using Pf2eModel.Model.Base.Targets;
using Pf2eModel.Model.Common.I18n;
@@ -81,6 +80,11 @@ public class Entity
[Comment("Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи")]
public bool? IsChecked { get; set; } = false;
+ ///
+ /// Коллекция алиасов
+ ///
+ public ICollection Aliases { get; set; } = [];
+
///
/// Коллекция признаков, связанных с сущностью.
///
@@ -104,5 +108,10 @@ public class Entity
///
/// Коллекция устаревших сущностей.
///
- public ICollection LegacyEntities { get; set; } = [];
+ public ICollection LegacyEntities { get; set; } = [];
+
+ ///
+ /// Коллекция обновлённых сущностей.
+ ///
+ public ICollection RemasterEntities { get; set; } = [];
}
diff --git a/Pf2eModel/Model/Base/EntityAlias.cs b/Pf2eModel/Model/Base/EntityAlias.cs
new file mode 100644
index 0000000..b91132f
--- /dev/null
+++ b/Pf2eModel/Model/Base/EntityAlias.cs
@@ -0,0 +1,37 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Pf2eModel.Model.Base;
+
+public class EntityAlias
+{
+ ///
+ /// Идентификатор источника.
+ ///
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ [Column(Order = 1)]
+ [Comment("Идентификатор")]
+ public int Id { get; set; }
+
+ ///
+ /// Идентификатор связанной сущности.
+ ///
+ [Column(Order = 2)]
+ [Comment("Связанная сущность")]
+ public int EntityId { get; set; }
+
+ ///
+ /// Отображаемое имя источника.
+ ///
+ [Column(Order = 3)]
+ [MaxLength(Pf2eDbContext.NameLength)]
+ [Comment("Алиас")]
+ public string Name { get; set; } = null!;
+
+ ///
+ /// Связанная
+ ///
+ public Entity Entity { get; set; } = null!;
+}
diff --git a/Pf2eModel/Model/Base/Legacy/LegacyEntity.cs b/Pf2eModel/Model/Base/Legacy/LegacyEntity.cs
deleted file mode 100644
index af1251a..0000000
--- a/Pf2eModel/Model/Base/Legacy/LegacyEntity.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Microsoft.EntityFrameworkCore;
-using Pf2eModel.Model.Common.I18n;
-
-namespace Pf2eModel.Model.Base.Legacy;
-
-///
-/// Информация об устаревшей сущности
-///
-public class LegacyEntity
-{
- ///
- /// Идентификатор сущности.
- ///
- [Key]
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- [Column(Order = 1)]
- public int Id { get; set; }
-
- ///
- /// Отображаемое имя сущности.
- ///
- [Column(Order = 2)]
- [Comment("Отображаемое имя")]
- public LocaleString Name { get; set; } = [];
-
- ///
- /// Коллекция обновлённых сущностей.
- ///
- public ICollection RemasterEntities { get; set; } = [];
-
- ///
- /// Коллекция источников, связанных с сущностью.
- ///
- public ICollection Sources { get; set; } = [];
-
- ///
- /// Коллекция внешних ссылок, связанных с сущностью.
- ///
- public ICollection Externals { get; set; } = [];
-}
diff --git a/Pf2eModel/Model/Base/Legacy/LegacyEntityExternal.cs b/Pf2eModel/Model/Base/Legacy/LegacyEntityExternal.cs
deleted file mode 100644
index 962635d..0000000
--- a/Pf2eModel/Model/Base/Legacy/LegacyEntityExternal.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Microsoft.EntityFrameworkCore;
-using Pf2eModel.Model.Base.Targets;
-
-namespace Pf2eModel.Model.Base.Legacy;
-
-///
-/// Внешняя ссылка сущности.
-///
-[PrimaryKey(nameof(LegacyEntityId), nameof(TargetId))]
-public class LegacyEntityExternal
-{
- ///
- /// Идентификатор сущности.
- ///
- [Column(Order = 1)]
- [Comment("Идентификатор сущности")]
- public int LegacyEntityId { get; set; }
-
- ///
- /// Идентификатор цели.
- ///
- [Column(Order = 2)]
- [Comment("Идентификатор цели")]
- public int TargetId { get; set; }
-
- [Column(Order = 3)]
- [MaxLength(255)]
- public string? ExternalId { get; set; } = null;
-
- ///
- /// Конечная часть URL внешней ссылки.
- /// Для источников Foundry - полный UUID объекта.
- ///
- [Column(Order = 4)]
- [MaxLength(255)]
- [Comment("Часть URL до объекта. Для источников Foundry - полный UUID объекта")]
- public string Suffix { get; set; } = "";
-
- ///
- /// Контрольная сумма объекта.
- ///
- [Column(Order = 5)]
- [MaxLength(32)]
- [Comment("Контрольная сумма объекта")]
- public string Md5 { get; set; } = null!;
-
- ///
- /// Сущность, которая ссылается на внешнюю ссылку.
- ///
- public LegacyEntity LegacyEntity { get; set; } = null!;
-
- ///
- /// Цель внешней ссылки.
- ///
- public ExternalTarget Target { get; set; } = null!;
-}
diff --git a/Pf2eModel/Model/Base/Legacy/LegacyEntitySource.cs b/Pf2eModel/Model/Base/Legacy/LegacyEntitySource.cs
deleted file mode 100644
index a3d959d..0000000
--- a/Pf2eModel/Model/Base/Legacy/LegacyEntitySource.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Microsoft.EntityFrameworkCore;
-
-namespace Pf2eModel.Model.Base.Legacy;
-
-///
-/// Связь между сущностью и источником.
-///
-public class LegacyEntitySource
-{
- ///
- /// Идентификатор связи.
- ///
- [Key]
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- [Column(Order = 0)]
- [Comment("Идентификатор")]
- public int Id { get; set; }
-
- ///
- /// Идентификатор устаревшей сущности.
- ///
- [Column(Order = 1)]
- [Comment("Идентификатор устаревшей сущности")]
- public int LegacyEntityId { get; set; }
-
- ///
- /// Идентификатор источника.
- ///
- [Column(Order = 2)]
- [Comment("Идентификатор источника")]
- 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 LegacyEntity LegacyEntity { get; set; } = null!;
-
- ///
- /// Источник, к которому относится сущность.
- ///
- public Source.Source Source { get; set; } = null!;
-}
diff --git a/Pf2eModel/Model/Base/LegacyRemaster.cs b/Pf2eModel/Model/Base/LegacyRemaster.cs
new file mode 100644
index 0000000..c41db87
--- /dev/null
+++ b/Pf2eModel/Model/Base/LegacyRemaster.cs
@@ -0,0 +1,35 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Pf2eModel.Model.Base;
+
+///
+/// Связь устаревших и обновлённых сущностей
+///
+[PrimaryKey(nameof(LegacyId), nameof(RemasterId))]
+public class LegacyRemaster
+{
+ ///
+ /// Идентификатор устаревшей сущности.
+ ///
+ [Column(Order = 1)]
+ [Comment("Идентификатор сущности")]
+ public int LegacyId { get; set; }
+
+ ///
+ /// Идентификатор обновлённой сущности.
+ ///
+ [Column(Order = 2)]
+ [Comment("Идентификатор цели")]
+ public int RemasterId { get; set; }
+
+ ///
+ /// Устаревшая сущность.
+ ///
+ public Entity LegacyEntity { get; set; } = null!;
+
+ ///
+ /// Обновлённая сущность.
+ ///
+ public Entity RemasterEntity { get; set; } = null!;
+}
diff --git a/Pf2eModel/Model/Base/Source/Source.cs b/Pf2eModel/Model/Base/Source/Source.cs
index 6a88179..7f098f1 100644
--- a/Pf2eModel/Model/Base/Source/Source.cs
+++ b/Pf2eModel/Model/Base/Source/Source.cs
@@ -1,7 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
-using Pf2eModel.Model.Base.Legacy;
using Pf2eModel.Model.Enum;
namespace Pf2eModel.Model.Base.Source;
@@ -46,9 +45,4 @@ public class Source
/// Связанные сущности.
///
public ICollection EntitySources { get; set; } = [];
-
- ///
- /// Связанные сущности.
- ///
- public ICollection LegacyEntitySources { get; set; } = [];
}
diff --git a/Pf2eModel/Model/Base/Targets/ExternalTarget.cs b/Pf2eModel/Model/Base/Targets/ExternalTarget.cs
index 6602b5b..44b74bb 100644
--- a/Pf2eModel/Model/Base/Targets/ExternalTarget.cs
+++ b/Pf2eModel/Model/Base/Targets/ExternalTarget.cs
@@ -1,7 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
-using Pf2eModel.Model.Base.Legacy;
namespace Pf2eModel.Model.Base.Targets;
@@ -47,9 +46,4 @@ public class ExternalTarget
/// Коллекция сущностей, которые ссылаются на эту цель.
///
public ICollection EntityExternals { get; set; } = [];
-
- ///
- /// Коллекция устаревших сущностей, которые ссылаются на эту цель.
- ///
- public ICollection LegacyEntityExternals { get; set; } = [];
}
diff --git a/Pf2eModel/Pf2eDbContext.cs b/Pf2eModel/Pf2eDbContext.cs
index 0d49ace..2adc7be 100644
--- a/Pf2eModel/Pf2eDbContext.cs
+++ b/Pf2eModel/Pf2eDbContext.cs
@@ -3,7 +3,6 @@ using dotenv.net.Utilities;
using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Base.Keywords;
-using Pf2eModel.Model.Base.Legacy;
using Pf2eModel.Model.Base.Source;
using Pf2eModel.Model.Base.Targets;
using Pf2eModel.Model.Common;
@@ -78,6 +77,8 @@ public partial class Pf2eDbContext : DbContext
public virtual DbSet Entities { get; set; }
+ public virtual DbSet EntityAliases { get; set; }
+
public virtual DbSet EntityExternals { get; set; }
public virtual DbSet EntitySources { get; set; }
@@ -98,11 +99,7 @@ public partial class Pf2eDbContext : DbContext
public virtual DbSet Languages { get; set; }
- public virtual DbSet LegacyEntities { get; set; }
-
- public virtual DbSet LegacyEntityExternals { get; set; }
-
- public virtual DbSet LegacyEntitySources { get; set; }
+ public virtual DbSet LegacyRemasters { get; set; }
public virtual DbSet Rituals { get; set; }
diff --git a/Pf2eModel/Pf2eDbContextModel.cs b/Pf2eModel/Pf2eDbContextModel.cs
index 0d53019..1905681 100644
--- a/Pf2eModel/Pf2eDbContextModel.cs
+++ b/Pf2eModel/Pf2eDbContextModel.cs
@@ -6,7 +6,6 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Pf2eModel.Model;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Base.Keywords;
-using Pf2eModel.Model.Base.Legacy;
using Pf2eModel.Model.Base.Source;
using Pf2eModel.Model.Base.Targets;
using Pf2eModel.Model.Common;
@@ -98,6 +97,13 @@ public partial class Pf2eDbContext
entity.HasMany(e => e.Keywords).WithMany(t => t.Entities);
+ // EntityAliases
+ entity
+ .HasMany(e => e.Aliases)
+ .WithOne(a => a.Entity)
+ .HasForeignKey(a => a.EntityId)
+ .OnDelete(DeleteBehavior.Cascade);
+
// EntitySource
entity
.HasMany(e => e.Sources)
@@ -111,28 +117,19 @@ public partial class Pf2eDbContext
.WithOne(e => e.Entity)
.HasForeignKey(e => e.EntityId)
.OnDelete(DeleteBehavior.Cascade);
- });
- // LegacyEntity
- modelBuilder.Entity(entity =>
- {
- BindLocaleString(entity, l => l.Name);
-
- entity.HasMany(l => l.RemasterEntities).WithMany(e => e.LegacyEntities);
-
- // LegacyEntitySource
+ // LegacyRemaster
entity
- .HasMany(e => e.Sources)
- .WithOne(e => e.LegacyEntity)
- .HasForeignKey(e => e.LegacyEntityId)
- .OnDelete(DeleteBehavior.Cascade);
-
- // LegacyEntityExternal
- entity
- .HasMany(e => e.Externals)
- .WithOne(e => e.LegacyEntity)
- .HasForeignKey(e => e.LegacyEntityId)
- .OnDelete(DeleteBehavior.Cascade);
+ .HasMany(e => e.LegacyEntities)
+ .WithMany(e => e.RemasterEntities)
+ .UsingEntity(
+ //l =>
+ // l.HasOne(lr => lr.LegacyEntity).WithMany().HasForeignKey(lr => lr.LegacyId),
+ //r =>
+ // r.HasOne(lr => lr.RemasterEntity)
+ // .WithMany()
+ // .HasForeignKey(lr => lr.RemasterId)
+ );
});
// Source
@@ -146,12 +143,6 @@ public partial class Pf2eDbContext
.HasForeignKey(e => e.SourceId)
.OnDelete(DeleteBehavior.Cascade);
- entity
- .HasMany(s => s.LegacyEntitySources)
- .WithOne(e => e.Source)
- .HasForeignKey(e => e.SourceId)
- .OnDelete(DeleteBehavior.Cascade);
-
// + EntitySource
});
modelBuilder.Entity(entity => { });
@@ -164,12 +155,6 @@ public partial class Pf2eDbContext
.WithOne(e => e.Target)
.HasForeignKey(e => e.TargetId)
.OnDelete(DeleteBehavior.Cascade);
-
- entity
- .HasMany(t => t.LegacyEntityExternals)
- .WithOne(e => e.Target)
- .HasForeignKey(e => e.TargetId)
- .OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity(entity => { });