From 1fde0c928be8804ef678bedde9320859f4c915f8 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 29 Nov 2021 15:34:52 +0100 Subject: [PATCH] Fixed submit order -> returned stock was wrong --- bookshop/srv/cat-service.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/bookshop/srv/cat-service.js b/bookshop/srv/cat-service.js index a9abc2e4..a9c629c0 100644 --- a/bookshop/srv/cat-service.js +++ b/bookshop/srv/cat-service.js @@ -7,13 +7,12 @@ class CatalogService extends cds.ApplicationService { init(){ // Reduce stock of ordered books if available stock suffices this.on ('submitOrder', async req => { const {book,quantity} = req.data + if (quantity < 1) return req.reject (400,`quantity has to be 1 or more`) let {stock} = await SELECT `stock` .from (Books,book) - if (stock >= quantity) { - await UPDATE (Books,book) .with (`stock -=`, quantity) - await this.emit ('OrderedBook', { book, quantity, buyer:req.user.id }) - return { stock } - } - else return req.error (409,`${quantity} exceeds stock for book #${book}`) + if (quantity > stock) return req.reject (409,`${quantity} exceeds stock for book #${book}`) + await UPDATE (Books,book) .with ({ stock: stock -= quantity }) + await this.emit ('OrderedBook', { book, quantity, buyer:req.user.id }) + return { stock } }) // Add some discount for overstocked books