Option to use pre-shaped result rows; fixes #3042 (#3043)

* Add property usePrebuiltEmptyResultObjects to Query constructor which generates pre-shaped result rows

* Remove option and test for prebuiltEmptyResultObject

* Remove errorneously added newline

* Move all logic for prebuilding objects to Result

* Move prebuilding to addFields

* Use a clone as clone-base

---------

Co-authored-by: HZ111 / Dev2 <hz111@wielick.nl>
This commit is contained in:
Koen 2023-08-15 17:42:54 +02:00 committed by GitHub
parent 58865b2c04
commit b5c5e52aa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,6 +21,7 @@ class Result {
if (this.rowAsArray) {
this.parseRow = this._parseRowAsArray
}
this._prebuiltEmptyResultObject = null
}
// adds a command complete message
@ -60,14 +61,12 @@ class Result {
}
parseRow(rowData) {
var row = {}
var row = { ... this._prebuiltEmptyResultObject }
for (var i = 0, len = rowData.length; i < len; i++) {
var rawValue = rowData[i]
var field = this.fields[i].name
if (rawValue !== null) {
row[field] = this._parsers[i](rawValue)
} else {
row[field] = null
}
}
return row
@ -94,6 +93,14 @@ class Result {
this._parsers[i] = types.getTypeParser(desc.dataTypeID, desc.format || 'text')
}
}
this._createPrebuiltEmptyResultObject()
}
_createPrebuiltEmptyResultObject() {
var row = {}
for (var i = 0; i < this.fields.length; i++) {
row[this.fields[i].name] = null
}
this._prebuiltEmptyResultObject = { ... row }
}
}