aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/Services/System/StorageService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'code/api/Services/System/StorageService.cs')
-rw-r--r--code/api/Services/System/StorageService.cs39
1 files changed, 32 insertions, 7 deletions
diff --git a/code/api/Services/System/StorageService.cs b/code/api/Services/System/StorageService.cs
index adbb883..328be2c 100644
--- a/code/api/Services/System/StorageService.cs
+++ b/code/api/Services/System/StorageService.cs
@@ -1,6 +1,3 @@
-using MR.AspNetCore.Pagination;
-using MR.EntityFrameworkCore.KeysetPagination;
-
namespace I2R.Storage.Api.Services.System;
public class StorageService
@@ -13,11 +10,39 @@ public class StorageService
_logger = logger;
}
- public async Task<KeysetPaginationResult<FileSystemEntry>> GetFileSystemEntriesAsync(Guid parent = default) {
- var keysetQuery = _database.Folders
+ 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() { });
- return default;
+ .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 async Task<FileSystemEntry> GetFileSystemEntryAsync(Guid folder) {
+ 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()
+ }).FirstOrDefault(c => c.Id == folder);
}
} \ No newline at end of file