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, Page = files.Page,
PageSize = files.PageSize, PageSize = files.PageSize,
TotalResults = files.TotalResults, 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 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)); var uploads = await _userUploads.ListFiles(a.Id, new(0, int.MaxValue));
return new AdminListedUser(a.ToAdminApiUser(true), uploads.TotalResults); 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(); !user.Flags.HasFlag(UserFlags.PublicUploads)) return Forbid();
var results = await _userUploads.ListFiles(id.FromBase58Guid(), request); 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); var fileInfo = await _fileInfoManager.Get(files.ToArray(), false);
return Json(new RenderedResults<VoidFileResponse>() return Json(new RenderedResults<VoidFileResponse>()
{ {

View File

@ -6,11 +6,13 @@ public abstract class PagedResult
public int PageSize { get; init; } public int PageSize { get; init; }
public int Pages => TotalResults / PageSize; public int Pages => TotalResults / PageSize;
public int TotalResults { get; init; } public int TotalResults { get; init; }
public int Results { get; init; }
} }
public sealed class PagedResult<T> : PagedResult 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() public async Task<RenderedResults<T>> GetResults()
{ {
@ -19,7 +21,7 @@ public sealed class PagedResult<T> : PagedResult
Page = Page, Page = Page,
PageSize = PageSize, PageSize = PageSize,
TotalResults = TotalResults, 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 fileStoreFactory = scope.ServiceProvider.GetRequiredService<FileStoreFactory>();
var files = await metadata.ListFiles(new(0, int.MaxValue)); 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 try
{ {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -138,7 +138,7 @@ public class S3FileStore : StreamFileStore, IFileStore
Page = request.Page, Page = request.Page,
PageSize = request.PageSize, PageSize = request.PageSize,
TotalResults = files.Count(), 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) catch (AmazonS3Exception aex)
@ -149,7 +149,7 @@ public class S3FileStore : StreamFileStore, IFileStore
Page = request.Page, Page = request.Page,
PageSize = request.PageSize, PageSize = request.PageSize,
TotalResults = 0, 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 deleting = new List<Guid>();
var fileList = await _metadataStore.ListFiles(new(page++, 1000)); 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)) if (!await _fileStore.Exists(md.Id))
{ {

View File

@ -74,7 +74,7 @@ public class CacheUserStore : IUserStore
Page = request.Page, Page = request.Page,
PageSize = request.PageSize, PageSize = request.PageSize,
TotalResults = users?.Count() ?? 0, 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, Page = request.Page,
PageSize = request.PageSize, PageSize = request.PageSize,
TotalResults = idsRendered.Count, 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, Page = request.Page,
PageSize = request.PageSize, PageSize = request.PageSize,
TotalResults = totalUsers, TotalResults = totalUsers,
Results = Enumerate() Data = Enumerate()
}; };
} }

View File

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