3 Commits
v1 ... v2

Author SHA1 Message Date
9744b2a788 Add a command to remove a file or folder only from the list 2025-02-26 15:23:09 +03:30
c4e8945371 Add duplicate path check 2025-02-26 15:08:48 +03:30
97e564d352 Update README 2025-02-04 17:32:51 +03:30
6 changed files with 79 additions and 7 deletions

View File

@@ -1,3 +1,4 @@
using System.Diagnostics.Contracts;
using TBDel.Models;
using TBDel.Services;
@@ -7,9 +8,6 @@ namespace TBDel.Commands
{
public static async Task AddEntry(string[] args)
{
// TODO: Add duplicate path check
// TODO: Add support for multiple paths
if (args.Length > 1)
{
string workingDirectory = Directory.GetCurrentDirectory();
@@ -19,6 +17,12 @@ namespace TBDel.Commands
if (File.Exists(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 };
if (await dbService.AddFileEntryAsync(entry))
{
@@ -38,6 +42,12 @@ namespace TBDel.Commands
else if (Directory.Exists(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 };
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(" delete <file or folder ID> Deletes a file or folder");
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(" 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
{
// 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)
{
// Show the help message if no arguments are provided
@@ -28,6 +26,9 @@ namespace TBDel
case "deleteall":
await DeleteAllCommand.DeleteAll();
break;
case "rmflist":
await RemoveFromListCommand.DeleteEntryFromList(args);
break;
case "list":
await ListCommand.List(args);
break;

View File

@@ -3,7 +3,10 @@
## Installation
Soon...
- Install on Arch Linux (aur)
```shell
paru -S tbdel
```
## Usage
@@ -13,6 +16,7 @@ Usage: tbdel <command> [arguments]
Available commands:
add <path to file or folder> Add a file or folder to the list
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
list Lists all items in the list
help Shows this help message
@@ -33,6 +37,11 @@ help Shows this help message
```shell
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)**
```shell
@@ -55,4 +64,4 @@ help Shows this help message
## License
This project is licensed under the GNU Affero General Public License v3.0 - see the [LICENSE](LICENSE) file for details.
This project is licensed under the GNU Affero General Public License v3.0 - see the [LICENSE](LICENSE) file for details.

View File

@@ -106,6 +106,16 @@ namespace TBDel.Services
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