1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
namespace Quality.Storage.Api.Services.System;
public class StorageService(AppDatabase database)
{
public async Task<List<FileSystemEntry>> GetFileSystemEntriesAsync(Guid parent = default) {
var fileSystemEntriesContext = database.Folders
.Include(c => c.Files)
.ConditionalWhere(() => parent != default, folder => folder.ParentId == parent)
.Select(p => new FileSystemEntry {
Id = p.Id,
Name = p.Name,
MimeType = SystemConstants.FolderMimeType,
SizeInBytes = -1,
Files = p.Files.Select(c => new FileSystemEntry {
Id = c.Id,
Name = c.Name,
MimeType = c.MimeType,
SizeInBytes = c.SizeInBytes
})
.ToList()
})
.KeysetPaginate(builder => {
builder.Ascending(entry => entry.Name);
});
var fileSystemEntries = await fileSystemEntriesContext.Query.ToListAsync();
fileSystemEntriesContext.EnsureCorrectOrder(fileSystemEntries);
return fileSystemEntries;
}
public Task<FileSystemEntry> GetFileSystemEntryAsync(Guid folderId) {
return database.Folders.Include(c => c.Files)
.Select(c => new FileSystemEntry {
Id = c.Id,
SizeInBytes = -1,
MimeType = SystemConstants.FolderMimeType,
Files = c.Files.Select(p => new FileSystemEntry {
SizeInBytes = p.SizeInBytes,
MimeType = p.MimeType,
Id = p.Id,
Name = p.Name
})
.ToList()
})
.FirstOrDefaultAsync(c => c.Id == folderId);
}
}
|