Merge pull request #13739 from Budibase/optimise-aliasing
Optimise the `reverse` method in sqlAlias.ts.
This commit is contained in:
commit
d330b02b2b
|
@ -126,16 +126,25 @@ export default class AliasTables {
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse<T extends Row | Row[]>(rows: T): T {
|
reverse<T extends Row | Row[]>(rows: T): T {
|
||||||
|
const mapping = new Map()
|
||||||
|
|
||||||
const process = (row: Row) => {
|
const process = (row: Row) => {
|
||||||
const final: Row = {}
|
const final: Row = {}
|
||||||
for (let [key, value] of Object.entries(row)) {
|
for (const key of Object.keys(row)) {
|
||||||
if (!key.includes(".")) {
|
let mappedKey = mapping.get(key)
|
||||||
final[key] = value
|
if (!mappedKey) {
|
||||||
} else {
|
const dotLocation = key.indexOf(".")
|
||||||
const [alias, column] = key.split(".")
|
if (dotLocation === -1) {
|
||||||
const tableName = this.tableAliases[alias] || alias
|
mappedKey = key
|
||||||
final[`${tableName}.${column}`] = value
|
} else {
|
||||||
|
const alias = key.slice(0, dotLocation)
|
||||||
|
const column = key.slice(dotLocation + 1)
|
||||||
|
const tableName = this.tableAliases[alias] || alias
|
||||||
|
mappedKey = `${tableName}.${column}`
|
||||||
|
}
|
||||||
|
mapping.set(key, mappedKey)
|
||||||
}
|
}
|
||||||
|
final[mappedKey] = row[key]
|
||||||
}
|
}
|
||||||
return final
|
return final
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue