using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Spacebar.AdminApi.Extensions; using Spacebar.Models.AdminApi; using Spacebar.AdminApi.Services; using Spacebar.Models.Db.Contexts; using Spacebar.Models.Db.Models; namespace Spacebar.AdminApi.Controllers.Media; [ApiController] [Route("/media/user")] public class UserMediaController(ILogger logger, SpacebarDbContext db, AuthenticationService auth, IServiceProvider sp) : ControllerBase { [HttpGet("{userId}/attachments")] public async IAsyncEnumerable GetAttachmentsByUser(string userId) { (await auth.GetCurrentUser(Request)).GetRights().AssertHasAllRights(SpacebarRights.Rights.OPERATOR); var db2 = sp.CreateScope().ServiceProvider.GetService(); var attachments = db.Attachments // .IgnoreAutoIncludes() .Where(x => x.Message!.AuthorId == userId) .AsAsyncEnumerable(); await foreach (var attachment in attachments) { attachment.Message = await db2.Messages.FindAsync(attachment.MessageId); // attachment.Message.Author = await db2.Users.FindAsync(attachment.Message.AuthorId); yield return attachment; } } }