Improved paged endpoint rage validation. Fixed smaller request model validation issues
This commit is contained in:
@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using MoonCore.Exceptions;
|
using MoonCore.Exceptions;
|
||||||
using MoonCore.Extended.Abstractions;
|
using MoonCore.Extended.Abstractions;
|
||||||
|
using MoonCore.Extended.Models;
|
||||||
using MoonCore.Models;
|
using MoonCore.Models;
|
||||||
using Moonlight.ApiServer.Database.Entities;
|
using Moonlight.ApiServer.Database.Entities;
|
||||||
using Moonlight.ApiServer.Services;
|
using Moonlight.ApiServer.Services;
|
||||||
@@ -27,18 +28,15 @@ public class ApiKeysController : Controller
|
|||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Authorize(Policy = "permissions:admin.apikeys.get")]
|
[Authorize(Policy = "permissions:admin.apikeys.get")]
|
||||||
public async Task<IPagedData<ApiKeyResponse>> Get(
|
public async Task<IPagedData<ApiKeyResponse>> Get([FromQuery] PagedOptions options)
|
||||||
[FromQuery] [Range(0, int.MaxValue)] int page,
|
|
||||||
[FromQuery] [Range(1, 100)] int pageSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
var count = await ApiKeyRepository.Get().CountAsync();
|
var count = await ApiKeyRepository.Get().CountAsync();
|
||||||
|
|
||||||
var apiKeys = await ApiKeyRepository
|
var apiKeys = await ApiKeyRepository
|
||||||
.Get()
|
.Get()
|
||||||
.OrderBy(x => x.Id)
|
.OrderBy(x => x.Id)
|
||||||
.Skip(page * pageSize)
|
.Skip(options.Page * options.PageSize)
|
||||||
.Take(pageSize)
|
.Take(options.PageSize)
|
||||||
.ToArrayAsync();
|
.ToArrayAsync();
|
||||||
|
|
||||||
var mappedApiKey = apiKeys
|
var mappedApiKey = apiKeys
|
||||||
@@ -53,11 +51,11 @@ public class ApiKeysController : Controller
|
|||||||
|
|
||||||
return new PagedData<ApiKeyResponse>()
|
return new PagedData<ApiKeyResponse>()
|
||||||
{
|
{
|
||||||
CurrentPage = page,
|
CurrentPage = options.Page,
|
||||||
Items = mappedApiKey,
|
Items = mappedApiKey,
|
||||||
PageSize = pageSize,
|
PageSize = options.PageSize,
|
||||||
TotalItems = count,
|
TotalItems = count,
|
||||||
TotalPages = count == 0 ? 0 : (count - 1) / pageSize
|
TotalPages = count == 0 ? 0 : (count - 1) / options.PageSize
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using MoonCore.Exceptions;
|
using MoonCore.Exceptions;
|
||||||
using MoonCore.Extended.Abstractions;
|
using MoonCore.Extended.Abstractions;
|
||||||
|
using MoonCore.Extended.Models;
|
||||||
using MoonCore.Models;
|
using MoonCore.Models;
|
||||||
using Moonlight.ApiServer.Database.Entities;
|
using Moonlight.ApiServer.Database.Entities;
|
||||||
using Moonlight.ApiServer.Mappers;
|
using Moonlight.ApiServer.Mappers;
|
||||||
@@ -25,17 +26,14 @@ public class ThemesController : Controller
|
|||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Authorize(Policy = "permissions:admin.system.customisation.themes.read")]
|
[Authorize(Policy = "permissions:admin.system.customisation.themes.read")]
|
||||||
public async Task<PagedData<ThemeResponse>> Get(
|
public async Task<PagedData<ThemeResponse>> Get([FromQuery] PagedOptions options)
|
||||||
[FromQuery] [Range(0, int.MaxValue)] int page,
|
|
||||||
[FromQuery] [Range(1, 100)] int pageSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
var count = await ThemeRepository.Get().CountAsync();
|
var count = await ThemeRepository.Get().CountAsync();
|
||||||
|
|
||||||
var items = await ThemeRepository
|
var items = await ThemeRepository
|
||||||
.Get()
|
.Get()
|
||||||
.Skip(page * pageSize)
|
.Skip(options.Page * options.PageSize)
|
||||||
.Take(pageSize)
|
.Take(options.PageSize)
|
||||||
.ToArrayAsync();
|
.ToArrayAsync();
|
||||||
|
|
||||||
var mappedItems = items
|
var mappedItems = items
|
||||||
@@ -44,11 +42,11 @@ public class ThemesController : Controller
|
|||||||
|
|
||||||
return new PagedData<ThemeResponse>()
|
return new PagedData<ThemeResponse>()
|
||||||
{
|
{
|
||||||
CurrentPage = page,
|
CurrentPage = options.Page,
|
||||||
Items = mappedItems,
|
Items = mappedItems,
|
||||||
PageSize = pageSize,
|
PageSize = options.PageSize,
|
||||||
TotalItems = count,
|
TotalItems = count,
|
||||||
TotalPages = count == 0 ? 0 : (count - 1) / pageSize
|
TotalPages = count == 0 ? 0 : (count - 1) / options.PageSize
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using Microsoft.Extensions.DependencyInjection;
|
|||||||
using MoonCore.Exceptions;
|
using MoonCore.Exceptions;
|
||||||
using MoonCore.Extended.Abstractions;
|
using MoonCore.Extended.Abstractions;
|
||||||
using MoonCore.Extended.Helpers;
|
using MoonCore.Extended.Helpers;
|
||||||
|
using MoonCore.Extended.Models;
|
||||||
using MoonCore.Models;
|
using MoonCore.Models;
|
||||||
using Moonlight.ApiServer.Database.Entities;
|
using Moonlight.ApiServer.Database.Entities;
|
||||||
using Moonlight.ApiServer.Services;
|
using Moonlight.ApiServer.Services;
|
||||||
@@ -27,18 +28,15 @@ public class UsersController : Controller
|
|||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Authorize(Policy = "permissions:admin.users.get")]
|
[Authorize(Policy = "permissions:admin.users.get")]
|
||||||
public async Task<IPagedData<UserResponse>> Get(
|
public async Task<IPagedData<UserResponse>> Get([FromQuery] PagedOptions options)
|
||||||
[FromQuery] [Range(0, int.MaxValue)] int page,
|
|
||||||
[FromQuery] [Range(1, 100)] int pageSize
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
var count = await UserRepository.Get().CountAsync();
|
var count = await UserRepository.Get().CountAsync();
|
||||||
|
|
||||||
var users = await UserRepository
|
var users = await UserRepository
|
||||||
.Get()
|
.Get()
|
||||||
.OrderBy(x => x.Id)
|
.OrderBy(x => x.Id)
|
||||||
.Skip(page * pageSize)
|
.Skip(options.Page * options.PageSize)
|
||||||
.Take(pageSize)
|
.Take(options.PageSize)
|
||||||
.ToArrayAsync();
|
.ToArrayAsync();
|
||||||
|
|
||||||
var mappedUsers = users
|
var mappedUsers = users
|
||||||
@@ -53,11 +51,11 @@ public class UsersController : Controller
|
|||||||
|
|
||||||
return new PagedData<UserResponse>()
|
return new PagedData<UserResponse>()
|
||||||
{
|
{
|
||||||
CurrentPage = page,
|
CurrentPage = options.Page,
|
||||||
Items = mappedUsers,
|
Items = mappedUsers,
|
||||||
PageSize = pageSize,
|
PageSize = options.PageSize,
|
||||||
TotalItems = count,
|
TotalItems = count,
|
||||||
TotalPages = count == 0 ? 0 : (count - 1) / pageSize
|
TotalPages = count == 0 ? 0 : (count - 1) / options.PageSize
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Files;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Files;
|
||||||
|
|
||||||
public class DecompressRequest
|
public class DecompressRequest
|
||||||
{
|
{
|
||||||
|
[Required(ErrorMessage = "You need to provide a format")]
|
||||||
public string Format { get; set; }
|
public string Format { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "You need to provide a path")]
|
||||||
public string Path { get; set; }
|
public string Path { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "You need to provide a destination")]
|
||||||
public string Destination { get; set; }
|
public string Destination { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys;
|
namespace Moonlight.Shared.Http.Requests.Admin.Sys;
|
||||||
|
|
||||||
public class GenerateDiagnoseRequest
|
public class GenerateDiagnoseRequest
|
||||||
{
|
{
|
||||||
|
[Required(ErrorMessage = "You need to define providers")]
|
||||||
public string[] Providers { get; set; } = [];
|
public string[] Providers { get; set; } = [];
|
||||||
}
|
}
|
||||||
@@ -17,5 +17,6 @@ public class CreateUserRequest
|
|||||||
[MaxLength(256, ErrorMessage = "Your password should not exceed the length of 256 characters")]
|
[MaxLength(256, ErrorMessage = "Your password should not exceed the length of 256 characters")]
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "You need to provide permissions")]
|
||||||
public string[] Permissions { get; set; } = [];
|
public string[] Permissions { get; set; } = [];
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user