Implemented ListCommand and DeleteAllCommand.

This commit is contained in:
2025-02-02 22:39:45 +03:30
parent f0339e5c0e
commit d716133230
4 changed files with 196 additions and 2 deletions

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}