feat(db): bulk add_logs for one-commit ingestion batches
Adds BaseRepository.add_logs (default: loops add_log for backwards compatibility) and a real single-session/single-commit implementation on SQLModelRepository. Introduces DECNET_BATCH_SIZE (default 100) and DECNET_BATCH_MAX_WAIT_MS (default 250) so the ingester can flush on either a size or a time bound when it adopts the new method. Ingester wiring is deferred to a later pass — the single-log path was deadlocking tests when flushed during lifespan teardown, so this change ships the DB primitive alone.
This commit is contained in:
@@ -15,6 +15,15 @@ class BaseRepository(ABC):
|
||||
"""Add a new log entry to the database."""
|
||||
pass
|
||||
|
||||
async def add_logs(self, log_entries: list[dict[str, Any]]) -> None:
|
||||
"""Bulk-insert log entries in a single transaction.
|
||||
|
||||
Default implementation falls back to per-row add_log; concrete
|
||||
repositories should override for a real single-commit insert.
|
||||
"""
|
||||
for _entry in log_entries:
|
||||
await self.add_log(_entry)
|
||||
|
||||
@abstractmethod
|
||||
async def get_logs(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user