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/Services | |
| 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/Services')
| -rw-r--r-- | code/api/Services/Abstractions/IResourceService.cs | 6 | ||||
| -rw-r--r-- | code/api/Services/Admin/UserService.cs | 26 | ||||
| -rw-r--r-- | code/api/Services/System/ChunkUploaderService.cs | 15 | ||||
| -rw-r--r-- | code/api/Services/System/DefaultResourceService.cs | 16 | ||||
| -rw-r--r-- | code/api/Services/System/PermissionService.cs | 27 | ||||
| -rw-r--r-- | code/api/Services/System/ShareService.cs | 2 | ||||
| -rw-r--r-- | code/api/Services/System/StorageService.cs | 88 |
7 files changed, 76 insertions, 104 deletions
diff --git a/code/api/Services/Abstractions/IResourceService.cs b/code/api/Services/Abstractions/IResourceService.cs index 904d59b..ee0ae81 100644 --- a/code/api/Services/Abstractions/IResourceService.cs +++ b/code/api/Services/Abstractions/IResourceService.cs @@ -1,6 +1,4 @@ -using I2R.Storage.Api.Services.System; - -namespace I2R.Storage.Api.Services.Abstractions; +namespace Quality.Storage.Api.Services.Abstractions; public interface IResourceService { @@ -9,4 +7,4 @@ public interface IResourceService public Task RemoveBlobAsync(StorageBlobId id, CancellationToken cancellationToken = default); public Task SetBlobMetadataAsync(StorageBlobId id, Dictionary<string, string> metadata, CancellationToken cancellationToken = default); public Task<Dictionary<string,string>> GetBlobMetadataAsync(StorageBlobId id, CancellationToken cancellationToken = default); -}
\ No newline at end of file +} diff --git a/code/api/Services/Admin/UserService.cs b/code/api/Services/Admin/UserService.cs index f149d73..decc5bd 100644 --- a/code/api/Services/Admin/UserService.cs +++ b/code/api/Services/Admin/UserService.cs @@ -1,25 +1,17 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; -namespace I2R.Storage.Api.Services.Admin; +namespace Quality.Storage.Api.Services.Admin; -public class UserService +public class UserService(AppDatabase database, ILogger<UserService> logger) { - private readonly AppDatabase _database; - private readonly ILogger<UserService> _logger; - - public UserService(AppDatabase database, ILogger<UserService> logger) { - _database = database; - _logger = logger; - } - - public bool CanCreateAccount(string username) { + public bool CanCreateAccount(string username) { if (username.IsNullOrWhiteSpace()) { return false; } var normalisedUsername = username.Trim(); - return _database.Users.All(c => c.Username != normalisedUsername); + return database.Users.All(c => c.Username != normalisedUsername); } public async Task LogInUserAsync(HttpContext httpContext, IEnumerable<Claim> claims) { @@ -31,22 +23,22 @@ public class UserService }; await httpContext.SignInAsync(principal, authenticationProperties); - _logger.LogInformation("Logged in user {userId}", principal.FindFirstValue(AppClaims.USER_ID)); + logger.LogInformation("Logged in user {userId}", principal.FindFirstValue(AppClaims.USER_ID)); } public async Task LogOutUserAsync(HttpContext httpContext, CancellationToken cancellationToken = default) { await httpContext.SignOutAsync(); - _logger.LogInformation("Logged out user {userId}", httpContext.User.FindFirstValue(AppClaims.USER_ID)); + logger.LogInformation("Logged out user {userId}", httpContext.User.FindFirstValue(AppClaims.USER_ID)); } public async Task MarkUserAsDeletedAsync(Guid userId, Guid actorId) { - var user = _database.Users.FirstOrDefault(c => c.Id == userId); + var user = database.Users.FirstOrDefault(c => c.Id == userId); if (user == default) { - _logger.LogInformation("Tried to delete unknown user {userId}", userId); + logger.LogInformation("Tried to delete unknown user {userId}", userId); return; } user.SetDeleted(actorId); - await _database.SaveChangesAsync(); + await database.SaveChangesAsync(); } }
\ No newline at end of file diff --git a/code/api/Services/System/ChunkUploaderService.cs b/code/api/Services/System/ChunkUploaderService.cs index d650fa4..e1c81d9 100644 --- a/code/api/Services/System/ChunkUploaderService.cs +++ b/code/api/Services/System/ChunkUploaderService.cs @@ -1,16 +1,11 @@ -namespace I2R.Storage.Api.Services.System; +namespace Quality.Storage.Api.Services.System; -public class ChunkUploaderService +public class ChunkUploaderService(AppDatabase database, ILogger<ChunkUploaderService> logger) { - private readonly ILogger<ChunkUploaderService> _logger; - private readonly AppDatabase _database; + private readonly ILogger<ChunkUploaderService> _logger = logger; + private readonly AppDatabase _database = database; - public ChunkUploaderService(AppDatabase database, ILogger<ChunkUploaderService> logger) { - _database = database; - _logger = logger; - } - - public async Task<Guid> StartUploadSession() { + public async Task<Guid> StartUploadSession() { return default; } }
\ No newline at end of file diff --git a/code/api/Services/System/DefaultResourceService.cs b/code/api/Services/System/DefaultResourceService.cs index 5198432..5d05353 100644 --- a/code/api/Services/System/DefaultResourceService.cs +++ b/code/api/Services/System/DefaultResourceService.cs @@ -1,17 +1,11 @@ -using I2R.Storage.Api.Services.Abstractions; +using Quality.Storage.Api.Services.Abstractions; using File = System.IO.File; -namespace I2R.Storage.Api.Services.System; +namespace Quality.Storage.Api.Services.System; -public class DefaultResourceService : IResourceService +public class DefaultResourceService(IConfiguration configuration) : IResourceService { - private readonly IConfiguration _configuration; - - public DefaultResourceService(IConfiguration configuration) { - _configuration = configuration; - } - - public async Task SetBlobAsync(StorageBlobId id, Stream stream, CancellationToken cancellationToken = default) { + public async Task SetBlobAsync(StorageBlobId id, Stream stream, CancellationToken cancellationToken = default) { await stream.CopyToAsync(File.OpenWrite(EnsureCreatedAndReturnBasedPath(id)), cancellationToken); } @@ -33,7 +27,7 @@ public class DefaultResourceService : IResourceService } private string EnsureCreatedAndReturnBasedPath(StorageBlobId id) { - var withoutId = Path.Combine(Directory.GetCurrentDirectory(), _configuration.GetValue(AppEnvVariables.STORAGE_ROOT, "__FILESYSTEM__"), id.Bucket.ToString()); + var withoutId = Path.Combine(Directory.GetCurrentDirectory(), configuration.GetValue(AppEnvVariables.STORAGE_ROOT, "__FILESYSTEM__"), id.Bucket.ToString()); Directory.CreateDirectory(withoutId); return Path.Combine(withoutId, id.Id.ToString()); } diff --git a/code/api/Services/System/PermissionService.cs b/code/api/Services/System/PermissionService.cs index f55d8c1..a2233c8 100644 --- a/code/api/Services/System/PermissionService.cs +++ b/code/api/Services/System/PermissionService.cs @@ -1,19 +1,14 @@ -namespace I2R.Storage.Api.Services.System; +namespace Quality.Storage.Api.Services.System; -public class PermissionService +public class PermissionService(ILogger<PermissionService> logger, AppDatabase database) { - private readonly AppDatabase _database; - private readonly ILogger<PermissionService> _logger; + private readonly AppDatabase _database = database; + private readonly ILogger<PermissionService> _logger = logger; - public PermissionService(ILogger<PermissionService> logger, AppDatabase database) { - _logger = logger; - _database = database; - } - - public async Task GrantAllOnFile(Guid fileId, Guid userId) { } - public async Task GrantAllOnFolder(Guid fileId, Guid userId) { } - public async Task UserCanReadFile(Guid fileId, Guid userId) { } - public async Task UserCanReadFolder(Guid folderId, Guid userId) { } - public async Task UserCanWriteFile(Guid fileId, Guid userId) { } - public async Task UserCanWriteFolder(Guid folderId, Guid userId) { } -}
\ No newline at end of file + public async Task GrantAllOnFile(Guid fileId, Guid userId) { } + public async Task GrantAllOnFolder(Guid fileId, Guid userId) { } + public async Task UserCanReadFile(Guid fileId, Guid userId) { } + public async Task UserCanReadFolder(Guid folderId, Guid userId) { } + public async Task UserCanWriteFile(Guid fileId, Guid userId) { } + public async Task UserCanWriteFolder(Guid folderId, Guid userId) { } +} diff --git a/code/api/Services/System/ShareService.cs b/code/api/Services/System/ShareService.cs index 047e607..7f2f7b7 100644 --- a/code/api/Services/System/ShareService.cs +++ b/code/api/Services/System/ShareService.cs @@ -1,4 +1,4 @@ -namespace I2R.Storage.Api.Services.System; +namespace Quality.Storage.Api.Services.System; public class ShareService { diff --git a/code/api/Services/System/StorageService.cs b/code/api/Services/System/StorageService.cs index 328be2c..9c6e0ac 100644 --- a/code/api/Services/System/StorageService.cs +++ b/code/api/Services/System/StorageService.cs @@ -1,48 +1,46 @@ -namespace I2R.Storage.Api.Services.System; +namespace Quality.Storage.Api.Services.System; -public class StorageService +public class StorageService(AppDatabase database) { - private readonly AppDatabase _database; - private readonly ILogger<StorageService> _logger; + 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 StorageService(AppDatabase database, ILogger<StorageService> logger) { - _database = database; - _logger = logger; - } - - 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 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 + 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); + } +} |
