🐛 Fix file index queries

This commit is contained in:
2026-01-14 23:35:29 +08:00
parent fa81a0bbbb
commit 6488e2224e

View File

@@ -56,8 +56,8 @@ public class FileIndexController(
{
"name" => orderDesc ? fileIndexes.OrderByDescending(fi => fi.File.Name).ToList()
: fileIndexes.OrderBy(fi => fi.File.Name).ToList(),
"size" => orderDesc ? fileIndexes.OrderByDescending(fi => fi.File.Size).ToList()
: fileIndexes.OrderBy(fi => fi.File.Size).ToList(),
"size" => orderDesc ? fileIndexes.OrderByDescending(fi => fi.File.Object!.Size).ToList()
: fileIndexes.OrderBy(fi => fi.File.Object!.Size).ToList(),
_ => orderDesc ? fileIndexes.OrderByDescending(fi => fi.File.CreatedAt).ToList()
: fileIndexes.OrderBy(fi => fi.File.CreatedAt).ToList()
};
@@ -211,7 +211,7 @@ public class FileIndexController(
try
{
var filesQuery = db.Files
var baseQuery = db.Files
.Where(f => f.AccountId == accountId
&& f.IsMarkedRecycle == recycled
&& !db.FileIndexes.Any(fi => fi.FileId == f.Id && fi.AccountId == accountId)
@@ -219,24 +219,23 @@ public class FileIndexController(
.Include(f => f.Object)
.AsQueryable();
// Apply sorting
filesQuery = order.ToLower() switch
{
"name" => orderDesc ? filesQuery.OrderByDescending(f => f.Name)
: filesQuery.OrderBy(f => f.Name),
"size" => orderDesc ? filesQuery.OrderByDescending(f => f.Size)
: filesQuery.OrderBy(f => f.Size),
_ => orderDesc ? filesQuery.OrderByDescending(f => f.CreatedAt)
: filesQuery.OrderBy(f => f.CreatedAt)
};
if (pool.HasValue) filesQuery = filesQuery.Where(f => f.Object!.FileReplicas.Any(r => r.PoolId == pool.Value));
if (pool.HasValue) baseQuery = baseQuery.Where(f => f.Object!.FileReplicas.Any(r => r.PoolId == pool.Value));
if (!string.IsNullOrWhiteSpace(query))
{
filesQuery = filesQuery.Where(f => f.Name.Contains(query));
baseQuery = baseQuery.Where(f => f.Name.Contains(query));
}
var filesQuery = order.ToLower() switch
{
"name" => orderDesc ? baseQuery.OrderByDescending(f => f.Name)
: baseQuery.OrderBy(f => f.Name),
"size" => orderDesc ? baseQuery.OrderByDescending(f => f.Object.Size)
: baseQuery.OrderBy(f => f.Object.Size),
_ => orderDesc ? baseQuery.OrderByDescending(f => f.CreatedAt)
: baseQuery.OrderBy(f => f.CreatedAt)
};
var totalCount = await filesQuery.CountAsync();
Response.Headers.Append("X-Total", totalCount.ToString());