28 lines
800 B
JavaScript
28 lines
800 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const Packet = require('../packets/packet');
|
||
|
const CommandCodes = require('../constants/commands');
|
||
|
const StringParser = require('../parsers/string.js');
|
||
|
const CharsetToEncoding = require('../constants/charset_encodings.js');
|
||
|
|
||
|
class PrepareStatement {
|
||
|
constructor(sql, charsetNumber) {
|
||
|
this.query = sql;
|
||
|
this.charsetNumber = charsetNumber;
|
||
|
this.encoding = CharsetToEncoding[charsetNumber];
|
||
|
}
|
||
|
|
||
|
toPacket() {
|
||
|
const buf = StringParser.encode(this.query, this.encoding);
|
||
|
const length = 5 + buf.length;
|
||
|
const buffer = Buffer.allocUnsafe(length);
|
||
|
const packet = new Packet(0, buffer, 0, length);
|
||
|
packet.offset = 4;
|
||
|
packet.writeInt8(CommandCodes.STMT_PREPARE);
|
||
|
packet.writeBuffer(buf);
|
||
|
return packet;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = PrepareStatement;
|