feat(emblem): /emblem/emblem_list returns owned ids
This commit is contained in:
39
SVSim.EmulatedEntrypoint/Controllers/EmblemController.cs
Normal file
39
SVSim.EmulatedEntrypoint/Controllers/EmblemController.cs
Normal 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(),
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user