Skip to content

Commit 6787b1b

Browse files
committed
modify flask app to use service layer [flask_app_using_service_layer]
1 parent 8e6162a commit 6787b1b

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

flask_app.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,25 @@
66
import model
77
import orm
88
import repository
9+
import services
910

1011

1112
orm.start_mappers()
1213
get_session = sessionmaker(bind=create_engine(config.get_postgres_uri()))
1314
app = Flask(__name__)
1415

15-
def is_valid_sku(sku, batches):
16-
return sku in {b.sku for b in batches}
17-
1816
@app.route("/allocate", methods=['POST'])
1917
def allocate_endpoint():
2018
session = get_session()
21-
batches = repository.SqlAlchemyRepository(session).list()
19+
repo = repository.SqlAlchemyRepository(session)
2220
line = model.OrderLine(
2321
request.json['orderid'],
2422
request.json['sku'],
2523
request.json['qty'],
2624
)
27-
28-
if not is_valid_sku(line.sku, batches):
29-
return jsonify({'message': f'Invalid sku {line.sku}'}), 400
30-
3125
try:
32-
batchref = model.allocate(line, batches)
33-
except model.OutOfStock as e:
26+
batchref = services.allocate(line, repo, session)
27+
except (model.OutOfStock, services.InvalidSku) as e:
3428
return jsonify({'message': str(e)}), 400
3529

36-
session.commit()
3730
return jsonify({'batchref': batchref}), 201
38-

0 commit comments

Comments
 (0)