Fix ListFiles for Postgres

This commit is contained in:
Kieran 2022-06-09 15:15:28 +01:00
parent ca99293eda
commit 1f484f243d
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941

View File

@ -83,22 +83,20 @@ on conflict (""Id"") do update set ""Name"" = :name, ""Description"" = :descript
/// <inheritdoc /> /// <inheritdoc />
public async ValueTask<PagedResult<TMeta>> ListFiles<TMeta>(PagedRequest request) where TMeta : VoidFileMeta public async ValueTask<PagedResult<TMeta>> ListFiles<TMeta>(PagedRequest request) where TMeta : VoidFileMeta
{ {
var qInner = @"select {0} from ""Files"" order by ""{1}"" {2}"; var count = await _connection.ExecuteScalarAsync<int>(@"select count(*) from ""Files""");
var orderBy = request.SortBy switch
{
PagedSortBy.Date => "Uploaded",
PagedSortBy.Name => "Name",
PagedSortBy.Size => "Size",
_ => "Id"
};
var orderDirection = request.SortOrder == PageSortOrder.Asc ? "asc" : "desc";
var count = await _connection.ExecuteScalarAsync<int>(string.Format(qInner, "count(*)", orderBy,
orderDirection));
async IAsyncEnumerable<TMeta> Enumerate() async IAsyncEnumerable<TMeta> Enumerate()
{ {
var orderBy = request.SortBy switch
{
PagedSortBy.Date => "Uploaded",
PagedSortBy.Name => "Name",
PagedSortBy.Size => "Size",
_ => "Id"
};
var orderDirection = request.SortOrder == PageSortOrder.Asc ? "asc" : "desc";
var results = await _connection.QueryAsync<TMeta>( var results = await _connection.QueryAsync<TMeta>(
$"{string.Format(qInner, "*", orderBy, orderDirection)} offset @offset limit @limit", $"select * from \"Files\" order by \"{orderBy}\" {orderDirection} offset @offset limit @limit",
new {offset = request.PageSize * request.Page, limit = request.PageSize}); new {offset = request.PageSize * request.Page, limit = request.PageSize});
foreach (var meta in results) foreach (var meta in results)