feat(backend): initial /api/v1/users endpoint

This commit is contained in:
sam 2024-12-25 11:19:50 -05:00
parent 5e7df2e074
commit 7791c91960
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
20 changed files with 385 additions and 4 deletions

View file

@ -22,6 +22,7 @@ using Foxnouns.Backend.Services;
using Foxnouns.Backend.Utils;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using XidNet;
namespace Foxnouns.Backend.Controllers;
@ -64,6 +65,7 @@ public class FlagsController(
var flag = new PrideFlag
{
Id = snowflakeGenerator.GenerateSnowflake(),
LegacyId = Xid.NewXid().ToString(),
UserId = CurrentUser!.Id,
Name = req.Name,
Description = req.Description,

View file

@ -26,6 +26,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using NodaTime;
using XidNet;
namespace Foxnouns.Backend.Controllers;
@ -101,6 +102,7 @@ public class MembersController(
var member = new Member
{
Id = snowflakeGenerator.GenerateSnowflake(),
LegacyId = Xid.NewXid().ToString(),
User = CurrentUser!,
Name = req.Name,
DisplayName = req.DisplayName,

View file

@ -222,7 +222,7 @@ public class UsersController(
.CustomPreferences.Where(x => req.Any(r => r.Id == x.Key))
.ToDictionary();
foreach (CustomPreferenceUpdateRequest? r in req)
foreach (CustomPreferenceUpdateRequest r in req)
{
if (r.Id != null && preferences.ContainsKey(r.Id.Value))
{
@ -233,6 +233,7 @@ public class UsersController(
Muted = r.Muted,
Size = r.Size,
Tooltip = r.Tooltip,
LegacyId = preferences[r.Id.Value].LegacyId,
};
}
else
@ -244,6 +245,7 @@ public class UsersController(
Muted = r.Muted,
Size = r.Size,
Tooltip = r.Tooltip,
LegacyId = Guid.NewGuid(),
};
}
}

View file

@ -0,0 +1,16 @@
using Foxnouns.Backend.Database.Models;
using Foxnouns.Backend.Services.V1;
using Microsoft.AspNetCore.Mvc;
namespace Foxnouns.Backend.Controllers.V1;
[Route("/api/v1/users")]
public class UsersV1Controller(UsersV1Service usersV1Service) : ApiControllerBase
{
[HttpGet("{userRef}")]
public async Task<IActionResult> GetUserAsync(string userRef, CancellationToken ct = default)
{
User user = await usersV1Service.ResolveUserAsync(userRef, CurrentToken, ct);
return Ok(await usersV1Service.RenderUserAsync(user));
}
}