✨ Delete files in batch API
This commit is contained in:
@@ -333,6 +333,22 @@ public class FileController(
|
||||
return Ok(files);
|
||||
}
|
||||
|
||||
public class FileBatchDeletionRequest
|
||||
{
|
||||
public List<string> FileIds { get; set; } = [];
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpPost("batches/delete")]
|
||||
public async Task<ActionResult> DeleteFileBatch([FromBody] FileBatchDeletionRequest request)
|
||||
{
|
||||
if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized();
|
||||
var userId = Guid.Parse(currentUser.Id);
|
||||
|
||||
var count = await fs.DeleteAccountFileBatchAsync(userId, request.FileIds);
|
||||
return Ok(new { Count = count });
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
[HttpDelete("{id}")]
|
||||
public async Task<ActionResult<SnCloudFile>> DeleteFile(string id)
|
||||
|
||||
@@ -718,6 +718,21 @@ public class FileService(
|
||||
return count;
|
||||
}
|
||||
|
||||
public async Task<int> DeleteAccountFileBatchAsync(Guid accountId, List<string> fileIds)
|
||||
{
|
||||
var files = await db.Files
|
||||
.Where(f => f.AccountId == accountId && fileIds.Contains(f.Id))
|
||||
.ToListAsync();
|
||||
var count = files.Count;
|
||||
var tasks = files.Select(f => DeleteFileDataAsync(f, true));
|
||||
await Task.WhenAll(tasks);
|
||||
var fileIdsList = files.Select(f => f.Id).ToList();
|
||||
await _PurgeCacheRangeAsync(fileIdsList);
|
||||
db.RemoveRange(files);
|
||||
await db.SaveChangesAsync();
|
||||
return count;
|
||||
}
|
||||
|
||||
public async Task<int> DeletePoolRecycledFilesAsync(Guid poolId)
|
||||
{
|
||||
var files = await db.Files
|
||||
|
||||
Reference in New Issue
Block a user