diff options
| author | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
| commit | 5f604b3052dab1d51dc130df2470bf330b283ec6 (patch) | |
| tree | ae00e1fe4542850467555b4e3af41964ba8d878b /code/api/Endpoints/Storage | |
| parent | 63cf177e8cf22e349534664d59a6926f8b36863d (diff) | |
| download | storage-5f604b3052dab1d51dc130df2470bf330b283ec6.tar.xz storage-5f604b3052dab1d51dc130df2470bf330b283ec6.zip | |
Max lenghts on db schema
Use latest temporal from cdn
Implement majority of translation functionality
Major refinements/bugs
Diffstat (limited to 'code/api/Endpoints/Storage')
10 files changed, 80 insertions, 91 deletions
diff --git a/code/api/Endpoints/Storage/Files/CreateEndpoint.cs b/code/api/Endpoints/Storage/Files/CreateEndpoint.cs index c53a8e3..9206a36 100644 --- a/code/api/Endpoints/Storage/Files/CreateEndpoint.cs +++ b/code/api/Endpoints/Storage/Files/CreateEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Files; +namespace Quality.Storage.Api.Endpoints.Storage.Files; public class CreateEndpoint { diff --git a/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs b/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs index ab95d94..eae8f17 100644 --- a/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs +++ b/code/api/Endpoints/Storage/Files/DeleteEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Files; +namespace Quality.Storage.Api.Endpoints.Storage.Files; public class DeleteEndpoint { diff --git a/code/api/Endpoints/Storage/Files/PutEndpoint.cs b/code/api/Endpoints/Storage/Files/PutEndpoint.cs index 129eeed..982d435 100644 --- a/code/api/Endpoints/Storage/Files/PutEndpoint.cs +++ b/code/api/Endpoints/Storage/Files/PutEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Files; +namespace Quality.Storage.Api.Endpoints.Storage.Files; public class PutEndpoint { diff --git a/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs b/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs index 2eb1352..398d500 100644 --- a/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs +++ b/code/api/Endpoints/Storage/Folders/CreateEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Folders; +namespace Quality.Storage.Api.Endpoints.Storage.Folders; public class CreateEndpoint { diff --git a/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs b/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs index 73fa907..84d41c4 100644 --- a/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs +++ b/code/api/Endpoints/Storage/Folders/DeleteEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Folders; +namespace Quality.Storage.Api.Endpoints.Storage.Folders; public class DeleteEndpoint { diff --git a/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs b/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs index dd049e7..64eb97b 100644 --- a/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs +++ b/code/api/Endpoints/Storage/Shares/CreateShareEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Shares; +namespace Quality.Storage.Api.Endpoints.Storage.Shares; public class CreateShareEndpoint { diff --git a/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs b/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs index ad85887..a8bf0fd 100644 --- a/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs +++ b/code/api/Endpoints/Storage/Shares/DeleteShareEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Shares; +namespace Quality.Storage.Api.Endpoints.Storage.Shares; public class DeleteShareEndpoint { diff --git a/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs b/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs index 30e4bf7..c1e8ea8 100644 --- a/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs +++ b/code/api/Endpoints/Storage/Shares/EditShareEndpoint.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Endpoints.Storage.Shares; +namespace Quality.Storage.Api.Endpoints.Storage.Shares; public class EditShareEndpoint { diff --git a/code/api/Endpoints/Storage/TreeEndpoint.cs b/code/api/Endpoints/Storage/TreeEndpoint.cs index f832034..df2ed5e 100644 --- a/code/api/Endpoints/Storage/TreeEndpoint.cs +++ b/code/api/Endpoints/Storage/TreeEndpoint.cs @@ -1,33 +1,26 @@ -namespace I2R.Storage.Api.Endpoints.Storage; +namespace Quality.Storage.Api.Endpoints.Storage; -public class TreeEndpoint : EndpointBase +public class TreeEndpoint(AppDatabase database, IPaginationService pagination) : EndpointBase { - private readonly AppDatabase _database; - private readonly IPaginationService _pagination; - - public TreeEndpoint(AppDatabase database, IPaginationService pagination) { - _database = database; - _pagination = pagination; - } - - [HttpGet("~/storage/tree")] - public async Task<ActionResult<KeysetPaginationResult<FileSystemEntry>>> Handle(Guid parent = default) { - return Ok(await _pagination.KeysetPaginateAsync( - _database.Folders.Include(c => c.Files).ConditionalWhere(() => parent != default, folder => folder.ParentId == parent), - b => b.Descending(a => a.Name), - async id => await _database.Folders.FirstOrDefaultAsync(c => c.Id == id.AsGuid()), - query => query.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() - }) - )); - } -}
\ No newline at end of file + [HttpGet("~/storage/tree")] + public async Task<ActionResult<KeysetPaginationResult<FileSystemEntry>>> Handle(Guid parent = default) { + return Ok(await pagination.KeysetPaginateAsync(database.Folders + .Include(c => c.Files) + .ConditionalWhere(() => parent != default, folder => folder.ParentId == parent), + b => b.Descending(a => a.Name), + async id => await database.Folders.FirstOrDefaultAsync(c => c.Id == id.AsGuid()), + query => query.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() + }))); + } +} diff --git a/code/api/Endpoints/Storage/UploadEndpoint.cs b/code/api/Endpoints/Storage/UploadEndpoint.cs index e3feffb..fa828ae 100644 --- a/code/api/Endpoints/Storage/UploadEndpoint.cs +++ b/code/api/Endpoints/Storage/UploadEndpoint.cs @@ -1,61 +1,57 @@ -using File = I2R.Storage.Api.Database.Models.File; +using Quality.Storage.Api.Services.Abstractions; +using File = Quality.Storage.Api.Database.Models.File; -namespace I2R.Storage.Api.Endpoints.Storage; +namespace Quality.Storage.Api.Endpoints.Storage; -public class UploadEndpoint : EndpointBase +public class UploadEndpoint( + IResourceService resourceService, + IStringLocalizer<SharedResources> localizer, + AppDatabase database, + StorageService storageService +) : EndpointBase { - private readonly DefaultResourceService _resourceService; - private readonly IStringLocalizer<SharedResources> _localizer; - private readonly AppDatabase _database; - private readonly StorageService _storageService; + public new class Request + { + public IFormFileCollection FormFileCollection { get; set; } + public Guid FolderId { get; set; } + } - public UploadEndpoint(DefaultResourceService resourceService, IStringLocalizer<SharedResources> localizer, AppDatabase database, StorageService storageService) { - _resourceService = resourceService; - _localizer = localizer; - _database = database; - _storageService = storageService; - } + [HttpPost("~/storage/upload")] + public async Task<ActionResult> Handle(Request request) { + var folder = await storageService.GetFileSystemEntryAsync(request.FolderId); + if (folder == default) { + return NotFound(); + } - public class Request - { - public IFormFileCollection FormFileCollection { get; set; } - public Guid FolderId { get; set; } - } + var problem = new KnownProblemModel(); + foreach (var formFile in request.FormFileCollection) { + if (!formFile.FileName.IsValidFileName()) { + problem.AddError("file_" + formFile.Name, localizer["{fileName} is an invalid file name"]); + continue; + } - [HttpPost("~/storage/upload")] - public async Task<ActionResult> Handle(Request request) { - var folder = await _storageService.GetFileSystemEntryAsync(request.FolderId); - if (folder == default) { - return NotFound(); - } - - var problem = new KnownProblemModel(); - foreach (var formFile in request.FormFileCollection) { - if (!formFile.FileName.IsValidFileName()) { - problem.AddError("file_" + formFile.Name, _localizer["{fileName} is an invalid file name"]); - continue; - } + if (problem.Errors.Count != 0) { + return KnownProblem(problem); + } - if (problem.Errors.Any()) { - return KnownProblem(problem); - } + var file = new File(LoggedInUser.Id) { + Name = formFile.FileName, + FolderId = folder.Id, + MimeType = formFile.ContentType, + SizeInBytes = formFile.Length, + OwningUserId = LoggedInUser.Id + }; - var file = new File(LoggedInUser.Id) { - Name = formFile.FileName, - FolderId = folder.Id, - MimeType = formFile.ContentType, - SizeInBytes = formFile.Length, - OwningUserId = LoggedInUser.Id - }; - var id = new StorageBlobId() { - Id = file.Id, - Bucket = LoggedInUser.Id - }; - await _resourceService.SetBlobAsync(id, formFile.OpenReadStream()); - await _database.Files.AddAsync(file); - await _database.SaveChangesAsync(); - } + var id = new StorageBlobId { + Id = file.Id, + Bucket = LoggedInUser.Id + }; - return Ok(await _storageService.GetFileSystemEntryAsync(folder.Id)); - } -}
\ No newline at end of file + await resourceService.SetBlobAsync(id, formFile.OpenReadStream()); + await database.Files.AddAsync(file); + await database.SaveChangesAsync(); + } + + return Ok(await storageService.GetFileSystemEntryAsync(folder.Id)); + } +} |
