Skip to content
  • Kevin Morris's avatar
    [FastAPI] Refactor db modifications · a5943bf2
    Kevin Morris authored
    
    
    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's avatarKevin Morris <kevr@0cost.org>
    a5943bf2