Let's say I have an api endpoint with some service features like
`` `python # API endpoint @road(...) def create_a_car (): service.create_wheels () service.create_engine () ... # etc return response (result = car, status_code = 200) # a service def create_wheels (): # create wheels session.flush () # session.commit () ... # do something with the wheels. def create_engine (): # create wheels session.flush () # session.commit () ... # do something with engine.id # middleware @after_request def commit: if response.status_code == 200: try: session.commit () without error: session.rollback () `` `
The reason I have a middleware that performs validation, is because I want to limit the number of validation calls, because the transactions would be closed after each validation, and have to restart them at each time seems useless. Moreover, because
create_a_car () depends on different database operations, having individual commits in each of these functions can result in an inconsistent state of the database. for example
create_wheels () successful but
create_engine () failed. Now, there are non-associated wheels in the database. & # 39;
But to couple the logic of the database with the HTTP status codes seems a bit dangerous? As they are different things, or would not it matter in this case? Are there better approaches?