47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
|
var Packet = require('../packets/packet');
|
||
|
|
||
|
function ColumnDefinition(packet)
|
||
|
{
|
||
|
this.catalog = packet.readLengthCodedString();
|
||
|
this.schema = packet.readLengthCodedString();
|
||
|
this.table = packet.readLengthCodedString();
|
||
|
this.orgTable = packet.readLengthCodedString();
|
||
|
this.name = packet.readLengthCodedString();
|
||
|
this.orgName = packet.readLengthCodedString();
|
||
|
packet.skip(1); // length of the following fields (always 0x0c)
|
||
|
this.characterSet = packet.readInt16();
|
||
|
this.columnLength = packet.readInt32();
|
||
|
this.columnType = packet.readInt8();
|
||
|
this.flags = packet.readInt16();
|
||
|
this.decimals = packet.readInt8();
|
||
|
}
|
||
|
|
||
|
ColumnDefinition.toPacket = function(column, sequenceId)
|
||
|
{
|
||
|
var length = 0;
|
||
|
var fields = 'catalog schema table orgTable name orgName'.split(' ');
|
||
|
function addFieldLength(name) {
|
||
|
var str = column[name];
|
||
|
length +=Packet.lengthCodedNumberLength(str);
|
||
|
length += str.length;
|
||
|
}
|
||
|
fields.forEach(addFieldLength);
|
||
|
length += 13;
|
||
|
var buffer = new Buffer(length);
|
||
|
function writeField(name) {
|
||
|
packet.writeLengthCodedString(column[name]);
|
||
|
}
|
||
|
var packet = new Packet(sequenceId, buffer);
|
||
|
packet.offset = 4;
|
||
|
fields.forEach(writeField);
|
||
|
packet.writeInt8 (0x0c);
|
||
|
packet.writeInt16(column.characterSet);
|
||
|
packet.writeInt32(column.columnLength);
|
||
|
packet.writeInt8 (column.columnType);
|
||
|
packet.writeInt16(column.flags);
|
||
|
packet.writeInt8 (column.decimals);
|
||
|
return packet;
|
||
|
};
|
||
|
|
||
|
module.exports = ColumnDefinition;
|