-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
Copy pathArrayRowDataPacket.js
43 lines (37 loc) · 1.51 KB
/
ArrayRowDataPacket.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var Charsets = require('../constants/charsets');
var RowDataPacket = require('./RowDataPacket');
var Field = require('./Field');
module.exports = ArrayRowDataPacket;
function ArrayRowDataPacket() {
}
Object.defineProperty(ArrayRowDataPacket.prototype, 'parse', {
configurable : true,
enumerable : false,
value : parse
});
Object.defineProperty(ArrayRowDataPacket.prototype, '_typeCast', {
configurable : true,
enumerable : false,
value : RowDataPacket.prototype._typeCast
});
function parse(parser, fieldPackets, typeCast, nestTables, connection) {
var self = this;
var next = function () {
return self._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings);
};
this.values = [];
for (var i = 0; i < fieldPackets.length; i++) {
var fieldPacket = fieldPackets[i];
var value;
if (typeof typeCast === 'function') {
value = typeCast.apply(connection, [ new Field({ packet: fieldPacket, parser: parser }), next ]);
} else {
value = (typeCast)
? this._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings, connection.config.dateStrings)
: ( (fieldPacket.charsetNr === Charsets.BINARY)
? parser.parseLengthCodedBuffer()
: parser.parseLengthCodedString() );
}
this.values[i] = value;
}
}