using Backend.Model; using Backend.Utils; using InnovEnergy.Lib.Utils; using SQLite; namespace Backend.Database; public partial class Db { private TableQuery Folders => _Db.Table(); public Int32 NbFolders => Folders.Count(); public Folder? GetFolderById(Int64 id) { return Folders.FirstOrDefault(u => u.Id == id); // if (folder is null) // return null; //return PopulateDescendants(folder); } public IEnumerable GetChildFolders(Folder folder) { return Folders.Where(f => f.ParentId == f.Id); } public IEnumerable GetDescendantFolders(Folder folder) { return folder.Traverse(GetChildFolders); } public IEnumerable GetChildInstallations(Folder folder) { return Installations.Where(f => f.ParentId == f.Id); } public Result CreateFolder(Folder folder) { return Create(folder); } public Result UpdateFolder(Folder folder) { // TODO: no circles in path return Update(folder); } public Result ChangeParent(Installation child, Int64 parentId) { child.ParentId = parentId; return UpdateInstallation(child); } public Result ChangeParent(Folder child, Int64 parentId) { child.ParentId = parentId; return UpdateFolder(child); } public Result DeleteFolder(Folder folder) { User2Folder .Where(f => f.FolderId == folder.Id) .Delete(); // TODO: delete descendants? Here they are just adopted one level up foreach (var l in Installations .Where(i => i.ParentId == folder.Id)) { ChangeParent(l, folder.ParentId); } return Delete(folder); } }