62 lines
1.5 KiB
C#
62 lines
1.5 KiB
C#
|
|
using GhostImageManager.Models;
|
||
|
|
|
||
|
|
namespace GhostImageManager.Services;
|
||
|
|
|
||
|
|
public class ImageDeletionService
|
||
|
|
{
|
||
|
|
private readonly ILogger<ImageDeletionService> _logger;
|
||
|
|
|
||
|
|
public ImageDeletionService(ILogger<ImageDeletionService> logger)
|
||
|
|
{
|
||
|
|
_logger = logger;
|
||
|
|
}
|
||
|
|
|
||
|
|
public Task<bool> DeleteImageAsync(GhostImage image)
|
||
|
|
{
|
||
|
|
return Task.FromResult(DeleteFile(image.FilePath));
|
||
|
|
}
|
||
|
|
|
||
|
|
public Task<(int Success, int Failed)> DeleteImagesAsync(IEnumerable<GhostImage> images)
|
||
|
|
{
|
||
|
|
int success = 0;
|
||
|
|
int failed = 0;
|
||
|
|
|
||
|
|
foreach (var image in images)
|
||
|
|
{
|
||
|
|
if (DeleteFile(image.FilePath))
|
||
|
|
success++;
|
||
|
|
else
|
||
|
|
failed++;
|
||
|
|
}
|
||
|
|
|
||
|
|
return Task.FromResult((success, failed));
|
||
|
|
}
|
||
|
|
|
||
|
|
private bool DeleteFile(string filePath)
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
if (!File.Exists(filePath))
|
||
|
|
{
|
||
|
|
_logger.LogWarning("Datei nicht gefunden: {Path}", filePath);
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
|
||
|
|
File.Delete(filePath);
|
||
|
|
|
||
|
|
// Auch Backup löschen, falls vorhanden
|
||
|
|
var backupPath = filePath + ".backup";
|
||
|
|
if (File.Exists(backupPath))
|
||
|
|
File.Delete(backupPath);
|
||
|
|
|
||
|
|
_logger.LogInformation("Datei gelöscht: {Path}", filePath);
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
catch (Exception ex)
|
||
|
|
{
|
||
|
|
_logger.LogError(ex, "Fehler beim Löschen von {Path}", filePath);
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|