28 lines
		
	
	
		
			775 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			775 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | const Packet = require('../packets/packet.js'); | ||
|  | const CommandCode = require('../constants/commands.js'); | ||
|  | const StringParser = require('../parsers/string.js'); | ||
|  | const CharsetToEncoding = require('../constants/charset_encodings.js'); | ||
|  | 
 | ||
|  | class Query { | ||
|  |   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(CommandCode.QUERY); | ||
|  |     packet.writeBuffer(buf); | ||
|  |     return packet; | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = Query; |