Fixed: missing await srv.emit

This commit is contained in:
Daniel
2020-12-17 16:37:30 +01:00
committed by Daniel Hutzel
parent 86e5c429bd
commit ea6e274810
8 changed files with 17 additions and 12 deletions

View File

@@ -21,6 +21,7 @@
}, },
"rules": { "rules": {
"no-console": "off", "no-console": "off",
"require-atomic-updates": "off" "require-atomic-updates": "off",
"require-await":"warn"
} }
} }

View File

@@ -6,7 +6,7 @@ service CatalogService @(path:'/browse') {
} excluding { createdBy, modifiedBy }; } excluding { createdBy, modifiedBy };
@readonly entity ListOfBooks as SELECT from Books @readonly entity ListOfBooks as SELECT from Books
excluding { descr, stock }; excluding { descr };
@requires: 'authenticated-user' @requires: 'authenticated-user'
action submitOrder ( book: Books:ID, amount: Integer ) returns { stock: Integer }; action submitOrder ( book: Books:ID, amount: Integer ) returns { stock: Integer };

View File

@@ -1,7 +1,7 @@
const cds = require('@sap/cds') const cds = require('@sap/cds')
const { Books } = cds.entities ('sap.capire.bookshop') const { Books } = cds.entities ('sap.capire.bookshop')
class CatalogService extends cds.ApplicationService { async init(){ class CatalogService extends cds.ApplicationService { init(){
// Reduce stock of ordered books if available stock suffices // Reduce stock of ordered books if available stock suffices
this.on ('submitOrder', async req => { this.on ('submitOrder', async req => {
@@ -9,7 +9,7 @@ class CatalogService extends cds.ApplicationService { async init(){
let {stock} = await tx.read('stock').from(Books,book) let {stock} = await tx.read('stock').from(Books,book)
if (stock >= amount) { if (stock >= amount) {
await tx.update (Books,book).with ({ stock: stock -= amount }) await tx.update (Books,book).with ({ stock: stock -= amount })
this.emit ('OrderedBook', { book, amount, buyer:req.user.id }) await this.emit ('OrderedBook', { book, amount, buyer:req.user.id })
return { stock } return { stock }
} }
else return req.error (409,`${amount} exceeds stock for book #${book}`) else return req.error (409,`${amount} exceeds stock for book #${book}`)

View File

@@ -1,4 +1,8 @@
{ {
"name": "@capire/common", "name": "@capire/common",
"version": "1.0.0" "description": "Provides a pre-built extension package for std @sap/cds/common",
"version": "1.0.0",
"dependencies": {
"@sap/cds": "latest"
}
} }

View File

@@ -49,7 +49,7 @@ module.exports = async()=>{ // called by server.js
// //
// Reduce stock of ordered books for orders are created from Orders admin UI // Reduce stock of ordered books for orders are created from Orders admin UI
// //
OrdersService.on ('OrderChanged', async (msg) => { OrdersService.on ('OrderChanged', (msg) => {
console.debug ('> received:', msg.event, msg.data) console.debug ('> received:', msg.event, msg.data)
const { product, deltaAmount } = msg.data const { product, deltaAmount } = msg.data
return UPDATE (Books) .where ('ID =', product) return UPDATE (Books) .where ('ID =', product)

View File

@@ -11,7 +11,7 @@ class OrdersService extends cds.ApplicationService {
const { amount:before } = await cds.tx(req).run ( const { amount:before } = await cds.tx(req).run (
SELECT.one.from (OrderItems, oi => oi.amount) .where ({up__ID:ID, product_ID}) SELECT.one.from (OrderItems, oi => oi.amount) .where ({up__ID:ID, product_ID})
) )
if (amount != before) this.orderChanged (product_ID, amount-before) if (amount != before) await this.orderChanged (product_ID, amount-before)
} }
}) })
@@ -20,7 +20,7 @@ class OrdersService extends cds.ApplicationService {
const Items = await cds.tx(req).run ( const Items = await cds.tx(req).run (
SELECT.from (OrderItems, oi => { oi.product_ID, oi.amount }) .where ({up__ID:ID}) SELECT.from (OrderItems, oi => { oi.product_ID, oi.amount }) .where ({up__ID:ID})
) )
if (Items) for (let it of Items) this.orderChanged (it.product_ID, -it.amount) if (Items) await Promise.all (Items.map(it => this.orderChanged (it.product_ID, -it.amount)))
}) })
return super.init() return super.init()

View File

@@ -37,7 +37,7 @@ const reviews = new Vue ({
reviews.message = {} reviews.message = {}
}, },
async newReview () { newReview () {
reviews.review = {} reviews.review = {}
reviews.message = {} reviews.message = {}
setTimeout (()=> $('form > input').focus(), 111) setTimeout (()=> $('form > input').focus(), 111)

View File

@@ -1,5 +1,5 @@
const cds = require ('@sap/cds') const cds = require ('@sap/cds')
module.exports = cds.service.impl (async function(){ module.exports = cds.service.impl (function(){
// Get the CSN definition for Reviews from the db schema for sub-sequent queries // Get the CSN definition for Reviews from the db schema for sub-sequent queries
// ( Note: we explicitly specify the namespace to support embedded reuse ) // ( Note: we explicitly specify the namespace to support embedded reuse )
@@ -16,7 +16,7 @@ module.exports = cds.service.impl (async function(){
SELECT.one (['round(avg(rating),2) as rating']) .from (Reviews) .where ({subject}) SELECT.one (['round(avg(rating),2) as rating']) .from (Reviews) .where ({subject})
) )
global.it || console.log ('< emitting:', 'reviewed', { subject, rating }) global.it || console.log ('< emitting:', 'reviewed', { subject, rating })
this.emit ('reviewed', { subject, rating }) await this.emit ('reviewed', { subject, rating })
}) })
// Increment counter for reviews considered helpful // Increment counter for reviews considered helpful