Improve error handling

This commit is contained in:
2025-02-04 15:55:32 +03:30
parent 1899e284a0
commit 21365d81bf
2 changed files with 92 additions and 31 deletions

View File

@@ -1,9 +1,9 @@
using TBDel.Services; using TBDel.Services;
namespace TBDel.Commands namespace TBDel.Commands;
public class DeleteAllCommand
{ {
public class DeleteAllCommand
{
public static async Task DeleteAll() public static async Task DeleteAll()
{ {
var dbService = new DbService(); var dbService = new DbService();
@@ -17,7 +17,8 @@ namespace TBDel.Commands
} }
Console.ForegroundColor = ConsoleColor.Yellow; Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write($"Are you sure you want to permanently delete {allFiles.Count} file(s) and {allFolders.Count} folder(s)? (y/N) "); Console.Write(
$"Are you sure you want to permanently delete {allFiles.Count} file(s) and {allFolders.Count} folder(s)? (y/N) ");
Console.ResetColor(); Console.ResetColor();
var input = Console.ReadLine(); var input = Console.ReadLine();
if (input != "y") if (input != "y")
@@ -30,14 +31,57 @@ namespace TBDel.Commands
foreach (var file in allFiles) foreach (var file in allFiles)
{ {
if (!File.Exists(file.Path))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"File {file.Path} does not exist, removing from list.");
Console.ResetColor();
await dbService.RemoveFileEntryAsync(file.Id);
continue;
}
Console.WriteLine($"Deleting file: {file.Path}"); Console.WriteLine($"Deleting file: {file.Path}");
try
{
File.Delete(file.Path); File.Delete(file.Path);
}
catch (Exception e)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Something went wrong while deleting the file.");
Console.WriteLine(e.Message);
Console.ResetColor();
return;
}
await dbService.RemoveFileEntryAsync(file.Id); await dbService.RemoveFileEntryAsync(file.Id);
} }
foreach (var folder in allFolders) foreach (var folder in allFolders)
{ {
if (!Directory.Exists(folder.Path))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"Directory {folder.Path} does not exist, removing from list.");
Console.ResetColor();
await dbService.RemoveFolderEntryAsync(folder.Id);
continue;
}
Console.WriteLine($"Deleting directory: {folder.Path}"); Console.WriteLine($"Deleting directory: {folder.Path}");
try
{
Directory.Delete(folder.Path, true); Directory.Delete(folder.Path, true);
}
catch (Exception e)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Something went wrong while deleting the directory.");
Console.WriteLine(e.Message);
Console.ResetColor();
return;
}
await dbService.RemoveFolderEntryAsync(folder.Id); await dbService.RemoveFolderEntryAsync(folder.Id);
} }
@@ -45,5 +89,4 @@ namespace TBDel.Commands
Console.WriteLine("All files and folders deleted successfully."); Console.WriteLine("All files and folders deleted successfully.");
Console.ResetColor(); Console.ResetColor();
} }
}
} }

View File

@@ -44,7 +44,25 @@ namespace TBDel.Commands
} }
else if (Directory.Exists(filePath)) else if (Directory.Exists(filePath))
{ {
Directory.Delete(filePath); try
{
Directory.Delete(filePath, true);
}
catch (Exception e)
{
Console.ForegroundColor = ConsoleColor.Red;
if (e.Message.Contains("Directory not empty"))
{
Console.WriteLine("Directory is not empty. It must be empty before it can be deleted or deleted manually.");
}
Console.WriteLine("Something went wrong while deleting the directory.");
Console.ResetColor();
Console.WriteLine(e.Message);
return;
}
if (await dbService.RemoveFolderEntryAsync(id)) if (await dbService.RemoveFolderEntryAsync(id))
{ {
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;