From 60b38e5434e3ed24564fb491d701b8838e23ef6e Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Tue, 11 Jun 2024 07:37:42 +0200 Subject: [PATCH] add fandom & fix initializeing database --- OwnChar/Data/IDataProvider.cs | 1 + OwnChar/Data/Managers/DefaultDataManager.cs | 20 +++++++++++++++---- OwnChar/Data/Providers/JsonFile/JsonFile.cs | 1 + .../JsonFile/JsonFileDataProvider.cs | 7 ++++++- OwnChar/Manager/OwnCharManager.cs | 1 + OwnChar/Model/Character.cs | 1 + OwnChar/Model/Group.cs | 1 + 7 files changed, 27 insertions(+), 5 deletions(-) diff --git a/OwnChar/Data/IDataProvider.cs b/OwnChar/Data/IDataProvider.cs index 250ca49..cc501fd 100644 --- a/OwnChar/Data/IDataProvider.cs +++ b/OwnChar/Data/IDataProvider.cs @@ -6,6 +6,7 @@ public interface IDataProvider { // General abstract bool IsInitialized(); + abstract void SetInitialized(); // Model abstract T? Create() where T : class, IOwnCharObject; diff --git a/OwnChar/Data/Managers/DefaultDataManager.cs b/OwnChar/Data/Managers/DefaultDataManager.cs index 04c3761..8c30a4b 100644 --- a/OwnChar/Data/Managers/DefaultDataManager.cs +++ b/OwnChar/Data/Managers/DefaultDataManager.cs @@ -2,12 +2,18 @@ namespace OwnChar.Data.Managers; -public class DefaultDataManager(IDataProvider dataProvider) : IDataManager +public class DefaultDataManager : IDataManager { private const string defaultUsername = "admin"; private const string defaultPassword = "admin"; - public IDataProvider DataProvider { get; } = dataProvider; + public IDataProvider DataProvider { get; } + + public DefaultDataManager(IDataProvider dataProvider) + { + DataProvider = dataProvider; + Initialize(false); + } public IEnumerable? GetMembers(Group group) { @@ -37,9 +43,15 @@ public class DefaultDataManager(IDataProvider dataProvider) : IDataManager public bool Initialize(bool force) { + var result = false; + if (force || !DataProvider.IsInitialized()) - return CreateUserAccount(defaultUsername, Utils.HashPassword(defaultUsername, defaultPassword)) != null; - return true; + { + result = CreateUserAccount(defaultUsername, Utils.HashPassword(defaultUsername, defaultPassword)) != null; + DataProvider.SetInitialized(); + } + + return result; } public UserAccount? CreateUserAccount(string username, string password) diff --git a/OwnChar/Data/Providers/JsonFile/JsonFile.cs b/OwnChar/Data/Providers/JsonFile/JsonFile.cs index a8edcd6..bc18040 100644 --- a/OwnChar/Data/Providers/JsonFile/JsonFile.cs +++ b/OwnChar/Data/Providers/JsonFile/JsonFile.cs @@ -4,6 +4,7 @@ namespace OwnChar.Data.Providers.JsonFile; public class JsonFile { + public bool IsInitialized { get; set; } public List UserAccounts { get; } = []; public List Characters { get; } = []; public List Groups { get; } = []; diff --git a/OwnChar/Data/Providers/JsonFile/JsonFileDataProvider.cs b/OwnChar/Data/Providers/JsonFile/JsonFileDataProvider.cs index 83f1f8a..0f4865f 100644 --- a/OwnChar/Data/Providers/JsonFile/JsonFileDataProvider.cs +++ b/OwnChar/Data/Providers/JsonFile/JsonFileDataProvider.cs @@ -87,7 +87,12 @@ public class JsonFileDataProvider : IDataProvider public bool IsInitialized() { - return JsonFile.UserAccounts.Count != 0; + return JsonFile.IsInitialized; + } + + public void SetInitialized() + { + JsonFile.IsInitialized = true; } public bool Delete(T obj) where T : class, IOwnCharObject diff --git a/OwnChar/Manager/OwnCharManager.cs b/OwnChar/Manager/OwnCharManager.cs index 405e34e..777e060 100644 --- a/OwnChar/Manager/OwnCharManager.cs +++ b/OwnChar/Manager/OwnCharManager.cs @@ -44,6 +44,7 @@ public class OwnCharManager username = username.Trim().ToLower(); CurrentUser = proxy.Login(username, Utils.HashPassword(username, password)); + DataManager = proxy; return IsLoggedIn; } diff --git a/OwnChar/Model/Character.cs b/OwnChar/Model/Character.cs index 36d33ca..1c39f35 100644 --- a/OwnChar/Model/Character.cs +++ b/OwnChar/Model/Character.cs @@ -3,4 +3,5 @@ public abstract class Character : IOwnCharObject { public virtual string? Name { get; set; } + public virtual string? Fandom { get; set; } } diff --git a/OwnChar/Model/Group.cs b/OwnChar/Model/Group.cs index c8757a1..f29dbb1 100644 --- a/OwnChar/Model/Group.cs +++ b/OwnChar/Model/Group.cs @@ -3,5 +3,6 @@ public abstract class Group : IOwnCharObject { public virtual string? Name { get; set; } + public virtual string? Fandom { get; set; } public virtual bool IsInternal { get; set; } }