From d1b7cee741ebf9a4d5eee31333d5fefaa52b5754 Mon Sep 17 00:00:00 2001 From: jkpete <1031139173@qq.com> Date: Tue, 15 Apr 2025 10:49:15 +0800 Subject: [PATCH] fixed egmysqlsave and savetoolsinterface --- .../Module/SaveTools/EGByteSave.cs | 4 ++ .../EGFramework/Module/SaveTools/EGCsvSave.cs | 9 ++++ .../Module/SaveTools/EGJsonSave.cs | 6 +++ .../Module/SaveTools/EGLiteDBSave.cs | 9 ++++ .../Module/SaveTools/EGMysqlSave.cs | 48 +++++++++++++++++-- .../Module/SaveTools/SaveToolsInterface.cs | 3 ++ 6 files changed, 74 insertions(+), 5 deletions(-) diff --git a/addons/EGFramework/Module/SaveTools/EGByteSave.cs b/addons/EGFramework/Module/SaveTools/EGByteSave.cs index 3e20286..753f2e6 100644 --- a/addons/EGFramework/Module/SaveTools/EGByteSave.cs +++ b/addons/EGFramework/Module/SaveTools/EGByteSave.cs @@ -110,6 +110,10 @@ namespace EGFramework throw new NotImplementedException(); } + public bool ContainsKey(string objectKey) + { + throw new NotImplementedException(); + } } public interface IEGByteInit{ diff --git a/addons/EGFramework/Module/SaveTools/EGCsvSave.cs b/addons/EGFramework/Module/SaveTools/EGCsvSave.cs index 1896037..b015409 100644 --- a/addons/EGFramework/Module/SaveTools/EGCsvSave.cs +++ b/addons/EGFramework/Module/SaveTools/EGCsvSave.cs @@ -310,6 +310,15 @@ namespace EGFramework return CsvDataHeader.Keys; } + public bool ContainsKey(string dataKey) + { + return CsvDataHeader.ContainsKey(dataKey); + } + + public bool ContainsData(string dataKey, object id) + { + return CsvDataBlock.Count() > 0 && id.GetType() == typeof(int) && (int)id < CsvDataBlock.Count(); + } } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] diff --git a/addons/EGFramework/Module/SaveTools/EGJsonSave.cs b/addons/EGFramework/Module/SaveTools/EGJsonSave.cs index 4eaa7f2..8cd50f3 100644 --- a/addons/EGFramework/Module/SaveTools/EGJsonSave.cs +++ b/addons/EGFramework/Module/SaveTools/EGJsonSave.cs @@ -126,5 +126,11 @@ namespace EGFramework } return keys; } + + public bool ContainsKey(string objectKey) + { + return SaveObject.ContainsKey(objectKey); + } + } } \ No newline at end of file diff --git a/addons/EGFramework/Module/SaveTools/EGLiteDBSave.cs b/addons/EGFramework/Module/SaveTools/EGLiteDBSave.cs index 6aba9ce..67cf24a 100644 --- a/addons/EGFramework/Module/SaveTools/EGLiteDBSave.cs +++ b/addons/EGFramework/Module/SaveTools/EGLiteDBSave.cs @@ -90,5 +90,14 @@ namespace EGFramework return Database.GetCollectionNames(); } + public bool ContainsKey(string dataKey) + { + return GetKeys().Contains(dataKey); + } + + public bool ContainsData(string dataKey, object id) + { + return Database.GetCollection(dataKey).Exists((BsonValue)id); + } } } \ No newline at end of file diff --git a/addons/EGFramework/Module/SaveTools/EGMysqlSave.cs b/addons/EGFramework/Module/SaveTools/EGMysqlSave.cs index 995252e..0b599e1 100644 --- a/addons/EGFramework/Module/SaveTools/EGMysqlSave.cs +++ b/addons/EGFramework/Module/SaveTools/EGMysqlSave.cs @@ -34,8 +34,6 @@ namespace EGFramework{ } } - - public IEnumerable GetAll(string dataKey) where TData : new() { IEnumerable result = Connection.Query("select * from "+dataKey); @@ -56,11 +54,25 @@ namespace EGFramework{ public void SetData(string dataKey, TData data, object id) { - throw new NotImplementedException(); + if(data == null) + { + throw new ArgumentNullException(nameof(data)); + }else{ + if(this.ContainsData(dataKey,id)){ + UpdateData(dataKey,data,id); + }else{ + AddData(dataKey,data); + } + //EG.Print("data:" + data); + } } public void AddData(string dataKey, TData data) { + if(data == null) + { + throw new ArgumentNullException(nameof(data)); + } // throw new System.NotImplementedException(); Type DataType = typeof(TData); var properties = DataType.GetProperties(); @@ -95,13 +107,16 @@ namespace EGFramework{ public void RemoveData(string dataKey, object id) { - Type DataType = typeof(TData); int count = Connection.Execute(@"delete from "+dataKey+" where ID = @ID",new {ID = id}); //EG.Print("count:" + count); } public void UpdateData(string dataKey, TData data, object id) { + if(data == null) + { + throw new ArgumentNullException(nameof(data)); + } Type DataType = typeof(TData); EG.Print("----"+DataType.Name); var properties = DataType.GetProperties(); @@ -121,8 +136,31 @@ namespace EGFramework{ public IEnumerable GetKeys() { - throw new NotImplementedException(); + IEnumerable result = Connection.Query("show tables"); + return result; } + public bool ContainsKey(string dataKey) + { + return GetKeys().Contains(dataKey); + } + + public bool ContainsData(string dataKey, object id) + { + try + { + var result = Connection.QuerySingle("select * from "+dataKey+" where ID = @ID",new {ID = id}); + if(result == null){ + return false; + }else{ + return true; + } + } + catch (System.Exception) + { + return false; + } + + } } } \ No newline at end of file diff --git a/addons/EGFramework/Module/SaveTools/SaveToolsInterface.cs b/addons/EGFramework/Module/SaveTools/SaveToolsInterface.cs index 79000b9..19c6086 100644 --- a/addons/EGFramework/Module/SaveTools/SaveToolsInterface.cs +++ b/addons/EGFramework/Module/SaveTools/SaveToolsInterface.cs @@ -19,12 +19,15 @@ namespace EGFramework public interface IEGSaveObjectReadOnly{ TObject GetObject(string objectKey) where TObject : new(); IEnumerable GetKeys(); + bool ContainsKey(string objectKey); } public interface IEGSaveDataReadOnly{ TData GetData(string dataKey,object id) where TData : new(); IEnumerable GetAll(string dataKey) where TData : new(); IEnumerable FindData(string dataKey,Expression> expression) where TData : new(); IEnumerable GetKeys(); + bool ContainsKey(string dataKey); + bool ContainsData(string dataKey,object id); } public interface IEGSaveObject : IEGSaveObjectReadOnly{