Implemented unique Id for each entry - Implemented delete single entry command
This commit is contained in:
@@ -1,62 +1,81 @@
|
||||
using TBDel.Models;
|
||||
using TBDel.Services;
|
||||
|
||||
namespace TBDel.Commands;
|
||||
|
||||
public class AddCommand
|
||||
namespace TBDel.Commands
|
||||
{
|
||||
|
||||
public static async Task<Boolean> AddEntry(string[] args)
|
||||
public class AddCommand
|
||||
{
|
||||
// TODO: Add unique Id support
|
||||
// TODO: Add duplicate path check
|
||||
// TODO: Add support for multiple paths
|
||||
|
||||
if (args.Length > 1)
|
||||
public static async Task AddEntry(string[] args)
|
||||
{
|
||||
string workingDirectory = Directory.GetCurrentDirectory();
|
||||
string absolutePath = Path.Combine(workingDirectory, args[1]);
|
||||
if (File.Exists(absolutePath))
|
||||
// TODO: Add duplicate path check
|
||||
// TODO: Add support for multiple paths
|
||||
|
||||
if (args.Length > 1)
|
||||
{
|
||||
Console.WriteLine($"Adding: {absolutePath}");
|
||||
var entry = new FileEntry { Path = absolutePath, DateAdded = DateTime.Now };
|
||||
string workingDirectory = Directory.GetCurrentDirectory();
|
||||
string absolutePath = Path.Combine(workingDirectory, args[1]);
|
||||
var dbService = new DbService();
|
||||
if (await dbService.AddFileEntryAsync(entry))
|
||||
|
||||
if (File.Exists(absolutePath))
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("File added successfully.");
|
||||
Console.ResetColor();
|
||||
return true;
|
||||
Console.WriteLine($"Adding: {absolutePath}");
|
||||
var entry = new FileEntry { Id = GenerateUniqueId(dbService), Path = absolutePath, DateAdded = DateTime.Now };
|
||||
if (await dbService.AddFileEntryAsync(entry))
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("File added successfully.");
|
||||
Console.ResetColor();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Failed to add file.");
|
||||
Console.ResetColor();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (Directory.Exists(absolutePath))
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Failed to add file.");
|
||||
Console.ResetColor();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (Directory.Exists(absolutePath))
|
||||
{
|
||||
Console.WriteLine($"Adding: {absolutePath}");
|
||||
var entry = new FolderEntry() { Path = absolutePath, DateAdded = DateTime.Now };
|
||||
var dbService = new DbService();
|
||||
if (await dbService.AddFolderEntryAsync(entry))
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("Directory added successfully.");
|
||||
Console.ResetColor();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Failed to add directory.");
|
||||
Console.ResetColor();
|
||||
return false;
|
||||
Console.WriteLine($"Adding: {absolutePath}");
|
||||
var entry = new FolderEntry() { Id = GenerateUniqueId(dbService), Path = absolutePath, DateAdded = DateTime.Now };
|
||||
if (await dbService.AddFolderEntryAsync(entry))
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("Directory added successfully.");
|
||||
Console.ResetColor();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Failed to add directory.");
|
||||
Console.ResetColor();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
private static uint GenerateUniqueId(DbService dbService)
|
||||
{
|
||||
// Hopefully not running away from me one day
|
||||
Random random = new Random();
|
||||
uint newId;
|
||||
do
|
||||
{
|
||||
newId = (uint)random.Next(10000, 99999);
|
||||
} while (IdExists(newId, dbService));
|
||||
return newId;
|
||||
}
|
||||
|
||||
private static bool IdExists(uint id, DbService dbService)
|
||||
{
|
||||
// Not async? Not a problem (yet(?))
|
||||
var fileEntries = dbService.GetFileEntriesAsync().Result;
|
||||
var folderEntries = dbService.GetFolderEntriesAsync().Result;
|
||||
|
||||
return fileEntries.Any(e => e.Id == id) || folderEntries.Any(e => e.Id == id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,55 +1,49 @@
|
||||
using TBDel.Services;
|
||||
|
||||
namespace TBDel.Commands;
|
||||
|
||||
public class DeleteCAllCommand
|
||||
namespace TBDel.Commands
|
||||
{
|
||||
public static async Task DeleteAll()
|
||||
public class DeleteAllCommand
|
||||
{
|
||||
var dbService = new DbService();
|
||||
var allFiles = await dbService.GetFileEntriesAsync();
|
||||
var allFolders = await dbService.GetFolderEntriesAsync();
|
||||
|
||||
if (allFiles.Count == 0 && allFolders.Count == 0)
|
||||
public static async Task DeleteAll()
|
||||
{
|
||||
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.");
|
||||
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)
|
||||
{
|
||||
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);
|
||||
await dbService.RemoveFolderEntryAsync(folder.Id);
|
||||
}
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("All files and folders deleted successfully.");
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,35 +1,38 @@
|
||||
using TBDel.Models;
|
||||
using TBDel.Services;
|
||||
|
||||
namespace TBDel.Commands;
|
||||
|
||||
|
||||
public class DeleteCommand
|
||||
namespace TBDel.Commands
|
||||
{
|
||||
// Will be done by unique file Id
|
||||
public static async Task DeleteEntry(string[] args)
|
||||
public class DeleteCommand
|
||||
{
|
||||
var dbService = new DbService();
|
||||
if (args.Length > 1)
|
||||
public static async Task DeleteEntry(string[] args)
|
||||
{
|
||||
if (File.Exists(args[1]))
|
||||
var dbService = new DbService();
|
||||
if (args.Length > 1 && uint.TryParse(args[1], out uint id))
|
||||
{
|
||||
Console.WriteLine($"Deleteing file: {args[1]}");
|
||||
if (await dbService.RemoveFileEntryAsync(args[1]))
|
||||
Console.WriteLine($"Deleting entry with ID: {id}");
|
||||
bool fileDeleted = await dbService.RemoveFileEntryAsync(id);
|
||||
bool folderDeleted = await dbService.RemoveFolderEntryAsync(id);
|
||||
|
||||
if (fileDeleted || folderDeleted)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
Console.WriteLine("File deleted successfully");
|
||||
Console.WriteLine("Entry deleted successfully.");
|
||||
Console.ResetColor();
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("something went wrong");
|
||||
Console.WriteLine("Something went wrong. Entry not found.");
|
||||
Console.ResetColor();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Invalid or missing ID argument.");
|
||||
Console.ResetColor();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -1,77 +1,78 @@
|
||||
using TBDel.Models;
|
||||
using TBDel.Services;
|
||||
|
||||
namespace TBDel.Commands;
|
||||
|
||||
public class ListCommand
|
||||
namespace TBDel.Commands
|
||||
{
|
||||
public static async Task List(string[] args)
|
||||
public class ListCommand
|
||||
{
|
||||
if (args.Length > 2)
|
||||
public static async Task List(string[] args)
|
||||
{
|
||||
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++)
|
||||
if (args.Length > 2)
|
||||
{
|
||||
Console.Write("-");
|
||||
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();
|
||||
}
|
||||
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();
|
||||
private static async Task ListFiles()
|
||||
{
|
||||
var dbService = new DbService();
|
||||
var filesList = await dbService.GetFileEntriesAsync();
|
||||
|
||||
if (filesList.Count == 0)
|
||||
{
|
||||
Console.WriteLine("No files found.");
|
||||
return;
|
||||
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,-10} {1,-90} {2,10}\n", "ID", "Path", "Date added");
|
||||
Console.ResetColor();
|
||||
foreach (var file in filesList)
|
||||
{
|
||||
Console.WriteLine("{0,-10} {1,-90} {2,10}", file.Id, file.Path, file.DateAdded);
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
private static async Task ListFolders()
|
||||
{
|
||||
Console.WriteLine("{0,-100} {1,10}", file.Path, file.DateAdded);
|
||||
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,-10} {1,-90} {2,10}\n", "ID", "Path", "Date added");
|
||||
Console.ResetColor();
|
||||
foreach (var folder in foldersList)
|
||||
{
|
||||
Console.WriteLine("{0,-10} {1,-90} {2,10}", folder.Id, folder.Path, folder.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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ namespace TBDel
|
||||
await DeleteCommand.DeleteEntry(args);
|
||||
break;
|
||||
case "deleteall":
|
||||
await DeleteCAllCommand.DeleteAll();
|
||||
await DeleteAllCommand.DeleteAll();
|
||||
break;
|
||||
case "list":
|
||||
await ListCommand.List(args);
|
||||
|
@@ -66,9 +66,9 @@ namespace TBDel.Services
|
||||
return await Task.FromResult(_folderCollection.ToList());
|
||||
}
|
||||
|
||||
public async Task<bool> RemoveFileEntryAsync(string path)
|
||||
public async Task<bool> RemoveFileEntryAsync(uint id)
|
||||
{
|
||||
var entryToRemove = _fileCollection.FirstOrDefault(e => e.Path == path);
|
||||
var entryToRemove = _fileCollection.FirstOrDefault(e => e.Id == id);
|
||||
if (entryToRemove != null)
|
||||
{
|
||||
_fileCollection.Remove(entryToRemove);
|
||||
@@ -78,9 +78,9 @@ namespace TBDel.Services
|
||||
return await Task.FromResult(false);
|
||||
}
|
||||
|
||||
public async Task<bool> RemoveFolderEntryAsync(string path)
|
||||
public async Task<bool> RemoveFolderEntryAsync(uint id)
|
||||
{
|
||||
var entryToRemove = _folderCollection.FirstOrDefault(e => e.Path == path);
|
||||
var entryToRemove = _folderCollection.FirstOrDefault(e => e.Id == id);
|
||||
if (entryToRemove != null)
|
||||
{
|
||||
_folderCollection.Remove(entryToRemove);
|
||||
@@ -89,6 +89,8 @@ namespace TBDel.Services
|
||||
}
|
||||
return await Task.FromResult(false);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class DatabaseContent
|
||||
|
Reference in New Issue
Block a user