mirror of
https://git.v0l.io/Kieran/void.cat.git
synced 2025-03-18 04:52:22 +01:00
Include results count
This commit is contained in:
parent
e51672352f
commit
0ae2144adf
VoidCat
Controllers
Model
Services
Background
Files
Migrations
Users
@ -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);
|
||||
|
@ -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>()
|
||||
{
|
||||
|
@ -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()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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>()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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))
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -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))
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ public class PostgresUserStore : IUserStore
|
||||
Page = request.Page,
|
||||
PageSize = request.PageSize,
|
||||
TotalResults = totalUsers,
|
||||
Results = Enumerate()
|
||||
Data = Enumerate()
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ public class PostgresUserUploadStore : IUserUploadsStore
|
||||
Page = request.Page,
|
||||
PageSize = request.PageSize,
|
||||
TotalResults = count,
|
||||
Results = EnumerateFiles()
|
||||
Data = EnumerateFiles()
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user