diff options
Diffstat (limited to 'code/api/Services/System/StorageService.cs')
| -rw-r--r-- | code/api/Services/System/StorageService.cs | 39 |
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 |
