feat(emblem): /emblem/emblem_list returns owned ids

This commit is contained in:
gamer147
2026-06-13 08:14:36 -04:00
parent c5c61b6e9d
commit 921297227e
4 changed files with 112 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using SVSim.Database;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
using SVSim.EmulatedEntrypoint.Models.Dtos.Responses.Emblem;
namespace SVSim.EmulatedEntrypoint.Controllers;
/// <summary>
/// /emblem/* — viewer-scoped emblem (lobby/profile badge) management. Read, mark-favorite,
/// set-currently-displayed. Mirrors /sleeve/* and /degree/*.
/// </summary>
[Route("emblem")]
public class EmblemController : SVSimController
{
private readonly SVSimDbContext _db;
public EmblemController(SVSimDbContext db) => _db = db;
[HttpPost("emblem_list")]
public async Task<ActionResult<EmblemListResponse>> EmblemList(BaseRequest _, CancellationToken ct)
{
if (!TryGetViewerId(out long viewerId)) return Unauthorized();
var viewer = await _db.Viewers
.Include(v => v.Emblems)
.FirstOrDefaultAsync(v => v.Id == viewerId, ct);
if (viewer is null) return Unauthorized();
return new EmblemListResponse
{
UserEmblemList = viewer.Emblems
.Select(e => new EmblemListEntry { EmblemId = e.Id })
.OrderBy(x => x.EmblemId)
.ToList(),
};
}
}