Include results count

This commit is contained in:
Kieran 2023-08-24 11:53:12 +01:00
parent e51672352f
commit 0ae2144adf
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
15 changed files with 30 additions and 29 deletions

View File

@ -43,7 +43,7 @@ public class AdminController : Controller
Page = files.Page,
PageSize = files.PageSize,
TotalResults = files.TotalResults,
Results = (await files.Results.SelectAwait(a => _fileInfo.Get(a.Id, false)).ToListAsync())!
Results = (await files.Data.SelectAwait(a => _fileInfo.Get(a.Id, false)).ToListAsync())!
};
}
@ -71,7 +71,7 @@ public class AdminController : Controller
{
var result = await _userStore.ListUsers(request);
var ret = await result.Results.SelectAwait(async a =>
var ret = await result.Data.SelectAwait(async a =>
{
var uploads = await _userUploads.ListFiles(a.Id, new(0, int.MaxValue));
return new AdminListedUser(a.ToAdminApiUser(true), uploads.TotalResults);

View File

@ -104,7 +104,7 @@ public class UserController : Controller
!user.Flags.HasFlag(UserFlags.PublicUploads)) return Forbid();
var results = await _userUploads.ListFiles(id.FromBase58Guid(), request);
var files = await results.Results.ToListAsync();
var files = await results.Data.ToListAsync();
var fileInfo = await _fileInfoManager.Get(files.ToArray(), false);
return Json(new RenderedResults<VoidFileResponse>()
{

View File

@ -6,11 +6,13 @@ public abstract class PagedResult
public int PageSize { get; init; }
public int Pages => TotalResults / PageSize;
public int TotalResults { get; init; }
public int Results { get; init; }
}
public sealed class PagedResult<T> : PagedResult
{
public IAsyncEnumerable<T> Results { get; init; }
public IAsyncEnumerable<T> Data { get; init; } = null!;
public async Task<RenderedResults<T>> GetResults()
{
@ -19,7 +21,7 @@ public sealed class PagedResult<T> : PagedResult
Page = Page,
PageSize = PageSize,
TotalResults = TotalResults,
Results = await Results.ToListAsync()
Results = await Data.ToListAsync()
};
}
}

View File

@ -30,7 +30,7 @@ public sealed class DeleteExpiredFiles : BackgroundService
var fileStoreFactory = scope.ServiceProvider.GetRequiredService<FileStoreFactory>();
var files = await metadata.ListFiles(new(0, int.MaxValue));
await foreach (var f in files.Results.WithCancellation(stoppingToken))
await foreach (var f in files.Data.WithCancellation(stoppingToken))
{
try
{

View File

@ -30,7 +30,7 @@ public class DeleteUnverifiedAccounts : BackgroundService
var accounts = await userStore.ListUsers(new(0, Int32.MaxValue));
await foreach (var account in accounts.Results.WithCancellation(stoppingToken))
await foreach (var account in accounts.Data.WithCancellation(stoppingToken))
{
if (!account.Flags.HasFlag(UserFlags.EmailVerified) &&
account.Created.AddDays(7) < DateTimeOffset.UtcNow)
@ -40,7 +40,7 @@ public class DeleteUnverifiedAccounts : BackgroundService
var files = await userUploads.ListFiles(account.Id, new(0, Int32.MinValue));
// ReSharper disable once UseCancellationTokenForIAsyncEnumerable
await foreach (var file in files.Results)
await foreach (var file in files.Data)
{
await fileStore.DeleteFile(file);
await fileInfoManager.Delete(file);

View File

@ -29,12 +29,10 @@ public class VirusScannerService : BackgroundService
var page = 0;
while (true)
{
var files = await _fileStore.ListFiles(new(page, 1_000));
if (files.Pages < page) break;
var files = await _fileStore.ListFiles(new(page++, 1_000));
if (files.Results == 0) break;
page++;
await foreach (var file in files.Results.WithCancellation(stoppingToken))
await foreach (var file in files.Data.WithCancellation(stoppingToken))
{
// file is too large, cant scan
if (file.Size > 4_000_000) continue;

View File

@ -91,7 +91,7 @@ public class LocalDiskFileMetadataStore : IFileMetadataStore
{
Page = request.Page,
PageSize = request.PageSize,
Results = results.Take(request.PageSize).Skip(request.Page * request.PageSize)
Data = results.Take(request.PageSize).Skip(request.Page * request.PageSize)
});
}
@ -99,8 +99,8 @@ public class LocalDiskFileMetadataStore : IFileMetadataStore
public async ValueTask<IFileMetadataStore.StoreStats> Stats()
{
var files = await ListFiles(new(0, Int32.MaxValue));
var count = await files.Results.CountAsync();
var size = await files.Results.SumAsync(a => (long) a.Size);
var count = await files.Data.CountAsync();
var size = await files.Data.SumAsync(a => (long) a.Size);
return new(count, (ulong) size);
}

View File

@ -113,10 +113,11 @@ public class PostgresFileMetadataStore : IFileMetadataStore
return new()
{
TotalResults = await MakeQuery(_db).CountAsync(),
TotalResults = await _db.Files.CountAsync(),
Results = await MakeQuery(_db).CountAsync(),
PageSize = request.PageSize,
Page = request.Page,
Results = Enumerate()
Data = Enumerate()
};
}

View File

@ -100,7 +100,7 @@ public class S3FileMetadataStore : IFileMetadataStore
{
Page = request.Page,
PageSize = request.PageSize,
Results = Enumerate().Skip(request.PageSize * request.Page).Take(request.PageSize)
Data = Enumerate().Skip(request.PageSize * request.Page).Take(request.PageSize)
});
}
@ -108,8 +108,8 @@ public class S3FileMetadataStore : IFileMetadataStore
public async ValueTask<IFileMetadataStore.StoreStats> Stats()
{
var files = await ListFiles(new(0, Int32.MaxValue));
var count = await files.Results.CountAsync();
var size = await files.Results.SumAsync(a => (long) a.Size);
var count = await files.Data.CountAsync();
var size = await files.Data.SumAsync(a => (long) a.Size);
return new(count, (ulong) size);
}

View File

@ -138,7 +138,7 @@ public class S3FileStore : StreamFileStore, IFileStore
Page = request.Page,
PageSize = request.PageSize,
TotalResults = files.Count(),
Results = EnumerateFiles(files.Skip(request.PageSize * request.Page).Take(request.PageSize))
Data = EnumerateFiles(files.Skip(request.PageSize * request.Page).Take(request.PageSize))
};
}
catch (AmazonS3Exception aex)
@ -149,7 +149,7 @@ public class S3FileStore : StreamFileStore, IFileStore
Page = request.Page,
PageSize = request.PageSize,
TotalResults = 0,
Results = AsyncEnumerable.Empty<Database.File>()
Data = AsyncEnumerable.Empty<Database.File>()
};
}
}

View File

@ -60,9 +60,9 @@ public class CleanupLocalDiskStore : IMigration
{
var deleting = new List<Guid>();
var fileList = await _metadataStore.ListFiles(new(page++, 1000));
if (fileList.TotalResults == 0) break;
if (fileList.Results == 0) break;
await foreach (var md in fileList.Results)
await foreach (var md in fileList.Data)
{
if (!await _fileStore.Exists(md.Id))
{

View File

@ -74,7 +74,7 @@ public class CacheUserStore : IUserStore
Page = request.Page,
PageSize = request.PageSize,
TotalResults = users?.Count() ?? 0,
Results = EnumerateUsers(users?.Skip(request.PageSize * request.Page).Take(request.PageSize))
Data = EnumerateUsers(users?.Skip(request.PageSize * request.Page).Take(request.PageSize))
};
}

View File

@ -38,7 +38,7 @@ public class CacheUserUploadStore : IUserUploadsStore
Page = request.Page,
PageSize = request.PageSize,
TotalResults = idsRendered.Count,
Results = EnumerateResults(idsRendered.Skip(request.Page * request.PageSize).Take(request.PageSize))
Data = EnumerateResults(idsRendered.Skip(request.Page * request.PageSize).Take(request.PageSize))
};
}

View File

@ -94,7 +94,7 @@ public class PostgresUserStore : IUserStore
Page = request.Page,
PageSize = request.PageSize,
TotalResults = totalUsers,
Results = Enumerate()
Data = Enumerate()
};
}

View File

@ -72,7 +72,7 @@ public class PostgresUserUploadStore : IUserUploadsStore
Page = request.Page,
PageSize = request.PageSize,
TotalResults = count,
Results = EnumerateFiles()
Data = EnumerateFiles()
};
}