void.cat/VoidCat/Model/PagedResult.cs
Kieran f5e3b47311
Page file list response
Standardize api calls
2022-02-23 17:06:44 +00:00

46 lines
972 B
C#

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; }
}
public sealed class PagedResult<T> : PagedResult
{
public IAsyncEnumerable<T> Results { get; init; }
public async Task<RenderedResults<T>> GetResults()
{
return new()
{
Page = Page,
PageSize = PageSize,
TotalResults = TotalResults,
Results = await Results.ToListAsync()
};
}
}
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
}