More file operations

🐛 Bug fixes on file uploading
This commit is contained in:
2025-04-13 15:27:20 +08:00
parent cc185c6313
commit 8704305f5a
6 changed files with 175 additions and 30 deletions

View File

@ -117,11 +117,30 @@ public class FileService(AppDatabase db, IConfiguration configuration)
);
file.UploadedAt = Instant.FromDateTimeUtc(DateTime.UtcNow);
db.Update(file);
await db.SaveChangesAsync();
return file;
}
private RemoteStorageConfig GetRemoteStorageConfig(string destination)
public async Task DeleteFileDataAsync(CloudFile file)
{
if (file.UploadedTo is null) return;
var dest = GetRemoteStorageConfig(file.UploadedTo);
var client = CreateMinioClient(dest);
if (client is null)
throw new InvalidOperationException(
$"Failed to configure client for remote destination '{file.UploadedTo}'"
);
var bucket = dest.Bucket;
await client.RemoveObjectAsync(
new RemoveObjectArgs().WithBucket(bucket).WithObject(file.Id)
);
return;
}
public RemoteStorageConfig GetRemoteStorageConfig(string destination)
{
var destinations = configuration.GetSection("Storage:Remote").Get<List<RemoteStorageConfig>>()!;
var dest = destinations.FirstOrDefault(d => d.Id == destination);
@ -129,7 +148,7 @@ public class FileService(AppDatabase db, IConfiguration configuration)
return dest;
}
private IMinioClient? CreateMinioClient(RemoteStorageConfig dest)
public IMinioClient? CreateMinioClient(RemoteStorageConfig dest)
{
var client = new MinioClient()
.WithEndpoint(dest.Endpoint)