Procházet zdrojové kódy

Vitorm.Data DataProviderCache

Lith před 7 měsíci
rodič
revize
6def91e49e
2 změnil soubory, kde provedl 14 přidání a 12 odebrání
  1. 13 11
      src/Vitorm.Data/Data.DataSource.cs
  2. 1 1
      src/Vitorm.Data/Data.cs

+ 13 - 11
src/Vitorm.Data/Data.DataSource.cs

@@ -22,7 +22,7 @@ namespace Vitorm
 
             readonly ConcurrentDictionary<Type, IDataProvider> entityProviderMap = new();
 
-            readonly List<DataProviderCache> providerCache = new();
+            readonly List<DataProviderCache> providerList = new();
             DataProviderCache CreateDataProvider(Dictionary<string, object> dataProviderConfig)
             {
                 /*
@@ -73,21 +73,23 @@ namespace Vitorm
                 return this;
             }
 
-            public virtual DataSource AddDataProviders(JsonFile json, string configPath = "Vitorm.Data")
+            public virtual int AddDataProviders(JsonFile json, string configPath = "Vitorm.Data")
             {
                 var dataProviderConfigs = json.GetByPath<List<Dictionary<string, object>>>(configPath);
                 return AddDataProviders(dataProviderConfigs);
             }
 
-            public virtual DataSource AddDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs)
+            public virtual int AddDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs)
             {
                 var dataProviders = dataProviderConfigs?.Select(CreateDataProvider).NotNull().ToList();
 
-                if (dataProviders?.Any() == true) providerCache.AddRange(dataProviders);
+                if (dataProviders?.Any() != true) return 0;
+
+                providerList.AddRange(dataProviders);
 
                 entityProviderMap.Clear();
 
-                return this;
+                return dataProviders.Count;
             }
 
             /// <summary>
@@ -100,7 +102,7 @@ namespace Vitorm
                 var provider = CreateDataProvider(dataProviderConfig);
                 if (provider == null) return false;
 
-                providerCache.Insert(0, provider);
+                providerList.Insert(0, provider);
                 entityProviderMap.Clear();
                 return true;
             }
@@ -115,7 +117,7 @@ namespace Vitorm
                 var provider = CreateDataProvider(dataProviderConfig);
                 if (provider == null) return false;
 
-                providerCache.Add(provider);
+                providerList.Add(provider);
                 entityProviderMap.Clear();
                 return true;
             }
@@ -123,9 +125,9 @@ namespace Vitorm
             public virtual void ClearDataProviders(Predicate<DataProviderCache> predicate = null)
             {
                 if (predicate != null)
-                    providerCache.RemoveAll(predicate);
+                    providerList.RemoveAll(predicate);
                 else
-                    providerCache.Clear();
+                    providerList.Clear();
 
                 entityProviderMap.Clear();
             }
@@ -142,7 +144,7 @@ namespace Vitorm
             private IDataProvider GetDataProviderFromConfig(Type entityType)
             {
                 var classFullName = entityType.FullName;
-                return providerCache.FirstOrDefault(cache => cache.Match(classFullName))?.dataProvider
+                return providerList.FirstOrDefault(cache => cache.Match(classFullName))?.dataProvider
                     ?? throw new NotImplementedException("can not find config for type: " + classFullName);
             }
 
@@ -153,7 +155,7 @@ namespace Vitorm
             /// <returns></returns>
             public virtual IDataProvider DataProvider(string nameOrNamespace)
             {
-                return providerCache.FirstOrDefault(cache => cache.name == nameOrNamespace || cache.Match(nameOrNamespace))?.dataProvider;
+                return providerList.FirstOrDefault(cache => cache.name == nameOrNamespace || cache.Match(nameOrNamespace))?.dataProvider;
             }
 
             #endregion

+ 1 - 1
src/Vitorm.Data/Data.cs

@@ -62,7 +62,7 @@ namespace Vitorm
         #region DataProvider
 
         public static bool AddDataProvider(Dictionary<string, object> dataProviderConfig) => dataSource.AddDataProvider(dataProviderConfig);
-        public static void AddDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs) => dataSource.AddDataProviders(dataProviderConfigs);
+        public static int AddDataProviders(IEnumerable<Dictionary<string, object>> dataProviderConfigs) => dataSource.AddDataProviders(dataProviderConfigs);
 
         public static void ClearDataProviders(Predicate<DataProviderCache> predicate = null) => dataSource.ClearDataProviders(predicate);