"""Kernel DB seam for the temper_rejects page-module. Mirrors ``modules/fastpress/press/_db.py``: DB access goes ONLY through the kernel, re-exported here so the coupling to ``app.db`` lives in one place. This page READS tempered carts + reject reasons and performs one narrow WRITE (insert a reject row), so it exposes both the SELECT-only proxy and a transactional connection:: from .._db import run_select_query, transaction The base scaffold's API (``api/routes.py``) returns SAMPLE data and does NOT import this yet — wiring the real reads + the ``POST /reject`` write is the next step (see the TODO in ``api/routes.py``). NOTE: no connection happens at import — SQLAlchemy's engine is lazy. """ from __future__ import annotations from contextlib import contextmanager from app.db.mariadb import engine, run_select_query, cached_select # noqa: F401 (kernel DB layer) __all__ = ["run_select_query", "cached_select", "transaction", "engine"] @contextmanager def transaction(): """Yield a transactional connection: commit on clean exit, rollback on error. Thin wrapper over the kernel engine's ``begin()`` — same shape as fastpress's reject write (``modules/fastpress/press/rejects.py``), which this page's real ``POST /reject`` will follow (one INSERT into ``production.rejects``).""" with engine.begin() as conn: yield conn