mirror of
https://github.com/JogmansonReal/Radicade.git
synced 2026-10-26 23:49:02 -07:00
Radicade Public Code
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RadicadeServer.DB;
|
||||
using RadicadeServer.RecNet.Auth;
|
||||
using RadicadeServer.RecNet.Rooms;
|
||||
using RadicadeServer.Radicade.Public;
|
||||
|
||||
namespace RadicadeServer.API.Public
|
||||
{
|
||||
[Route("p/photos")]
|
||||
public class PublicPhotosAPI(RecDBContext db) : Controller
|
||||
{
|
||||
[HttpGet("latest")]
|
||||
public async Task<ActionResult<List<PublicPhotoData>>> GetLatestPhotos([FromQuery] int? amount)
|
||||
{
|
||||
if (!amount.HasValue) amount = 3;
|
||||
if (amount.Value > 6) return BadRequest("Can't go above 6 pictures.");
|
||||
|
||||
var images = await db.Images.AsNoTracking().Where(x => x.Accessibility == RecNet.CDN.SavedImageAccessibility.Public).OrderByDescending(x => x.CreatedAt).Take(amount.Value).ToListAsync();
|
||||
List<PublicPhotoData> converted = new();
|
||||
|
||||
foreach (var image in images)
|
||||
{
|
||||
if (image == null) continue;
|
||||
|
||||
RoomData? roomData = null;
|
||||
Profile? profile = null;
|
||||
int cheers = 0;
|
||||
|
||||
if (image.RoomId.HasValue)
|
||||
roomData = await db.Rooms.AsNoTracking().FirstOrDefaultAsync(x => x.RoomId == image.RoomId && x.Accessibility >= RecNet.Enums.Accessibility.Public);
|
||||
profile = await db.Profiles.AsNoTracking().FirstOrDefaultAsync(x => x.accountId == image.OwnerId);
|
||||
cheers = await db.ImageInteractions.AsNoTracking().Where(x => x.SavedImageId == image.Id).CountAsync();
|
||||
|
||||
if (profile == null) continue;
|
||||
|
||||
PublicPhotoData data = new PublicPhotoData
|
||||
{
|
||||
Cheers = cheers,
|
||||
ImageCdnUrl = $"{DBConfig.NameServer.Images}/img/{image.Name}?width=512",
|
||||
LocationName = (roomData == null) ? "[PRIVATE]" : "^" + roomData.Name,
|
||||
OwnerName = "@" + profile.username
|
||||
};
|
||||
|
||||
converted.Add(data);
|
||||
}
|
||||
|
||||
return converted;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user