Skip to content

Commit cf2f52b

Browse files
committed
modify flask app to use service layer [flask_app_using_service_layer]
1 parent d1e2e6e commit cf2f52b

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

Diff for: flask_app.py

+4-11
Original file line numberDiff line numberDiff line change
@@ -6,32 +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

1516

16-
def is_valid_sku(sku, batches):
17-
return sku in {b.sku for b in batches}
18-
19-
2017
@app.route("/allocate", methods=["POST"])
2118
def allocate_endpoint():
2219
session = get_session()
23-
batches = repository.SqlAlchemyRepository(session).list()
20+
repo = repository.SqlAlchemyRepository(session)
2421
line = model.OrderLine(
2522
request.json["orderid"], request.json["sku"], request.json["qty"],
2623
)
2724

28-
if not is_valid_sku(line.sku, batches):
29-
return {"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 {"message": str(e)}, 400
3529

36-
session.commit()
3730
return {"batchref": batchref}, 201

0 commit comments

Comments
 (0)