better logs
Some checks failed
Run testing on the backend code / Build (pull_request) Has been cancelled
Run linting on the backend code / Build (pull_request) Has been cancelled
Build and deploy the backend to staging / Deploy to staging (pull_request) Has been cancelled
Build and deploy the backend to staging / Build and push image (pull_request) Has been cancelled

This commit is contained in:
2025-01-28 16:31:15 +01:00
parent 699737bc40
commit 1f4815c991
4 changed files with 33 additions and 39 deletions

View File

@@ -3,7 +3,6 @@ import json
import hashlib
from ..constants import OSM_CACHE_DIR, OSM_TYPES
from .overpass import Overpass
def get_cache_key(query: str) -> str:
@@ -13,6 +12,7 @@ def get_cache_key(query: str) -> str:
"""
return hashlib.md5(query.encode('utf-8')).hexdigest()
class CachingStrategyBase:
"""
Base class for implementing caching strategies.
@@ -25,15 +25,10 @@ class CachingStrategyBase:
"""Store data in the cache with the specified key."""
raise NotImplementedError('Subclass should implement set')
def set_hollow(self, key, cell: tuple, osm_types: OSM_TYPES,
selector: str, conditions=[], out='center'):
def set_hollow(self, key, **kwargs):
"""Create a hollow (empty) cache entry with a specific key."""
raise NotImplementedError('Subclass should implement set_hollow')
def fill_hollow(self, key, value):
"""Fill in the cache for an existing hollow entry."""
raise NotImplementedError('Subclass should implement fill_hollow')
def close(self):
"""Clean up or close any resources used by the caching strategy."""
@@ -134,27 +129,3 @@ class CachingStrategy:
selector: str, conditions: list=None, out='center'):
"""Create a hollow cache entry."""
cls.__strategy.set_hollow(key, cell, osm_types, selector, conditions, out)
def fill_cache():
"""
Scans the specified cache directory for files starting with 'hollow_' and attempts to load
their contents as JSON to fill the cache of the Overpass system.
"""
overpass = Overpass()
with os.scandir(OSM_CACHE_DIR) as it:
for entry in it:
if entry.is_file() and entry.name.startswith('hollow_'):
try :
# Read the whole file content as a string
with open(entry.path, 'r') as f:
# load data and fill the cache with the query and key
json_data = json.load(f)
overpass.fill_cache(json_data)
# Now delete the file as the cache is filled
os.remove(entry.path)
except Exception as exc :
overpass.logger.error(f'An error occured while parsing file {f} as .json file')