From 3e725bcc266fa9a5e777a56fd56480c867735c54 Mon Sep 17 00:00:00 2001 From: D065023 Date: Mon, 16 Dec 2019 21:02:57 +0100 Subject: [PATCH 1/6] refactor --- packages/bookshop/srv/admin-service.js | 39 +++++--------------------- packages/bookshop/srv/utils.js | 31 ++++++++++++++++++++ 2 files changed, 38 insertions(+), 32 deletions(-) create mode 100644 packages/bookshop/srv/utils.js diff --git a/packages/bookshop/srv/admin-service.js b/packages/bookshop/srv/admin-service.js index 39d7b578..c5c620c0 100644 --- a/packages/bookshop/srv/admin-service.js +++ b/packages/bookshop/srv/admin-service.js @@ -1,37 +1,9 @@ const cds = require('@sap/cds') +const { queriesToUpdateDifferences } = require('./utils') const { Books, ShippingAddresses } = cds.entities const bupaSrv = cds.connect.to('API_BUSINESS_PARTNER') -const _diff = (obj1, obj2) => - Object.keys(obj1).reduce( - (res, curr) => - obj1[curr] === obj2[curr] ? res : (res[curr] = obj2[curr]) && res, - {} - ) - -const _queriesToUpdateDifferences = (ownAddresses, remoteAddresses) => - ownAddresses - .map(ownAddress => { - const remoteAddress = remoteAddresses.find( - address => - address.BusinessPartner === ownAddress.BusinessPartner && - address.AddressID === ownAddress.AddressID - ) - if (remoteAddress) { - const diff = _diff(ownAddress, remoteAddress) - if (Object.keys(diff).length) { - return UPDATE(ShippingAddresses) - .set(diff) - .where({ - BusinessPartner: ownAddress.BusinessPartner, - AddressID: ownAddress.AddressID - }) - } - } - }) - .filter(el => el) - bupaSrv.on('Changed', 'BusinessPartner', async msg => { console.log('>> Message:', msg.data) @@ -44,11 +16,12 @@ bupaSrv.on('Changed', 'BusinessPartner', async msg => { const txExt = bupaSrv.transaction(msg) try { const remoteAddresses = await txExt.run(selectQuery) - const queriesToUpdateDifferences = _queriesToUpdateDifferences( + const updateQueries = queriesToUpdateDifferences( + ShippingAddresses, ownAddresses, remoteAddresses ) - await tx.run(queriesToUpdateDifferences) + await tx.run(updateQueries) } catch (e) { console.error(e) } @@ -59,7 +32,9 @@ async function _readAddresses (req) { console.log('Addresses', ShippingAddresses) const BusinessPartner = req.user.id const txExt = bupaSrv.transaction(req) - const selectQuery = req.query.from(ShippingAddresses).where({ BusinessPartner }) + const selectQuery = req.query + .from(ShippingAddresses) + .where({ BusinessPartner }) try { return txExt.run(selectQuery) diff --git a/packages/bookshop/srv/utils.js b/packages/bookshop/srv/utils.js new file mode 100644 index 00000000..7797014b --- /dev/null +++ b/packages/bookshop/srv/utils.js @@ -0,0 +1,31 @@ +const diff = (obj1, obj2) => + Object.keys(obj1).reduce( + (res, curr) => + obj1[curr] === obj2[curr] ? res : (res[curr] = obj2[curr]) && res, + {} + ) + +const queriesToUpdateDifferences = (entity, ownEntries, otherEntries) => + ownEntries + .map(ownEntry => { + const remoteAddress = otherEntries.find(otherEntry => + Object.keys(entity.keys).reduce( + (res, curr) => res && otherEntry[curr] === ownEntry[curr], + true + ) + ) + if (remoteAddress) { + const diff = _diff(ownEntry, remoteAddress) + if (Object.keys(diff).length) { + return UPDATE(entity) + .set(diff) + .where({ + BusinessPartner: ownEntry.BusinessPartner, + AddressID: ownEntry.AddressID + }) + } + } + }) + .filter(el => el) + +module.exports = { diff, queriesToUpdateDifferences } From f89acc00dd913a11a2ebe398d0ab18511e918cdb Mon Sep 17 00:00:00 2001 From: D065023 Date: Mon, 16 Dec 2019 21:04:04 +0100 Subject: [PATCH 2/6] fix typo --- packages/bookshop/srv/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bookshop/srv/utils.js b/packages/bookshop/srv/utils.js index 7797014b..173b7608 100644 --- a/packages/bookshop/srv/utils.js +++ b/packages/bookshop/srv/utils.js @@ -15,7 +15,7 @@ const queriesToUpdateDifferences = (entity, ownEntries, otherEntries) => ) ) if (remoteAddress) { - const diff = _diff(ownEntry, remoteAddress) + const diff = diff(ownEntry, remoteAddress) if (Object.keys(diff).length) { return UPDATE(entity) .set(diff) From dc8e8c55df5aa9a84e40462bc39fba40275643d4 Mon Sep 17 00:00:00 2001 From: D065023 Date: Mon, 16 Dec 2019 21:05:28 +0100 Subject: [PATCH 3/6] fix bug --- packages/bookshop/srv/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bookshop/srv/utils.js b/packages/bookshop/srv/utils.js index 173b7608..a1f6c62a 100644 --- a/packages/bookshop/srv/utils.js +++ b/packages/bookshop/srv/utils.js @@ -15,10 +15,10 @@ const queriesToUpdateDifferences = (entity, ownEntries, otherEntries) => ) ) if (remoteAddress) { - const diff = diff(ownEntry, remoteAddress) + const differences = diff(ownEntry, remoteAddress) if (Object.keys(diff).length) { return UPDATE(entity) - .set(diff) + .set(differences) .where({ BusinessPartner: ownEntry.BusinessPartner, AddressID: ownEntry.AddressID From 125edc34e282d8c04f58655db0fcb40b28bc1c30 Mon Sep 17 00:00:00 2001 From: D065023 Date: Mon, 16 Dec 2019 21:12:03 +0100 Subject: [PATCH 4/6] fixed --- packages/bookshop/srv/utils.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/bookshop/srv/utils.js b/packages/bookshop/srv/utils.js index a1f6c62a..8b77abe3 100644 --- a/packages/bookshop/srv/utils.js +++ b/packages/bookshop/srv/utils.js @@ -19,10 +19,12 @@ const queriesToUpdateDifferences = (entity, ownEntries, otherEntries) => if (Object.keys(diff).length) { return UPDATE(entity) .set(differences) - .where({ - BusinessPartner: ownEntry.BusinessPartner, - AddressID: ownEntry.AddressID - }) + .where( + Object.keys(entity.keys).reduce( + (res, curr) => (res[curr] = ownEntry[curr]) && res, + {} + ) + ) } } }) From 06a6ac220111a9150cac1db332fcc2a246fab516 Mon Sep 17 00:00:00 2001 From: D065023 Date: Mon, 16 Dec 2019 21:14:56 +0100 Subject: [PATCH 5/6] fixed bug --- packages/bookshop/srv/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bookshop/srv/utils.js b/packages/bookshop/srv/utils.js index 8b77abe3..b05b932d 100644 --- a/packages/bookshop/srv/utils.js +++ b/packages/bookshop/srv/utils.js @@ -16,7 +16,7 @@ const queriesToUpdateDifferences = (entity, ownEntries, otherEntries) => ) if (remoteAddress) { const differences = diff(ownEntry, remoteAddress) - if (Object.keys(diff).length) { + if (Object.keys(differences).length) { return UPDATE(entity) .set(differences) .where( From d678b51320ef9236f139e76ef49fdd3f4b1b5795 Mon Sep 17 00:00:00 2001 From: D065023 Date: Mon, 16 Dec 2019 21:52:43 +0100 Subject: [PATCH 6/6] revert prefix --- packages/bookshop/package.json | 2 +- packages/bookshop/srv/admin-service.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bookshop/package.json b/packages/bookshop/package.json index 3aa3368c..ae840e3b 100644 --- a/packages/bookshop/package.json +++ b/packages/bookshop/package.json @@ -18,7 +18,7 @@ "API_BUSINESS_PARTNER": { "kind": "odata", "model": "srv/external/API_BUSINESS_PARTNER", - "credentials": { + "--credentials": { "destination": "cap-api532", "prefix": "sap/S4HANAOD/c532/BO" } diff --git a/packages/bookshop/srv/admin-service.js b/packages/bookshop/srv/admin-service.js index c5c620c0..ae2bb333 100644 --- a/packages/bookshop/srv/admin-service.js +++ b/packages/bookshop/srv/admin-service.js @@ -4,7 +4,7 @@ const { Books, ShippingAddresses } = cds.entities const bupaSrv = cds.connect.to('API_BUSINESS_PARTNER') -bupaSrv.on('Changed', 'BusinessPartner', async msg => { +bupaSrv.on('sap/S4HANAOD/c532/BO/BusinessPartner/Changed', async msg => { console.log('>> Message:', msg.data) const BusinessPartner = msg.data.KEY[0].BUSINESSPARTNER