[FastAPI] Refactor db modifications
For SQLAlchemy to automatically understand updates from the
external world, it must use an autocommit=True
in its session.
This change breaks how we were using commit previously, as
autocommit=True
causes SQLAlchemy to commit when a
SessionTransaction context hits exit.
So, a refactoring was required of our tests: All usage of
any db.{create,delete}
must be called within a
SessionTransaction context, created via new db.begin()
.
From this point forward, we're going to require:
with db.begin():
db.create(...)
db.delete(...)
db.session.delete(object)
With this, we now get external DB modifications automatically without reloading or restarting the FastAPI server, which we absolutely need for production.
Signed-off-by: Kevin Morris kevr@0cost.org