From a1d9b0451379e2a116f0553e219ead4587fa788d Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 10 Oct 2020 16:12:29 +0200
Subject: [PATCH] BaseUtils: v1.6.1; fetch interval adjustable per cache entry

---
 .../TheCodeLabs_BaseUtils/MultiCacheKeyService.py   | 13 +++++++------
 TheCodeLabs_BaseUtils/setup.py                      |  2 +-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py
index 0228b8d..50b1c64 100644
--- a/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py
+++ b/TheCodeLabs_BaseUtils/TheCodeLabs_BaseUtils/MultiCacheKeyService.py
@@ -8,19 +8,20 @@ from typing import Dict
 @dataclass
 class CacheEntry:
     key: str
-    lastFetchTimestamp: float
+    fetchIntervalInSeconds: int
     settings: Dict
+    lastFetchTimestamp: float
     cachedData: Dict
 
 
 class MultiCacheKeyService(ABC):
-    def __init__(self, fetchThresholdInSeconds: int):
-        self._fetchThresholdInSeconds = fetchThresholdInSeconds
+    def __init__(self):
         self._cache = {}
 
-    def get_data(self, cacheKey: str, settings: Dict) -> Dict:
+    def get_data(self, cacheKey: str, fetchIntervalInSeconds: int, settings: Dict) -> Dict:
         if cacheKey not in self._cache:
-            self._cache[cacheKey] = CacheEntry(cacheKey, datetime.now().timestamp(), settings, {})
+            self._cache[cacheKey] = CacheEntry(cacheKey, fetchIntervalInSeconds, settings,
+                                               datetime.now().timestamp(), {})
 
         cacheEntry = self._cache[cacheKey]
         if self.__is_data_obsolete(cacheEntry):
@@ -29,7 +30,7 @@ class MultiCacheKeyService(ABC):
 
     def __is_data_obsolete(self, cacheEntry: CacheEntry) -> bool:
         now = datetime.now().timestamp()
-        if (now - cacheEntry.lastFetchTimestamp) > self._fetchThresholdInSeconds:
+        if (now - cacheEntry.lastFetchTimestamp) > cacheEntry.fetchIntervalInSeconds:
             cacheEntry.lastFetchTimestamp = now
             return True
 
diff --git a/TheCodeLabs_BaseUtils/setup.py b/TheCodeLabs_BaseUtils/setup.py
index 9ebaa6c..2dec9dd 100644
--- a/TheCodeLabs_BaseUtils/setup.py
+++ b/TheCodeLabs_BaseUtils/setup.py
@@ -3,7 +3,7 @@ from setuptools import setup
 setup(
     name='TheCodeLabs-BaseUtils',
     packages=['TheCodeLabs_BaseUtils'],
-    version='1.6.0',
+    version='1.6.1',
     license='MIT',
     description='Useful python classes',
     author='TheCodeLabs',
-- 
GitLab