From d974a7f1761f6465436a9d24043576a3f49696ea Mon Sep 17 00:00:00 2001 From: ig Date: Mon, 13 Mar 2023 11:48:04 +0100 Subject: [PATCH] Move tables to main DB class, convert entity related function to extensions --- csharp/App/Backend/Database/Db.cs | 49 +++++++++++++++---- csharp/App/Backend/Database/Fake.cs | 10 ++-- csharp/App/Backend/Database/Folder.cs | 31 +++--------- csharp/App/Backend/Database/Installation.cs | 20 +++----- csharp/App/Backend/Database/User.cs | 32 +++++------- csharp/App/Backend/Database/User2Folder.cs | 12 ----- .../App/Backend/Database/User2Installation.cs | 11 ----- 7 files changed, 70 insertions(+), 95 deletions(-) delete mode 100644 csharp/App/Backend/Database/User2Folder.cs delete mode 100644 csharp/App/Backend/Database/User2Installation.cs diff --git a/csharp/App/Backend/Database/Db.cs b/csharp/App/Backend/Database/Db.cs index 6da24a5f8..b2e488228 100644 --- a/csharp/App/Backend/Database/Db.cs +++ b/csharp/App/Backend/Database/Db.cs @@ -10,9 +10,40 @@ public static partial class Db { internal const String DbPath = "./db.sqlite"; - private static readonly SQLiteConnection _Db = new SQLiteConnection(DbPath); + public static SQLiteConnection Connection { get; } = new SQLiteConnection(DbPath); + + public static TableQuery Sessions => Connection.Table(); + public static TableQuery Folders => Connection.Table(); + public static TableQuery Installations => Connection.Table(); + public static TableQuery Users => Connection.Table(); + public static TableQuery User2Folder => Connection.Table(); + public static TableQuery User2Installation => Connection.Table(); + + public static Int32 NbUser2Installation => User2Installation.Count(); + public static Int32 NbUser2Folder => User2Folder.Count(); + public static Int32 NbFolders => Folders.Count(); + public static Int32 NbInstallations => Installations.Count(); + public static Int32 NbUsers => Users.Count(); + + + public static Folder? GetFolderById(Int64 id) + { + return Folders + .FirstOrDefault(f => f.Id == id); + } + + public static Installation? GetInstallationById(Int64 id) + { + return Installations + .FirstOrDefault(i => i.Id == id); + } + + public static User? GetUserById(Int64 id) + { + return Users + .FirstOrDefault(u => u.Id == id); + } - private static TableQuery Sessions => _Db.Table(); [SuppressMessage("ReSharper", "AccessToDisposedClosure")] static Db() @@ -38,8 +69,8 @@ public static partial class Db { try { - _Db.Insert(treeNode); - return SQLite3.LastInsertRowid(_Db.Handle); + Connection.Insert(treeNode); + return SQLite3.LastInsertRowid(Connection.Handle); } catch (Exception e) { @@ -52,7 +83,7 @@ public static partial class Db { try { - _Db.Insert(session); + Connection.Insert(session); return true; } catch (Exception e) @@ -66,7 +97,7 @@ public static partial class Db { try { - _Db.InsertOrReplace(treeNode); + Connection.InsertOrReplace(treeNode); return true; } catch (Exception e) @@ -80,7 +111,7 @@ public static partial class Db { try { - _Db.Delete(treeNode); + Connection.Delete(treeNode); return true; } catch (Exception e) @@ -141,7 +172,7 @@ public static partial class Db try { - _Db.Insert(con); + Connection.Insert(con); return true; } catch (Exception e) @@ -160,7 +191,7 @@ public static partial class Db try { - _Db.Insert(con); + Connection.Insert(con); return true; } catch (Exception e) diff --git a/csharp/App/Backend/Database/Fake.cs b/csharp/App/Backend/Database/Fake.cs index 6c88cc3be..7eca66ce8 100644 --- a/csharp/App/Backend/Database/Fake.cs +++ b/csharp/App/Backend/Database/Fake.cs @@ -6,7 +6,7 @@ public static partial class Db { public static void CreateFakeRelations() { - _Db.RunInTransaction(() => + Connection.RunInTransaction(() => { CreateFakeUserTree(); CreateFakeFolderTree(); @@ -62,7 +62,7 @@ public static partial class Db private static void GiveFakeUsersAccessToFolders() { foreach (var uf in User2Folder) // remove existing relations - _Db.Delete(uf); + Connection.Delete(uf); var nFolders = NbFolders; var nUsers = NbUsers; @@ -75,14 +75,14 @@ public static partial class Db UserId = user.Id, FolderId = Random.Shared.Next(nFolders) + 1 }; - _Db.Insert(relation); + Connection.Insert(relation); } } private static void GiveFakeUsersAccessToInstallations() { foreach (var ui in User2Installation) // remove existing relations - _Db.Delete(ui); + Connection.Delete(ui); var nbInstallations = NbInstallations; @@ -94,7 +94,7 @@ public static partial class Db UserId = user.Id, InstallationId = Random.Shared.Next(nbInstallations) + 1 }; - _Db.Insert(relation); + Connection.Insert(relation); } } } \ No newline at end of file diff --git a/csharp/App/Backend/Database/Folder.cs b/csharp/App/Backend/Database/Folder.cs index 3b08ad654..9383354c2 100644 --- a/csharp/App/Backend/Database/Folder.cs +++ b/csharp/App/Backend/Database/Folder.cs @@ -1,64 +1,49 @@ using InnovEnergy.App.Backend.Model; using InnovEnergy.Lib.Utils; -using SQLite; namespace InnovEnergy.App.Backend.Database; public static partial class Db { - private static TableQuery Folders => _Db.Table(); - - public static Int32 NbFolders => Folders.Count(); - - public static Folder? GetFolderById(Int64 id) - { - return Folders.FirstOrDefault(u => u.Id == id); - - // if (folder is null) - // return null; - - //return PopulateDescendants(folder); - } - - public static IEnumerable GetChildFolders(Folder parent) + public static IEnumerable GetChildFolders(this Folder parent) { return Folders.Where(f => f.ParentId == parent.Id); } - public static IEnumerable GetChildInstallations(Folder parent) + public static IEnumerable GetChildInstallations(this Folder parent) { return Installations.Where(f => f.ParentId == parent.Id); } - public static IEnumerable GetDescendantFolders(Folder parent) + public static IEnumerable GetDescendantFolders(this Folder parent) { return parent.Traverse(GetChildFolders); } - public static Boolean IsDescendantOf(Folder folder, Int64 ancestorFolderId) + public static Boolean IsDescendantOf(this Folder folder, Int64 ancestorFolderId) { return Ancestors(folder) .Any(u => u.Id == ancestorFolderId); } - public static Boolean IsDescendantOf(Folder folder, Folder ancestor) + public static Boolean IsDescendantOf(this Folder folder, Folder ancestor) { return IsDescendantOf(folder, ancestor.Id); } - private static IEnumerable Ancestors(Folder child) + private static IEnumerable Ancestors(this Folder child) { return child.Unfold(GetParent); } - public static Folder? GetParent(Folder f) + public static Folder? GetParent(this Folder f) { return IsRoot(f) ? null : GetFolderById(f.ParentId); } - public static Boolean IsRoot(Folder f) + public static Boolean IsRoot(this Folder f) { return f.ParentId == 0; // root has ParentId 0 by definition } diff --git a/csharp/App/Backend/Database/Installation.cs b/csharp/App/Backend/Database/Installation.cs index 777b19cbc..3220637c0 100644 --- a/csharp/App/Backend/Database/Installation.cs +++ b/csharp/App/Backend/Database/Installation.cs @@ -5,15 +5,7 @@ namespace InnovEnergy.App.Backend.Database; public static partial class Db { - - private static TableQuery Installations => _Db.Table(); - - public static Int32 NbInstallations => Installations.Count(); - - public static Installation? GetInstallationById(Int64 id) => Installations - .FirstOrDefault(u => u.Id == id); - - private static IEnumerable Ancestors(Installation installation) + public static IEnumerable Ancestors(this Installation installation) { var parentFolder = GetParent(installation); @@ -22,29 +14,29 @@ public static partial class Db : Ancestors(parentFolder); } - public static Folder? GetParent(Installation installation) + public static Folder? GetParent(this Installation installation) { return IsRoot(installation) ? null : GetFolderById(installation.ParentId); } - public static Boolean IsRoot(Installation i) + public static Boolean IsRoot(this Installation i) { return i.ParentId == 0; // root has ParentId 0 by definition } - public static Int64 CreateInstallation(Installation installation) + public static Int64 CreateInstallation(this Installation installation) { return Create(installation); } - public static Boolean UpdateInstallation(Installation installation) + public static Boolean UpdateInstallation(this Installation installation) { return Update(installation); } - public static Boolean DeleteInstallation(Installation installation) + public static Boolean DeleteInstallation(this Installation installation) { User2Installation.Delete(i => i.InstallationId == installation.Id); diff --git a/csharp/App/Backend/Database/User.cs b/csharp/App/Backend/Database/User.cs index 09c52bd85..5d91f3eee 100644 --- a/csharp/App/Backend/Database/User.cs +++ b/csharp/App/Backend/Database/User.cs @@ -7,67 +7,57 @@ using System.Text.RegularExpressions; using InnovEnergy.App.Backend.Model; using InnovEnergy.App.Backend.Utils; using InnovEnergy.Lib.Utils; -using SQLite; namespace InnovEnergy.App.Backend.Database; - public static partial class Db { - private static TableQuery Users => _Db.Table(); - - public static Int32 NbUsers => Users.Count(); - - public static IEnumerable GetChildUsers(User parent) + public static IEnumerable GetChildUsers(this User parent) { - return Users.Where(f => f.ParentId == parent.Id); + return Users + .Where(f => f.ParentId == parent.Id); } - public static IEnumerable GetDescendantUsers(User parent) + public static IEnumerable GetDescendantUsers(this User parent) { return parent.Traverse(GetChildUsers); } - - public static User? GetUserById(Int64 id) - { - return Users.FirstOrDefault(u => u.Id == id); - } - public static Boolean IsDescendantOf(User user, User ancestor) + public static Boolean IsDescendantOf(this User user, User ancestor) { return Ancestors(user) .Any(u => u.Id == ancestor.Id); } - private static IEnumerable Ancestors(User child) + private static IEnumerable Ancestors(this User child) { return child.Unfold(GetParent); } - public static User? GetParent(User u) + public static User? GetParent(this User u) { return IsRoot(u) ? null : GetUserById(u.ParentId); } - public static Boolean IsRoot(User u) + public static Boolean IsRoot(this User u) { return u.ParentId == 0; // root has ParentId 0 by definition } - public static Boolean HasDirectAccessToFolder(User user, Folder folder) + public static Boolean HasDirectAccessToFolder(this User user, Folder folder) { return HasDirectAccessToFolder(user, folder.Id); } - public static Boolean HasDirectAccessToFolder(User user, Int64 folderId) + public static Boolean HasDirectAccessToFolder(this User user, Int64 folderId) { return User2Folder.Any(r => r.FolderId == folderId && r.UserId == user.Id); } - public static Boolean HasAccessToFolder(User user, Int64 folderId) + public static Boolean HasAccessToFolder(this User user, Int64 folderId) { var folder = GetFolderById(folderId); if (folder is null) diff --git a/csharp/App/Backend/Database/User2Folder.cs b/csharp/App/Backend/Database/User2Folder.cs deleted file mode 100644 index 38316200f..000000000 --- a/csharp/App/Backend/Database/User2Folder.cs +++ /dev/null @@ -1,12 +0,0 @@ -using InnovEnergy.App.Backend.Model.Relations; -using SQLite; - -namespace InnovEnergy.App.Backend.Database; - -public static partial class Db -{ - private static TableQuery User2Folder => _Db.Table(); - public static Int32 NbUser2Folder => User2Folder.Count(); - -} - diff --git a/csharp/App/Backend/Database/User2Installation.cs b/csharp/App/Backend/Database/User2Installation.cs deleted file mode 100644 index 0f8eb36a0..000000000 --- a/csharp/App/Backend/Database/User2Installation.cs +++ /dev/null @@ -1,11 +0,0 @@ -using InnovEnergy.App.Backend.Model.Relations; -using SQLite; - -namespace InnovEnergy.App.Backend.Database; - -public static partial class Db -{ - private static TableQuery User2Installation => _Db.Table(); - public static Int32 NbUser2Installation => User2Installation.Count(); -} -