mirror of
https://github.com/brianc/node-postgres.git
synced 2026-01-18 15:55:05 +00:00
Replaces __dirname concatentation in pg test scripts so that editors like VS Code can automatically generate typings and support code navigation (F12).
121 lines
3.1 KiB
JavaScript
121 lines
3.1 KiB
JavaScript
'use strict'
|
|
require('./test-helper')
|
|
// http://developer.postgresql.org/pgdocs/postgres/protocol-message-formats.html
|
|
|
|
var buffers = {}
|
|
buffers.readyForQuery = function () {
|
|
return new BufferList().add(Buffer.from('I')).join(true, 'Z')
|
|
}
|
|
|
|
buffers.authenticationOk = function () {
|
|
return new BufferList().addInt32(0).join(true, 'R')
|
|
}
|
|
|
|
buffers.authenticationCleartextPassword = function () {
|
|
return new BufferList().addInt32(3).join(true, 'R')
|
|
}
|
|
|
|
buffers.authenticationMD5Password = function () {
|
|
return new BufferList()
|
|
.addInt32(5)
|
|
.add(Buffer.from([1, 2, 3, 4]))
|
|
.join(true, 'R')
|
|
}
|
|
|
|
buffers.authenticationSASL = function () {
|
|
return new BufferList().addInt32(10).addCString('SCRAM-SHA-256').addCString('').join(true, 'R')
|
|
}
|
|
|
|
buffers.authenticationSASLContinue = function () {
|
|
return new BufferList().addInt32(11).addString('data').join(true, 'R')
|
|
}
|
|
|
|
buffers.authenticationSASLFinal = function () {
|
|
return new BufferList().addInt32(12).addString('data').join(true, 'R')
|
|
}
|
|
|
|
buffers.parameterStatus = function (name, value) {
|
|
return new BufferList().addCString(name).addCString(value).join(true, 'S')
|
|
}
|
|
|
|
buffers.backendKeyData = function (processID, secretKey) {
|
|
return new BufferList().addInt32(processID).addInt32(secretKey).join(true, 'K')
|
|
}
|
|
|
|
buffers.commandComplete = function (string) {
|
|
return new BufferList().addCString(string).join(true, 'C')
|
|
}
|
|
|
|
buffers.rowDescription = function (fields) {
|
|
fields = fields || []
|
|
var buf = new BufferList()
|
|
buf.addInt16(fields.length)
|
|
fields.forEach(function (field) {
|
|
buf
|
|
.addCString(field.name)
|
|
.addInt32(field.tableID || 0)
|
|
.addInt16(field.attributeNumber || 0)
|
|
.addInt32(field.dataTypeID || 0)
|
|
.addInt16(field.dataTypeSize || 0)
|
|
.addInt32(field.typeModifier || 0)
|
|
.addInt16(field.formatCode || 0)
|
|
})
|
|
return buf.join(true, 'T')
|
|
}
|
|
|
|
buffers.dataRow = function (columns) {
|
|
columns = columns || []
|
|
var buf = new BufferList()
|
|
buf.addInt16(columns.length)
|
|
columns.forEach(function (col) {
|
|
if (col == null) {
|
|
buf.addInt32(-1)
|
|
} else {
|
|
var strBuf = Buffer.from(col, 'utf8')
|
|
buf.addInt32(strBuf.length)
|
|
buf.add(strBuf)
|
|
}
|
|
})
|
|
return buf.join(true, 'D')
|
|
}
|
|
|
|
buffers.error = function (fields) {
|
|
return errorOrNotice(fields).join(true, 'E')
|
|
}
|
|
|
|
buffers.notice = function (fields) {
|
|
return errorOrNotice(fields).join(true, 'N')
|
|
}
|
|
|
|
var errorOrNotice = function (fields) {
|
|
fields = fields || []
|
|
var buf = new BufferList()
|
|
fields.forEach(function (field) {
|
|
buf.addChar(field.type)
|
|
buf.addCString(field.value)
|
|
})
|
|
return buf.add(Buffer.from([0])) // terminator
|
|
}
|
|
|
|
buffers.parseComplete = function () {
|
|
return new BufferList().join(true, '1')
|
|
}
|
|
|
|
buffers.bindComplete = function () {
|
|
return new BufferList().join(true, '2')
|
|
}
|
|
|
|
buffers.notification = function (id, channel, payload) {
|
|
return new BufferList().addInt32(id).addCString(channel).addCString(payload).join(true, 'A')
|
|
}
|
|
|
|
buffers.emptyQuery = function () {
|
|
return new BufferList().join(true, 'I')
|
|
}
|
|
|
|
buffers.portalSuspended = function () {
|
|
return new BufferList().join(true, 's')
|
|
}
|
|
|
|
module.exports = buffers
|