Implemented ListCommand and DeleteAllCommand.
This commit is contained in:
		@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					using TBDel.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace TBDel.Commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class DeleteCommand
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    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.WriteLine($"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;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        var toBeDeletedFiles = new List<string>();
 | 
				
			||||||
 | 
					        var toBeDeletedFolders = new List<string>();
 | 
				
			||||||
 | 
					        foreach (var file in allFiles)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            toBeDeletedFiles.Add(file.Path);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        foreach (var folder in allFolders)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            toBeDeletedFolders.Add(folder.Path);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        foreach (var file in toBeDeletedFiles)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine($"Deleting file: {file}");
 | 
				
			||||||
 | 
					            File.Delete(file);
 | 
				
			||||||
 | 
					            await dbService.RemoveFileEntryAsync(file);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        foreach (var folder in toBeDeletedFolders)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine($"Deleting directory: {folder}");
 | 
				
			||||||
 | 
					            Directory.Delete(folder, true);
 | 
				
			||||||
 | 
					            await dbService.RemoveFolderEntryAsync(folder);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					using TBDel.Models;
 | 
				
			||||||
 | 
					using TBDel.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace TBDel.Commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ListCommand
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static async Task List(string[] args)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (args.Length > 2)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine("Too many arguments.");
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (args.Length == 1)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine("Listing both files and folders.");
 | 
				
			||||||
 | 
					            await ListFiles();
 | 
				
			||||||
 | 
					            for (int i = 0; i < 110; i++)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Console.Write("-");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Console.Write("\n");
 | 
				
			||||||
 | 
					            await ListFolders();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (args[1] == "files")
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            await ListFiles();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (args[1] == "folders")
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            await ListFolders();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static async Task ListFiles()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        var dbService = new DbService();
 | 
				
			||||||
 | 
					        var filesList = await dbService.GetFileEntriesAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (filesList.Count == 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine("No files found.");
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        Console.ForegroundColor = ConsoleColor.Green;
 | 
				
			||||||
 | 
					        Console.WriteLine("Found {0} file(s):\n", filesList.Count);
 | 
				
			||||||
 | 
					        Console.WriteLine("{0,-100} {1,10}\n", "Path", "Date added");
 | 
				
			||||||
 | 
					        Console.ResetColor();
 | 
				
			||||||
 | 
					        foreach (var file in filesList)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine("{0,-100} {1,10}", file.Path, file.DateAdded);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private static async Task ListFolders()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        var dbService = new DbService();
 | 
				
			||||||
 | 
					        var foldersList = await dbService.GetFolderEntriesAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (foldersList.Count == 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine("No folders found.");
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        Console.ForegroundColor = ConsoleColor.Green;
 | 
				
			||||||
 | 
					        Console.WriteLine("Found {0} folder(s):\n", foldersList.Count);
 | 
				
			||||||
 | 
					        Console.WriteLine("{0,-100} {1,10}\n", "Path", "Date added");
 | 
				
			||||||
 | 
					        Console.ResetColor();
 | 
				
			||||||
 | 
					        foreach (var folder in foldersList)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.WriteLine("{0,-100} {1,10}", folder.Path, folder.DateAdded);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -5,6 +5,7 @@ namespace TBDel
 | 
				
			|||||||
    internal class Program
 | 
					    internal class Program
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        // TODO: Add a command to show the Db path
 | 
					        // TODO: Add a command to show the Db path
 | 
				
			||||||
 | 
					        // TODO: Add a command to remove a file or folder only from the list
 | 
				
			||||||
        static async Task Main(string[] args)
 | 
					        static async Task Main(string[] args)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // Show the help message if no arguments are provided
 | 
					            // Show the help message if no arguments are provided
 | 
				
			||||||
@@ -25,10 +26,10 @@ namespace TBDel
 | 
				
			|||||||
                    
 | 
					                    
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case "deleteall":
 | 
					                case "deleteall":
 | 
				
			||||||
                    
 | 
					                    await DeleteCommand.DeleteAll();
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case "list":
 | 
					                case "list":
 | 
				
			||||||
                    
 | 
					                    await ListCommand.List(args);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                case "help":
 | 
					                case "help":
 | 
				
			||||||
                    HelpCommand.Show();
 | 
					                    HelpCommand.Show();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										61
									
								
								TUIHelper/Header.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								TUIHelper/Header.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					namespace TBDel.TUIHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class Header
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static void Show(String _headerText)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Get third of the terminal width
 | 
				
			||||||
 | 
					        int viewWidth = Console.WindowWidth/3;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Show the header seperator
 | 
				
			||||||
 | 
					        Console.Write("#");
 | 
				
			||||||
 | 
					        for (int i = 0; i <= viewWidth-2; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.Write("=");
 | 
				
			||||||
 | 
					        } 
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Move to the next line
 | 
				
			||||||
 | 
					        Console.WriteLine("#");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Console.Write("#");
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for (int i = 0; i <= viewWidth - 2;i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.Write(" ");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        Console.Write("#");
 | 
				
			||||||
 | 
					        Console.Write("\n#");
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        int textReletiveStartPosition = ((viewWidth - 2)- _headerText.Length)/2;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for (int i = 0; i < textReletiveStartPosition; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.Write(" ");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        Console.Write(_headerText);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for (int i = 0; i <= textReletiveStartPosition; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.Write(" ");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        Console.WriteLine("#");
 | 
				
			||||||
 | 
					        Console.Write("#");
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for (int i = 0; i <= viewWidth - 2;i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.Write(" ");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        Console.Write("#");
 | 
				
			||||||
 | 
					        Console.Write("\n#");
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for (int i = 0; i <= viewWidth-2; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Console.Write("=");
 | 
				
			||||||
 | 
					        } 
 | 
				
			||||||
 | 
					        Console.WriteLine("#");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user