Compare commits

...

2 Commits

6 changed files with 74 additions and 5 deletions

View File

@@ -1,3 +1,4 @@
using System.Diagnostics.Contracts;
using TBDel.Models; using TBDel.Models;
using TBDel.Services; using TBDel.Services;
@@ -7,9 +8,6 @@ namespace TBDel.Commands
{ {
public static async Task AddEntry(string[] args) public static async Task AddEntry(string[] args)
{ {
// TODO: Add duplicate path check
// TODO: Add support for multiple paths
if (args.Length > 1) if (args.Length > 1)
{ {
string workingDirectory = Directory.GetCurrentDirectory(); string workingDirectory = Directory.GetCurrentDirectory();
@@ -19,6 +17,12 @@ namespace TBDel.Commands
if (File.Exists(absolutePath)) if (File.Exists(absolutePath))
{ {
Console.WriteLine($"Adding: {absolutePath}"); Console.WriteLine($"Adding: {absolutePath}");
if (await dbService.EtryExists(absolutePath))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("File already exists in the list - No actions performed.");
return;
}
var entry = new FileEntry { Id = GenerateUniqueId(dbService), Path = absolutePath, DateAdded = DateTime.Now }; var entry = new FileEntry { Id = GenerateUniqueId(dbService), Path = absolutePath, DateAdded = DateTime.Now };
if (await dbService.AddFileEntryAsync(entry)) if (await dbService.AddFileEntryAsync(entry))
{ {
@@ -38,6 +42,12 @@ namespace TBDel.Commands
else if (Directory.Exists(absolutePath)) else if (Directory.Exists(absolutePath))
{ {
Console.WriteLine($"Adding: {absolutePath}"); Console.WriteLine($"Adding: {absolutePath}");
if (await dbService.EtryExists(absolutePath))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("Folder already exists in the list - No actions performed.");
return;
}
var entry = new FolderEntry() { Id = GenerateUniqueId(dbService), Path = absolutePath, DateAdded = DateTime.Now }; var entry = new FolderEntry() { Id = GenerateUniqueId(dbService), Path = absolutePath, DateAdded = DateTime.Now };
if (await dbService.AddFolderEntryAsync(entry)) if (await dbService.AddFolderEntryAsync(entry))
{ {

View File

@@ -22,6 +22,7 @@ public static class HelpCommand
Console.WriteLine(" add <path to file or folder> Add a file or folder to the list"); Console.WriteLine(" add <path to file or folder> Add a file or folder to the list");
Console.WriteLine(" delete <file or folder ID> Deletes a file or folder"); Console.WriteLine(" delete <file or folder ID> Deletes a file or folder");
Console.WriteLine(" deleteall Deletes all items in the list"); Console.WriteLine(" deleteall Deletes all items in the list");
Console.WriteLine(" rmflist Remove an entry ONLY from the list");
Console.WriteLine(" list Lists all items in the list"); Console.WriteLine(" list Lists all items in the list");
Console.WriteLine(" help Shows this help message"); Console.WriteLine(" help Shows this help message");
} }

View File

@@ -0,0 +1,41 @@
using TBDel.Services;
namespace TBDel.Commands;
public class RemoveFromListCommand
{
public static async Task DeleteEntryFromList(String[] args)
{
var dbService = new DbService();
if (args.Length > 1 && uint.TryParse(args[1], out uint id))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write($"Are you sure you want to remove the entry with ID {id} ONLY from the list? (y/N) ");
Console.ResetColor();
var input = Console.ReadLine();
if (input != "y")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Operation cancelled.");
Console.ResetColor();
return;
}
if (await dbService.RemoveFileEntryAsync(id) || await dbService.RemoveFolderEntryAsync(id))
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Entry removed from the list.");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Something went wrong while removing the entry from list.");
Console.ResetColor();
}
}
}
}

View File

@@ -4,8 +4,6 @@ namespace TBDel
{ {
internal class Program internal class Program
{ {
// 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
@@ -28,6 +26,9 @@ namespace TBDel
case "deleteall": case "deleteall":
await DeleteAllCommand.DeleteAll(); await DeleteAllCommand.DeleteAll();
break; break;
case "rmflist":
await RemoveFromListCommand.DeleteEntryFromList(args);
break;
case "list": case "list":
await ListCommand.List(args); await ListCommand.List(args);
break; break;

View File

@@ -16,6 +16,7 @@ Usage: tbdel <command> [arguments]
Available commands: Available commands:
add <path to file or folder> Add a file or folder to the list add <path to file or folder> Add a file or folder to the list
delete <file or folder ID> Deletes a file or folder delete <file or folder ID> Deletes a file or folder
rmflist Remove an entry ONLY from the list
deleteall Deletes all items in the list deleteall Deletes all items in the list
list Lists all items in the list list Lists all items in the list
help Shows this help message help Shows this help message
@@ -36,6 +37,11 @@ help Shows this help message
```shell ```shell
tbdel list tbdel list
``` ```
* Remove an entry ONLY from the list: **(Assuming '12345' is the ID of the entry you want to remove from the list)**
```shell
tbdel rmflist 12345
```
* Delete an entry (using its ID): **(Assuming '12345' is the ID of the entry you want to delete)** * Delete an entry (using its ID): **(Assuming '12345' is the ID of the entry you want to delete)**
```shell ```shell

View File

@@ -106,6 +106,16 @@ namespace TBDel.Services
return String.Empty; return String.Empty;
} }
public async Task<bool> EtryExists(String path)
{
if (_fileCollection.Find(f => f.Path == path) is not null || _folderCollection.Find(f => f.Path == path) is not null)
{
return await Task.FromResult(true);
}
return await Task.FromResult(false);
}
} }
public class DatabaseContent public class DatabaseContent