diff --git a/packages/bookshop/db/data/sap.capire.bookshop-Orders.csv b/packages/bookshop/db/data/sap.capire.bookshop-Orders.csv index 088c1e87..741bcceb 100644 --- a/packages/bookshop/db/data/sap.capire.bookshop-Orders.csv +++ b/packages/bookshop/db/data/sap.capire.bookshop-Orders.csv @@ -1,3 +1,3 @@ ID;modifiedAt;createdAt;createdBy;modifiedBy;OrderNo;currency_code -7e2f2640-6866-4dcf-8f4d-3027aa831cad;;2019-01-31;john.doe@test.com;;1;EUR -64e718c9-ff99-47f1-8ca3-950c850777d4;;2019-01-30;jane.doe@test.com;;2;EUR \ No newline at end of file +7e2f2640-6866-4dcf-8f4d-3027aa831cad;;2019-01-31;ALICE;;1;EUR +64e718c9-ff99-47f1-8ca3-950c850777d4;;2019-01-30;BOB;;2;EUR \ No newline at end of file diff --git a/packages/bookshop/package.json b/packages/bookshop/package.json index c6d58955..1c0aea93 100644 --- a/packages/bookshop/package.json +++ b/packages/bookshop/package.json @@ -18,9 +18,12 @@ "API_BUSINESS_PARTNER": { "kind": "odata", "model": "srv/external/API_BUSINESS_PARTNER", - "credentials": { + "--credentials": { "destination": "cap-api098" } + }, + "messaging": { + "kind": "file-based-messaging" } } } diff --git a/packages/bookshop/req.http b/packages/bookshop/req.http new file mode 100644 index 00000000..80c70131 --- /dev/null +++ b/packages/bookshop/req.http @@ -0,0 +1,6 @@ +PATCH http://localhost:4004/api-business-partner/A_BusinessPartnerAddress(AddressID='19292',BusinessPartner='ALICE') +Content-Type: application/json + +{ + "StreetName": "ChangedStreet" +} \ No newline at end of file diff --git a/packages/bookshop/srv/cat-service.js b/packages/bookshop/srv/cat-service.js index c801d646..f01501f6 100644 --- a/packages/bookshop/srv/cat-service.js +++ b/packages/bookshop/srv/cat-service.js @@ -1,12 +1,18 @@ const cds = require('@sap/cds') -const { Books } = cds.entities /** Service implementation for CatalogService */ module.exports = cds.service.impl(async function () { + const { Books, Addresses, Orders } = this.entities const bupaSrv = await cds.connect.to('API_BUSINESS_PARTNER') - this.after('READ', 'Books', each => each.stock > 111 && _addDiscount2(each, 11)) - this.before('CREATE', 'Orders', _reduceStock) - this.on('READ', 'Addresses', req => bupaSrv.tx(req).run(req.query)) + this.after('READ', Books, each => each.stock > 111 && _addDiscount2(each, 11)) + this.before('CREATE', Orders, _reduceStock) + this.on('READ', Addresses, req => bupaSrv.tx(req).run(req.query)) + this.on('BusinessPartner/Changed', async msg => { + console.log('>> Received message', msg.data) + const BUSINESSPARTNER = msg.data.KEY[0].BUSINESSPARTNER + const orders = await cds.tx(msg).run(SELECT.from(Orders).where({ createdBy: BUSINESSPARTNER })) + console.log(orders) + }) }) /** Add some discount for overstocked books */ diff --git a/packages/bookshop/srv/external/API_BUSINESS_PARTNER.js b/packages/bookshop/srv/external/API_BUSINESS_PARTNER.js new file mode 100644 index 00000000..725f68e6 --- /dev/null +++ b/packages/bookshop/srv/external/API_BUSINESS_PARTNER.js @@ -0,0 +1,9 @@ +module.exports = srv => { + srv.on(['CREATE', 'UPDATE', 'DELETE'], req => { + const payload = { + KEY: [{ BUSINESSPARTNER: req.data.BusinessPartner }] + } + console.log('<< Emitting message', payload) + srv.emit('BusinessPartner/Changed', payload) + }) +} \ No newline at end of file