feat(backend): add member delete endpoint
This commit is contained in:
parent
a069d0ff15
commit
2b91723696
2 changed files with 46 additions and 1 deletions
|
@ -6,6 +6,7 @@ using Foxnouns.Backend.Middleware;
|
|||
using Foxnouns.Backend.Services;
|
||||
using Foxnouns.Backend.Utils;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Foxnouns.Backend.Controllers;
|
||||
|
||||
|
@ -14,7 +15,8 @@ public class MembersController(
|
|||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
MemberRendererService memberRendererService,
|
||||
ISnowflakeGenerator snowflakeGenerator) : ApiControllerBase
|
||||
ISnowflakeGenerator snowflakeGenerator,
|
||||
AvatarUpdateJob avatarUpdate) : ApiControllerBase
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<MembersController>();
|
||||
|
||||
|
@ -74,5 +76,24 @@ public class MembersController(
|
|||
return Ok(memberRendererService.RenderMember(member, CurrentToken));
|
||||
}
|
||||
|
||||
[HttpDelete("/api/v2/users/@me/members/{memberRef}")]
|
||||
[Authorize("member.update")]
|
||||
public async Task<IActionResult> DeleteMemberAsync(string memberRef)
|
||||
{
|
||||
var member = await db.ResolveMemberAsync(CurrentUser!.Id, memberRef);
|
||||
var deleteCount = await db.Members.Where(m => m.UserId == CurrentUser!.Id && m.Id == member.Id)
|
||||
.ExecuteDeleteAsync();
|
||||
if (deleteCount == 0)
|
||||
{
|
||||
_logger.Warning("Successfully resolved member {Id} but could not delete them", member.Id);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
if (member.Avatar != null) await avatarUpdate.DeleteMemberAvatar(member.Id, member.Avatar);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
public record CreateMemberRequest(string Name, string? DisplayName, string? Bio, string? Avatar, bool? Unlisted);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue