From 1bff617f971a938825f252591fd3407905c1a715 Mon Sep 17 00:00:00 2001 From: D050513 Date: Thu, 28 Nov 2024 14:32:35 +0100 Subject: [PATCH 1/4] always rewrite to path expression on new db --- lib/utils.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/utils.js b/lib/utils.js index d3b0df5..cfb81b3 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -123,8 +123,10 @@ const _buildSubSelect = (model, { entity, relative, element, next }, row, previo let w = relative._relations[element.name].join(targetAlias, relativeAlias) + const NEW_DB = cds.env.requires.db.impl?.startsWith('@cap-js') + // REVISIT: rewrite to path expression, if alias for relative is already used in subselect to avoid sql error - if (previousCqn?._aliases.has(relativeAlias)) { + if (NEW_DB || previousCqn?._aliases.has(relativeAlias)) { let t for (const a in entity.associations) if (entity.associations[a].target === relative.name) t = entity.associations[a] if (t && w[0]?.xpr) for (const ele of w[0].xpr) if (ele.ref?.[0] === relativeAlias) ele.ref.splice(0, 1, as, t.name) From 804b071971bf77bf841f8a0531b1fd46facecaa5 Mon Sep 17 00:00:00 2001 From: D050513 Date: Thu, 28 Nov 2024 21:26:54 +0100 Subject: [PATCH 2/4] a !== 'SiblingEntity' --- lib/utils.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/utils.js b/lib/utils.js index cfb81b3..ddc784c 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -128,7 +128,8 @@ const _buildSubSelect = (model, { entity, relative, element, next }, row, previo // REVISIT: rewrite to path expression, if alias for relative is already used in subselect to avoid sql error if (NEW_DB || previousCqn?._aliases.has(relativeAlias)) { let t - for (const a in entity.associations) if (entity.associations[a].target === relative.name) t = entity.associations[a] + for (const a in entity.associations) + if (a !== 'SiblingEntity' && entity.associations[a].target === relative.name) t = entity.associations[a] if (t && w[0]?.xpr) for (const ele of w[0].xpr) if (ele.ref?.[0] === relativeAlias) ele.ref.splice(0, 1, as, t.name) } childCqn._aliases = new Set(previousCqn ? [...previousCqn._aliases.values(), as] : [as]) From 0ca1ce0f9422295798c632e2f130020dca63927d Mon Sep 17 00:00:00 2001 From: D050513 Date: Thu, 28 Nov 2024 22:54:08 +0100 Subject: [PATCH 3/4] cleanup + prep v0.8.3 --- CHANGELOG.md | 6 ++++++ lib/utils.js | 7 ++----- package.json | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7651049..d86f19f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). The format is based on [Keep a Changelog](http://keepachangelog.com/). +## Version 0.8.3 - tbd + +### Fixed + +- Rewrite subselects to use path expressions on @cap-js databases + ## Version 0.8.2 - 2024-11-27 ### Fixed diff --git a/lib/utils.js b/lib/utils.js index ddc784c..819676d 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -123,16 +123,13 @@ const _buildSubSelect = (model, { entity, relative, element, next }, row, previo let w = relative._relations[element.name].join(targetAlias, relativeAlias) - const NEW_DB = cds.env.requires.db.impl?.startsWith('@cap-js') - - // REVISIT: rewrite to path expression, if alias for relative is already used in subselect to avoid sql error - if (NEW_DB || previousCqn?._aliases.has(relativeAlias)) { + // rewrite to path expression on new databases + if (cds.env.requires.db.impl?.startsWith('@cap-js')) { let t for (const a in entity.associations) if (a !== 'SiblingEntity' && entity.associations[a].target === relative.name) t = entity.associations[a] if (t && w[0]?.xpr) for (const ele of w[0].xpr) if (ele.ref?.[0] === relativeAlias) ele.ref.splice(0, 1, as, t.name) } - childCqn._aliases = new Set(previousCqn ? [...previousCqn._aliases.values(), as] : [as]) childCqn.where(w) diff --git a/package.json b/package.json index 4c552ce..c8cd434 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cap-js/audit-logging", - "version": "0.8.2", + "version": "0.8.3", "description": "CDS plugin providing integration to the SAP Audit Log service as well as out-of-the-box personal data-related audit logging based on annotations.", "repository": "cap-js/audit-logging", "author": "SAP SE (https://www.sap.com)", From 655d19d1bdfbf5c82e002ca687079a3650397836 Mon Sep 17 00:00:00 2001 From: sjvans <30337871+sjvans@users.noreply.github.com> Date: Thu, 28 Nov 2024 23:27:27 +0100 Subject: [PATCH 4/4] 2024-11-28 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d86f19f..5cbc6ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). The format is based on [Keep a Changelog](http://keepachangelog.com/). -## Version 0.8.3 - tbd +## Version 0.8.3 - 2024-11-28 ### Fixed