diff --git a/Pf2eDataScrapper/Importers/AbstractCompendium.cs b/Pf2eDataScrapper/Importers/AbstractCompendium.cs
index 96818ef..dc1108e 100644
--- a/Pf2eDataScrapper/Importers/AbstractCompendium.cs
+++ b/Pf2eDataScrapper/Importers/AbstractCompendium.cs
@@ -18,25 +18,19 @@ internal abstract class AbstractCompendium
///
public string Dir => Repository.RepositoryDirPath;
- ///
- /// Возвращает количество элементов в компендиуме.
- ///
- /// Количество элементов.
- public abstract int Count();
-
///
/// Возвращает количество элементов для указанного типа данных.
///
- /// Тип данных.
+ /// Типы данных.
/// Количество элементов.
- public abstract int Count(string type);
+ public abstract int Count(params ICollection type);
///
/// Получение итератора сущностей. Если указан тип - то только указанного типа.
///
- /// Тип сущностей, которые нужно получить.
+ /// Типы сущностей, которые нужно получить.
/// Итератор сущностей.
public abstract IEnumerable> Iterate(
- string? type = null
+ params ICollection type
);
}
diff --git a/Pf2eDataScrapper/Importers/AbstractImporter.cs b/Pf2eDataScrapper/Importers/AbstractImporter.cs
index 8c35683..1fc79f9 100644
--- a/Pf2eDataScrapper/Importers/AbstractImporter.cs
+++ b/Pf2eDataScrapper/Importers/AbstractImporter.cs
@@ -1,4 +1,6 @@
-namespace Pf2eDataScrapper.Importers;
+using System.IO;
+
+namespace Pf2eDataScrapper.Importers;
///
/// Абстрактный класс импортёра.
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs
index c5b523b..ccb52cd 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs
@@ -1,4 +1,6 @@
-using Newtonsoft.Json.Linq;
+using System.IO;
+using System.Net.Http;
+using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Repositories;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs
index 24adc29..9ee710d 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs
@@ -1,4 +1,5 @@
using System.Collections.Concurrent;
+using System.IO;
using Newtonsoft.Json.Linq;
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
@@ -8,6 +9,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
///
internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCompendium
{
+ ///
public override AonprdRepository Repository { get; } = repository;
///
@@ -15,29 +17,22 @@ internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCo
///
public ConcurrentBag Items { get; } = [];
- ///
- /// Возвращает количество элементов в компендиуме.
- ///
- /// Количество элементов.
- public override int Count() => Items.Count;
+ ///
+ public override int Count(params ICollection types) =>
+ types.Count == 0 ? Items.Count : Items.Count(i => types.Contains(i.Type));
- ///
- /// Возвращает количество элементов для указанного типа данных.
- ///
- /// Тип данных.
- /// Количество элементов.
- public override int Count(string type) => Items.Count(i => i.Type == type);
-
- ///
- /// Получение итератора сущностей. Если указан тип - то только указанного типа.
- ///
- /// Тип сущностей, которые нужно получить.
- /// Итератор сущностей.
- public override IEnumerable> Iterate(string? type = null)
+ ///
+ public override IEnumerable> Iterate(
+ params ICollection types
+ )
{
- IEnumerable files = type is null
- ? Items.Select(t => t.File).Distinct()
- : Items.Where(t => t.Type == type).Select(t => t.File).Distinct();
+ IEnumerable files =
+ types.Count == 0
+ ? Items.Select(item => item.File).Distinct()
+ : Items
+ .Where(item => types.Contains(item.Type))
+ .Select(item => item.File)
+ .Distinct();
foreach (string file in files)
{
@@ -57,16 +52,12 @@ internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCo
if (
id is null
|| !fileReferences.TryGetValue(id, out AonprdCompendiumItem? reference)
+ || !types.Contains(reference.Type)
)
{
continue;
}
- if (type is not null && reference.Type != type)
- {
- continue;
- }
-
yield return new(reference, (JObject)item);
}
}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs
index 6ab17bc..84b3a64 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs
@@ -1,4 +1,5 @@
-using Pf2eModel.Model.Base.Source;
+using System.IO;
+using Pf2eModel.Model.Base.Source;
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs
index d5a9479..001f71e 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs
@@ -46,7 +46,7 @@ internal class LegacyRemasterProcessors(ProcessorInput input) : AbstractInputPro
return Context
.EntityExternals.AsNoTracking()
- .Where(x => aonprdIds.Contains(x.ExternalId))
+ .Where(x => aonprdIds.Contains(x.ExternalId!))
.Select(x => x.EntityId)
.ToList();
}
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs
index 09e1885..57c53d9 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json.Linq;
+using System.IO;
+using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.App;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs
index 33ef7d2..6de832c 100644
--- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs
@@ -1,4 +1,5 @@
-using Pf2eDataScrapper.App;
+using System.IO;
+using Pf2eDataScrapper.App;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
using Pf2eDataScrapper.SchemaBuilder;
diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Compendium/FoundryEnCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Compendium/FoundryEnCompendium.cs
new file mode 100644
index 0000000..15e3103
--- /dev/null
+++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Compendium/FoundryEnCompendium.cs
@@ -0,0 +1,51 @@
+using System.Collections.Concurrent;
+using System.IO;
+using Newtonsoft.Json.Linq;
+
+namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
+
+///
+/// Загрузчик данных компендиума.
+///
+/// Репозиторий данных.
+internal sealed class FoundryEnCompendium(
+ FoundryEnRepository repository,
+ CompendiumFolderCollection folders
+) : AbstractCompendium
+{
+ ///
+ public override FoundryEnRepository Repository { get; } = repository;
+
+ ///
+ /// Набор папок компендиума
+ ///
+ public CompendiumFolderCollection Folders { get; } = folders;
+
+ ///
+ /// Коллекция всех записей компендиума.
+ ///
+ public ConcurrentBag Items { get; } = [];
+
+ ///
+ public override int Count(params ICollection types) =>
+ types.Count == 0 ? Items.Count : Items.Count(i => types.Contains(i.Type));
+
+ ///
+ public override IEnumerable> Iterate(
+ params ICollection types
+ )
+ {
+ foreach (
+ FoundryEnCompendiumItem item in types.Count == 0
+ ? Items
+ : Items.Where(i => types.Contains(i.Type))
+ )
+ {
+ using StreamReader fileReader = new(
+ Path.Combine(Repository.RepositoryDirPath, item.File)
+ );
+
+ yield return new(item, JObject.Parse(fileReader.ReadToEnd()));
+ }
+ }
+}
diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/FoundryEnCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/FoundryEnCompendium.cs
deleted file mode 100644
index 6341c0c..0000000
--- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/FoundryEnCompendium.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using System.Collections.Concurrent;
-using Newtonsoft.Json.Linq;
-using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
-
-namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn;
-
-///
-/// Загрузчик данных компендиума.
-///
-/// Репозиторий данных.
-internal sealed class FoundryEnCompendium(
- FoundryEnRepository repository,
- CompendiumFolderCollection folders
-) : AbstractCompendium
-{
- ///
- /// Репозиторий данных.
- ///
- public override FoundryEnRepository Repository { get; } = repository;
-
- ///
- /// Набор папок компендиума
- ///
- public CompendiumFolderCollection Folders { get; } = folders;
-
- ///
- /// Коллекция всех записей компендиума.
- ///
- public ConcurrentBag Items { get; } = [];
-
- ///
- /// Возвращает количество элементов в компендиуме.
- ///
- /// Количество элементов.
- public override int Count() => Items.Count;
-
- ///
- /// Возвращает количество элементов для указанного типа данных.
- ///
- /// Тип данных.
- /// Количество элементов.
- public override int Count(string type) => Items.Count(i => i.Type == type);
-
- ///
- /// Получение итератора сущностей. Если указан тип - то только указанного типа.
- ///
- /// Тип сущностей, которые нужно получить.
- /// Итератор сущностей.
- public override IEnumerable> Iterate(string? type = null)
- {
- IEnumerable items = type is null
- ? Items
- : Items.Where(i => i.Type == type);
-
- foreach (FoundryEnCompendiumItem item in items)
- {
- using StreamReader fileReader = new(
- Path.Combine(Repository.RepositoryDirPath, item.File)
- );
-
- yield return new(item, JObject.Parse(fileReader.ReadToEnd()));
- }
- }
-}
diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs
index c073400..74a8e3c 100644
--- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json.Linq;
+using System.IO;
+using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.App;
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
using Pf2eDataScrapper.Processors;
diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs
index 7fd6260..ac5a0e3 100644
--- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json.Linq;
+using System.IO;
+using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.App;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs
index 905ea16..84adc47 100644
--- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs
+++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs
@@ -1,5 +1,7 @@
-using Pf2eDataScrapper.App;
+using System.IO;
+using Pf2eDataScrapper.App;
using Pf2eDataScrapper.Helpers;
+using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
using Pf2eDataScrapper.SchemaBuilder;
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
diff --git a/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs b/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs
index ce3682f..b05659f 100644
--- a/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs
+++ b/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs
@@ -1,4 +1,5 @@
-using Pf2eDataScrapper.Helpers;
+using System.IO;
+using Pf2eDataScrapper.Helpers;
namespace Pf2eDataScrapper.Importers.Repositories;
diff --git a/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs b/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs
index a63b640..1fa47af 100644
--- a/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs
+++ b/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs
@@ -1,4 +1,5 @@
using System.Diagnostics;
+using System.IO;
using Pf2eDataScrapper.Helpers;
namespace Pf2eDataScrapper.Importers.Repositories;