Новый обработчек связей устаревших и обновлённых сущностей.
This commit is contained in:
@@ -17,6 +17,9 @@ public enum ProcessorGroupEnum
|
||||
[Description("Архивы Нефиса: Подклассы")]
|
||||
AonprdSubclasses,
|
||||
|
||||
[Description("Архивы Нефиса: Завершение")]
|
||||
AonprdFinalization,
|
||||
|
||||
[Description("Foundry EN: Подготовка")]
|
||||
FoundryEnPreparation,
|
||||
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Pf2eDataScrapper.App;
|
||||
using Pf2eDataScrapper.Processors;
|
||||
using Pf2eModel;
|
||||
using Pf2eModel.Model.Base.Targets;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Finalization;
|
||||
|
||||
[ProcessorCollection(
|
||||
"aonprd:legacy-remaster",
|
||||
InnerType = null,
|
||||
CompendiumType = ProcessorCompendiumEnum.Aonprd,
|
||||
Description = "Связь устаревших и обновлённых сущностей",
|
||||
Group = ProcessorGroupEnum.AonprdFinalization,
|
||||
Parallel = true
|
||||
)]
|
||||
internal class LegacyRemasterProcessors(ProcessorInput input) : AbstractInputProcessor(input)
|
||||
{
|
||||
private Pf2eDbContext Context { get; set; } = new();
|
||||
|
||||
public override void Process()
|
||||
{
|
||||
string aonprdId = Input.GetRequired<string>("id");
|
||||
EntityExternal entity =
|
||||
Context.EntityExternals.AsNoTracking().FirstOrDefault(x => x.ExternalId == aonprdId)
|
||||
?? throw new SilentSkipItemException();
|
||||
int entityId = entity.EntityId;
|
||||
|
||||
foreach (int remasterId in GetEntityIds("remaster_id"))
|
||||
{
|
||||
Context.LegacyRemasters.Add(new() { LegacyId = entityId, RemasterId = remasterId });
|
||||
}
|
||||
|
||||
foreach (int legacyId in GetEntityIds("legacy_id"))
|
||||
{
|
||||
Context.LegacyRemasters.Add(new() { LegacyId = legacyId, RemasterId = entityId });
|
||||
}
|
||||
}
|
||||
|
||||
protected List<int> GetEntityIds(string path)
|
||||
{
|
||||
List<string> aonprdIds = (Input.GetOptional<JArray>("path") ?? [])
|
||||
.Select(token => token.ToString())
|
||||
.ToList();
|
||||
|
||||
return Context
|
||||
.EntityExternals.AsNoTracking()
|
||||
.Where(x => aonprdIds.Contains(x.ExternalId))
|
||||
.Select(x => x.EntityId)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public override void Save()
|
||||
{
|
||||
Context.SaveChanges();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -16,7 +16,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types;
|
||||
Description = "Признаки",
|
||||
Group = ProcessorGroupEnum.AonprdEntities
|
||||
)]
|
||||
[ProcessorDependencies(["aonprd:legacy"])]
|
||||
[ProcessorDependencies(["aonprd:external", "aonprd:source"])]
|
||||
internal class TraitProcessor(
|
||||
ProcessorInput input,
|
||||
StringHelper stringHelper,
|
||||
|
||||
Reference in New Issue
Block a user