2022-02-23 17:06:44 +00:00
|
|
|
|
namespace VoidCat.Model;
|
|
|
|
|
|
|
|
|
|
public abstract class PagedResult
|
|
|
|
|
{
|
|
|
|
|
public int Page { get; init; }
|
|
|
|
|
public int PageSize { get; init; }
|
|
|
|
|
public int Pages => TotalResults / PageSize;
|
|
|
|
|
public int TotalResults { get; init; }
|
2023-08-24 10:53:12 +00:00
|
|
|
|
|
|
|
|
|
public int Results { get; init; }
|
2022-02-23 17:06:44 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed class PagedResult<T> : PagedResult
|
|
|
|
|
{
|
2023-08-24 10:53:12 +00:00
|
|
|
|
public IAsyncEnumerable<T> Data { get; init; } = null!;
|
2022-02-23 17:06:44 +00:00
|
|
|
|
|
|
|
|
|
public async Task<RenderedResults<T>> GetResults()
|
|
|
|
|
{
|
|
|
|
|
return new()
|
|
|
|
|
{
|
|
|
|
|
Page = Page,
|
|
|
|
|
PageSize = PageSize,
|
|
|
|
|
TotalResults = TotalResults,
|
2023-08-24 10:53:12 +00:00
|
|
|
|
Results = await Data.ToListAsync()
|
2022-02-23 17:06:44 +00:00
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed class RenderedResults<T> : PagedResult
|
|
|
|
|
{
|
|
|
|
|
public IList<T> Results { get; init; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed record PagedRequest(int Page, int PageSize, PagedSortBy SortBy = PagedSortBy.Name, PageSortOrder SortOrder = PageSortOrder.Asc);
|
|
|
|
|
|
|
|
|
|
public enum PagedSortBy : byte
|
|
|
|
|
{
|
|
|
|
|
Name,
|
|
|
|
|
Date,
|
|
|
|
|
Size,
|
|
|
|
|
Id
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum PageSortOrder : byte
|
|
|
|
|
{
|
|
|
|
|
Asc,
|
|
|
|
|
Dsc
|
|
|
|
|
}
|