forked from Kieran/void.cat
Include results count
This commit is contained in:
parent
e51672352f
commit
0ae2144adf
@ -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);
|
||||||
|
@ -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>()
|
||||||
{
|
{
|
||||||
|
@ -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()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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>()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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))
|
||||||
{
|
{
|
||||||
|
@ -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))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user