feat(backend): report detail endpoint

This commit is contained in:
sam 2025-01-27 16:25:49 +01:00
parent 8edbc8bf1d
commit 045964ffb7
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
2 changed files with 35 additions and 0 deletions

View file

@ -220,7 +220,36 @@ public class ReportsController(
return Ok(reports.Select(moderationRenderer.RenderReport));
}
[HttpGet("reports/{id}")]
[Authorize("user.moderation")]
[Limit(RequireModerator = true)]
public async Task<IActionResult> GetReportAsync(Snowflake id, CancellationToken ct = default)
{
Report? report = await db
.Reports.Include(r => r.Reporter)
.Include(r => r.TargetUser)
.Include(r => r.TargetMember)
.FirstOrDefaultAsync(r => r.Id == id, ct);
if (report == null)
throw new ApiError.NotFound("No report with that ID found.");
return Ok(
new ReportDetailResponse(
Report: moderationRenderer.RenderReport(report),
User: await userRenderer.RenderUserAsync(
report.TargetUser,
renderMembers: false,
ct: ct
),
Member: report.TargetMember != null
? memberRenderer.RenderMember(report.TargetMember)
: null
)
);
}
[HttpPost("reports/{id}/ignore")]
[Authorize("user.moderation")]
[Limit(RequireModerator = true)]
public async Task<IActionResult> IgnoreReportAsync(
Snowflake id,

View file

@ -35,6 +35,12 @@ public record ReportResponse(
JObject? Snapshot
);
public record ReportDetailResponse(
ReportResponse Report,
UserResponse User,
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] MemberResponse? Member
);
public record AuditLogResponse(
Snowflake Id,
AuditLogEntity Moderator,