implements cache

This commit is contained in:
2025-10-31 10:19:43 -07:00
parent 3de2a97d5c
commit 9e2e0bec36
4 changed files with 115 additions and 40 deletions

42
cache.py Normal file
View File

@@ -0,0 +1,42 @@
# In-memory cache for Filevine projects
import threading
import time
from datetime import datetime, timedelta
class ProjectCache:
def __init__(self):
self._cache = {}
self._lock = threading.Lock()
self._last_updated = None
self._is_updating = False
def get_projects(self):
"""Get cached projects if they exist and are not expired (15 minutes)"""
with self._lock:
if not self._cache or not self._last_updated:
return None
# Check if cache is older than 15 minutes
if datetime.now() - self._last_updated > timedelta(minutes=15):
return None
return self._cache.copy()
def set_projects(self, projects):
"""Set projects in cache with current timestamp"""
with self._lock:
self._cache = projects.copy() if projects else {}
self._last_updated = datetime.now()
def is_updating(self):
"""Check if cache is currently being updated"""
with self._lock:
return self._is_updating
def set_updating(self, updating):
"""Set the updating status"""
with self._lock:
self._is_updating = updating
# Global cache instance
project_cache = ProjectCache()