Add runtime statistics via engine.stats

This commit is contained in:
2026-06-03 09:48:33 +02:00
parent 0faa01d89b
commit b044ca43f8
7 changed files with 116 additions and 5 deletions
+7 -1
View File
@@ -8,6 +8,7 @@ from .config import BACKUP_INTERVAL_SECONDS, CACHE_DB_PATH
from .executor import QueryExecutor
from .parser import parse
from .registry import ColumnRegistry
from .stats import Stats, StatsCollector
class CachingEngine:
@@ -17,13 +18,18 @@ class CachingEngine:
self._source_engine = source_engine
self._cache = CacheManager(CACHE_DB_PATH, BACKUP_INTERVAL_SECONDS)
self._registry = ColumnRegistry(self._cache.connection)
self._stats = StatsCollector()
logger.info("CachingEngine initialized.")
@property
def stats(self) -> Stats:
return self._stats.snapshot(self._cache.connection)
def execute(self, sql: str) -> list[dict]:
parsed = parse(sql)
with self._source_engine.connect() as sa_conn:
raw_conn: sqlite3.Connection = sa_conn.connection.dbapi_connection
executor = QueryExecutor(self._cache, self._registry, raw_conn)
executor = QueryExecutor(self._cache, self._registry, raw_conn, self._stats)
return executor.execute(parsed)
def invalidate(self, table: str) -> None: