Отказ от прямой работы с БД в обработчиках и переход на EF
This commit is contained in:
-24
@@ -1,24 +0,0 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using Slugify;
|
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder
|
|
||||||
{
|
|
||||||
internal abstract class AbstractEntityProcessor(JObject input) : AbstractProcessor(input)
|
|
||||||
{
|
|
||||||
public abstract string DbType { get; }
|
|
||||||
|
|
||||||
public override void Process()
|
|
||||||
{
|
|
||||||
Add("name", "name");
|
|
||||||
Add("img", "img");
|
|
||||||
Add("description", "system.description.value");
|
|
||||||
Add("description_gm", "system.description.gm");
|
|
||||||
Add("type", DbType);
|
|
||||||
Add("rarity", "system.traits.rarity");
|
|
||||||
|
|
||||||
SlugHelper sh = new();
|
|
||||||
Data.Add("slug", sh.GenerateSlug(Data["name"]?.ToString() ?? throw new NullReferenceException("'name' is null")));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+30
-17
@@ -1,30 +1,43 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using LinqToDB.DataProvider.SapHana;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using Npgsql;
|
using Npgsql;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder
|
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder
|
||||||
{
|
{
|
||||||
internal abstract class AbstractProcessor(JObject input)
|
internal abstract class AbstractProcessor(JObject input)
|
||||||
{
|
{
|
||||||
|
public readonly Pf2eTestContext Context = new();
|
||||||
|
|
||||||
public readonly JObject Input = input;
|
public readonly JObject Input = input;
|
||||||
|
|
||||||
public Pf2eDatabase Database = Pf2eDatabase.Instance;
|
|
||||||
|
|
||||||
public DataBuilderHelper Helper = DataBuilderHelper.Instance;
|
|
||||||
|
|
||||||
public abstract string Table { get; }
|
|
||||||
|
|
||||||
public Dictionary<string, object?> Data = [];
|
|
||||||
|
|
||||||
protected void Add(string key, string path)
|
|
||||||
{
|
|
||||||
Data.Add(key, DataBuilderHelper.JsonGet(Input, path));
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void Process();
|
public abstract void Process();
|
||||||
|
|
||||||
public int Save()
|
public void Save()
|
||||||
{
|
{
|
||||||
return Helper.Insert(Table, Data);
|
Context.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected T GetRequired<T>(string path)
|
||||||
|
{
|
||||||
|
var token = Input.SelectToken(path) ?? throw new NullReferenceException($"'{path}' is null");
|
||||||
|
|
||||||
|
return token.ToObject<T>() ?? throw new NullReferenceException($"'{path}' is null");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected T? GetOptional<T>(string path)
|
||||||
|
{
|
||||||
|
var token = Input.SelectToken(path) ?? null;
|
||||||
|
|
||||||
|
if (token is null)
|
||||||
|
{
|
||||||
|
return default!;
|
||||||
|
}
|
||||||
|
|
||||||
|
return token.ToObject<T>() ?? default;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-10
@@ -1,20 +1,15 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using Pf2eDataScrapper.Model;
|
||||||
|
using Slugify;
|
||||||
|
using static LinqToDB.Common.Configuration;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder.Processors
|
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder.Processors
|
||||||
{
|
{
|
||||||
[Pf2eTypeProcessor("Item.condition")]
|
[Pf2eTypeProcessor("Item.condition")]
|
||||||
internal class ConditionProcessor(JObject input) : AbstractEntityProcessor(input)
|
internal class ConditionProcessor(JObject input) : AbstractProcessor(input)
|
||||||
{
|
{
|
||||||
public override string Table => "condition";
|
|
||||||
|
|
||||||
public override string DbType => "condition";
|
|
||||||
|
|
||||||
public override void Process()
|
public override void Process()
|
||||||
{
|
{
|
||||||
base.Process();
|
|
||||||
|
|
||||||
Add("group", "system.group");
|
|
||||||
|
|
||||||
JObject extra = new()
|
JObject extra = new()
|
||||||
{
|
{
|
||||||
{ "duration", Input.SelectToken("duration") },
|
{ "duration", Input.SelectToken("duration") },
|
||||||
@@ -23,7 +18,22 @@ namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.DataBuilder.Pro
|
|||||||
{ "value", Input.SelectToken("value") }
|
{ "value", Input.SelectToken("value") }
|
||||||
};
|
};
|
||||||
|
|
||||||
Data.Add("extra", extra.ToString(Newtonsoft.Json.Formatting.Indented));
|
Condition condition = new()
|
||||||
|
{
|
||||||
|
Name = GetRequired<string>("name"),
|
||||||
|
Img = GetRequired<string>("img"),
|
||||||
|
Description = GetRequired<string>("system.description.value"),
|
||||||
|
DescriptionGm = GetOptional<string>("system.description.gm"),
|
||||||
|
// Type =
|
||||||
|
IsTranslated = false,
|
||||||
|
IsChecked = false,
|
||||||
|
|
||||||
|
// Group = GetOptional<string>("system.group");
|
||||||
|
Extra = extra.ToString(Newtonsoft.Json.Formatting.Indented)
|
||||||
|
};
|
||||||
|
condition.Slug = new SlugHelper().GenerateSlug(condition.Name);
|
||||||
|
|
||||||
|
Context.Conditions.Add(condition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user