Skip to content

Commit

Permalink
wip: clean-up uiflex logic (#698)
Browse files Browse the repository at this point in the history
Merge after cap/cds-mtxs/pull/969 is merged.

---------

Co-authored-by: Daniel Hutzel <daniel.hutzel@sap.com>
  • Loading branch information
vkozyura and danjoa committed Jun 27, 2024
1 parent 67f7b06 commit 58f04a9
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 35 deletions.
36 changes: 3 additions & 33 deletions db-service/lib/cqn2sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,12 +310,7 @@ class CQN2SQLRenderer {
*/
column_expr(x, q) {
if (x === '*') return '*'
///////////////////////////////////////////////////////////////////////////////////////
// REVISIT: that should move out of here!
if (x?.element?.['@cds.extension']) {
return `extensions__->${this.string('$."' + x.element.name + '"')} as ${x.as || x.element.name}`
}
///////////////////////////////////////////////////////////////////////////////////////

let sql = this.expr({ param: false, __proto__: x })
let alias = this.column_alias4(x, q)
if (alias) sql += ' as ' + this.quote(alias)
Expand Down Expand Up @@ -480,7 +475,7 @@ class CQN2SQLRenderer {
: ObjectKeys(INSERT.entries[0])

/** @type {string[]} */
this.columns = columns.filter(elements ? c => !elements[c]?.['@cds.extension'] : () => true)
this.columns = columns

if (!elements) {
this.entries = INSERT.entries.map(e => columns.map(c => e[c]))
Expand All @@ -493,24 +488,7 @@ class CQN2SQLRenderer {
elements,
!!q.UPSERT,
)
const extraction = extractions
.map(c => {
const element = elements?.[c.name]
if (element?.['@cds.extension']) {
return false
}
if (c.name === 'extensions__') {
const merges = extractions.filter(c => elements?.[c.name]?.['@cds.extension'])
if (merges.length) {
c.sql = `json_set(ifnull(${c.sql},'{}'),${merges.map(
c => this.string('$."' + c.name + '"') + ',' + c.sql,
)})`
}
}
return c
})
.filter(a => a)
.map(c => c.sql)
const extraction = extractions.map(c => c.sql)

// Include this.values for placeholders
/** @type {unknown[][]} */
Expand Down Expand Up @@ -783,14 +761,6 @@ class CQN2SQLRenderer {
}
}

columns = columns.map(c => {
if (q.elements?.[c.name]?.['@cds.extension']) return {
name: 'extensions__',
sql: `jsonb_set(extensions__,${this.string('$."' + c.name + '"')},${c.sql})`,
}
return c
})

const extraction = this.managed(columns, elements, true).map(c => `${this.quote(c.name)}=${c.sql}`)

sql += ` SET ${extraction}`
Expand Down
3 changes: 1 addition & 2 deletions hana/lib/HANAService.js
Original file line number Diff line number Diff line change
Expand Up @@ -611,15 +611,14 @@ class HANAService extends SQLService {
const columns = elements
? ObjectKeys(elements).filter(c => c in elements && !elements[c].virtual && !elements[c].value && !elements[c].isAssociation)
: ObjectKeys(INSERT.entries[0])
this.columns = columns.filter(elements ? c => !elements[c]?.['@cds.extension'] : () => true)
this.columns = columns

const extractions = this.managed(
columns.map(c => ({ name: c })),
elements,
!!q.UPSERT,
)

// REVISIT: @cds.extension required
const extraction = extractions.map(c => c.column)
const converter = extractions.map(c => c.convert)

Expand Down

0 comments on commit 58f04a9

Please sign in to comment.