diff --git a/Commands/DeleteAllCommand.cs b/Commands/DeleteAllCommand.cs index 6b57150..5e66ae0 100644 --- a/Commands/DeleteAllCommand.cs +++ b/Commands/DeleteAllCommand.cs @@ -1,49 +1,92 @@ using TBDel.Services; -namespace TBDel.Commands -{ - public class DeleteAllCommand - { - public static async Task DeleteAll() - { - var dbService = new DbService(); - var allFiles = await dbService.GetFileEntriesAsync(); - var allFolders = await dbService.GetFolderEntriesAsync(); +namespace TBDel.Commands; - if (allFiles.Count == 0 && allFolders.Count == 0) +public class DeleteAllCommand +{ + public static async Task DeleteAll() + { + var dbService = new DbService(); + var allFiles = await dbService.GetFileEntriesAsync(); + var allFolders = await dbService.GetFolderEntriesAsync(); + + if (allFiles.Count == 0 && allFolders.Count == 0) + { + Console.WriteLine("No files or folders found."); + return; + } + + 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.ResetColor(); + var input = Console.ReadLine(); + if (input != "y") + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("Operation cancelled."); + Console.ResetColor(); + return; + } + + foreach (var file in allFiles) + { + if (!File.Exists(file.Path)) { - Console.WriteLine("No files or folders found."); - return; + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine($"File {file.Path} does not exist, removing from list."); + Console.ResetColor(); + await dbService.RemoveFileEntryAsync(file.Id); + continue; } - 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.ResetColor(); - var input = Console.ReadLine(); - if (input != "y") + Console.WriteLine($"Deleting file: {file.Path}"); + try + { + File.Delete(file.Path); + } + catch (Exception e) { Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Operation cancelled."); + Console.WriteLine("Something went wrong while deleting the file."); + Console.WriteLine(e.Message); Console.ResetColor(); return; } - foreach (var file in allFiles) + await dbService.RemoveFileEntryAsync(file.Id); + } + + foreach (var folder in allFolders) + { + if (!Directory.Exists(folder.Path)) { - Console.WriteLine($"Deleting file: {file.Path}"); - File.Delete(file.Path); - await dbService.RemoveFileEntryAsync(file.Id); - } - foreach (var folder in allFolders) - { - Console.WriteLine($"Deleting directory: {folder.Path}"); - Directory.Delete(folder.Path, true); + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine($"Directory {folder.Path} does not exist, removing from list."); + Console.ResetColor(); await dbService.RemoveFolderEntryAsync(folder.Id); + continue; } - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine("All files and folders deleted successfully."); - Console.ResetColor(); + Console.WriteLine($"Deleting directory: {folder.Path}"); + try + { + 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); } + + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("All files and folders deleted successfully."); + Console.ResetColor(); } } \ No newline at end of file diff --git a/Commands/DeleteCommand.cs b/Commands/DeleteCommand.cs index 37fefd0..986d992 100644 --- a/Commands/DeleteCommand.cs +++ b/Commands/DeleteCommand.cs @@ -44,7 +44,25 @@ namespace TBDel.Commands } 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)) { Console.ForegroundColor = ConsoleColor.Green;