def before_commit(cls, session: Session) -> None: """Registers session changes in a _changes dict""" session._changes = { "add": list(session.new), "update": list(session.dirty), "delete": list(session.deleted), }
def after_commit(cls, session: Session) -> None: """ Reads from the session._changes dict and updates the Elasticsearch index for affected objects """ for obj in session._changes["add"]: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes["update"]: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes["delete"]: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None