Сериализация сущностей для отображения в веб-интерфейсе

This commit is contained in:
2025-10-06 15:43:38 +04:00
parent 7e32280093
commit 1300f31234
4 changed files with 298 additions and 73 deletions
+21 -35
View File
@@ -5,60 +5,46 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using Pf2e.Common;
using Pf2e.Database;
using Pf2e.Database.Model;
using Pf2e.Database.Model.Base;
using Pf2e.Database.Model.Enum;
using Pf2e.Database.Model.Structure;
using Pf2e.Web.Helpers;
namespace Pf2e.Web.Pages
{
public class EntityModel : PageModel
public class EntityModel(Pf2eDbContext context) : PageModel
{
private readonly Pf2e.Database.Pf2eDbContext _context;
private readonly Pf2eDbContext _context = context;
public EntityModel(Pf2e.Database.Pf2eDbContext context)
public FullEntity FullEntity { get; set; } = null!;
public EntitySerializer.SerializationResult SerializationResult { get; set; } = null!;
public IActionResult OnGet(string type, string slug)
{
_context = context;
}
// Получаем тип сущности
EntityType entityType = EntityTypeModel.Enum<EntityType>(type);
public IEntity Entity;
// Находим сущность по slug и типу
Entity? entity = _context.Entities.FirstOrDefault(e =>
e.Slug == slug && e.Type == entityType
);
public Dictionary<string, string> Fields = [];
public Dictionary<string, List<Entity>> References = [];
public async Task<IActionResult> OnGetAsync(string type, string slug)
{
Entity entity =
_context
.Entities.Where(e =>
e.Slug == slug && e.Type == EntityTypeModel.Enum<EntityType>(type)
)
.Include(e => e.Sources)
.ThenInclude(s => s.Source)
.Include(e => e.Keywords)
.Include(e => e.Externals)
.ThenInclude(x => x.Target)
.Include(e => e.Traits)
.ThenInclude(t => t.Entity)
.FirstOrDefault() ?? throw new("Entity is null");
/*
if (id == null)
if (entity == null)
{
return NotFound();
}
var class = await _context.Classes.FirstOrDefaultAsync(m => m.Id == id);
// Создаём FullEntity
FullEntity = new(_context, entity);
if (class is not null)
{
Class = class;
// Сериализуем для отображения
EntitySerializer serializer = new();
SerializationResult = serializer.Serialize(FullEntity);
return Page();
}
*/
return NotFound();
return Page();
}
}
}