Add ActionRecord DTO

Include all Data in ActionRecord return
Add endpoints for returning actions related to manga and chapter
Fix wrong syncs for ActionsContext
This commit is contained in:
2025-10-16 20:08:07 +02:00
parent 6561ba3bc3
commit d029512354
9 changed files with 198 additions and 23 deletions

View File

@@ -0,0 +1,41 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
using API.Schema.ActionsContext.Actions;
using API.Schema.ActionsContext.Actions.Generic;
namespace API.Controllers.DTOs;
public sealed record ActionRecord : Identifiable
{
public ActionRecord(Schema.ActionsContext.ActionRecord actionRecord) : base(actionRecord.Key)
{
Action = actionRecord.Action;
PerformedAt = actionRecord.PerformedAt;
MangaId = actionRecord is ActionWithMangaRecord m ? m.MangaId : null;
ChapterId = actionRecord is ActionWithChapterRecord c ? c.ChapterId : null;
}
/// <summary>
/// <inheritdoc cref="Schema.ActionsContext.ActionRecord.Action" />
/// </summary>
[Required]
public ActionsEnum Action { get; init; }
/// <summary>
/// <inheritdoc cref="Schema.ActionsContext.ActionRecord.PerformedAt" />
/// </summary>
[Required]
public DateTime PerformedAt { get; init; }
/// <summary>
/// MangaId if Record is <see cref="ActionWithMangaRecord"/>
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? MangaId { get; init; }
/// <summary>
/// ChapterId if Record is <see cref="ActionWithMangaRecord"/>
/// </summary>
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? ChapterId { get; init; }
}