Improved paged endpoint rage validation. Fixed smaller request model validation issues

This commit is contained in:
2025-08-26 01:52:43 +02:00
parent 5e371edf2b
commit 51aeb67ad6
6 changed files with 33 additions and 28 deletions

View File

@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MoonCore.Exceptions;
using MoonCore.Extended.Abstractions;
using MoonCore.Extended.Models;
using MoonCore.Models;
using Moonlight.ApiServer.Database.Entities;
using Moonlight.ApiServer.Mappers;
@@ -25,17 +26,14 @@ public class ThemesController : Controller
[HttpGet]
[Authorize(Policy = "permissions:admin.system.customisation.themes.read")]
public async Task<PagedData<ThemeResponse>> Get(
[FromQuery] [Range(0, int.MaxValue)] int page,
[FromQuery] [Range(1, 100)] int pageSize
)
public async Task<PagedData<ThemeResponse>> Get([FromQuery] PagedOptions options)
{
var count = await ThemeRepository.Get().CountAsync();
var items = await ThemeRepository
.Get()
.Skip(page * pageSize)
.Take(pageSize)
.Skip(options.Page * options.PageSize)
.Take(options.PageSize)
.ToArrayAsync();
var mappedItems = items
@@ -44,11 +42,11 @@ public class ThemesController : Controller
return new PagedData<ThemeResponse>()
{
CurrentPage = page,
CurrentPage = options.Page,
Items = mappedItems,
PageSize = pageSize,
PageSize = options.PageSize,
TotalItems = count,
TotalPages = count == 0 ? 0 : (count - 1) / pageSize
TotalPages = count == 0 ? 0 : (count - 1) / options.PageSize
};
}