123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- export type Mode = 'text' | 'binary'
- export type MessageName =
- | 'parseComplete'
- | 'bindComplete'
- | 'closeComplete'
- | 'noData'
- | 'portalSuspended'
- | 'replicationStart'
- | 'emptyQuery'
- | 'copyDone'
- | 'copyData'
- | 'rowDescription'
- | 'parameterDescription'
- | 'parameterStatus'
- | 'backendKeyData'
- | 'notification'
- | 'readyForQuery'
- | 'commandComplete'
- | 'dataRow'
- | 'copyInResponse'
- | 'copyOutResponse'
- | 'authenticationOk'
- | 'authenticationMD5Password'
- | 'authenticationCleartextPassword'
- | 'authenticationSASL'
- | 'authenticationSASLContinue'
- | 'authenticationSASLFinal'
- | 'error'
- | 'notice'
- export interface BackendMessage {
- name: MessageName
- length: number
- }
- export const parseComplete: BackendMessage = {
- name: 'parseComplete',
- length: 5,
- }
- export const bindComplete: BackendMessage = {
- name: 'bindComplete',
- length: 5,
- }
- export const closeComplete: BackendMessage = {
- name: 'closeComplete',
- length: 5,
- }
- export const noData: BackendMessage = {
- name: 'noData',
- length: 5,
- }
- export const portalSuspended: BackendMessage = {
- name: 'portalSuspended',
- length: 5,
- }
- export const replicationStart: BackendMessage = {
- name: 'replicationStart',
- length: 4,
- }
- export const emptyQuery: BackendMessage = {
- name: 'emptyQuery',
- length: 4,
- }
- export const copyDone: BackendMessage = {
- name: 'copyDone',
- length: 4,
- }
- interface NoticeOrError {
- message: string | undefined
- severity: string | undefined
- code: string | undefined
- detail: string | undefined
- hint: string | undefined
- position: string | undefined
- internalPosition: string | undefined
- internalQuery: string | undefined
- where: string | undefined
- schema: string | undefined
- table: string | undefined
- column: string | undefined
- dataType: string | undefined
- constraint: string | undefined
- file: string | undefined
- line: string | undefined
- routine: string | undefined
- }
- export class DatabaseError extends Error implements NoticeOrError {
- public severity: string | undefined
- public code: string | undefined
- public detail: string | undefined
- public hint: string | undefined
- public position: string | undefined
- public internalPosition: string | undefined
- public internalQuery: string | undefined
- public where: string | undefined
- public schema: string | undefined
- public table: string | undefined
- public column: string | undefined
- public dataType: string | undefined
- public constraint: string | undefined
- public file: string | undefined
- public line: string | undefined
- public routine: string | undefined
- constructor(message: string, public readonly length: number, public readonly name: MessageName) {
- super(message)
- }
- }
- export class CopyDataMessage {
- public readonly name = 'copyData'
- constructor(public readonly length: number, public readonly chunk: Buffer) {}
- }
- export class CopyResponse {
- public readonly columnTypes: number[]
- constructor(
- public readonly length: number,
- public readonly name: MessageName,
- public readonly binary: boolean,
- columnCount: number
- ) {
- this.columnTypes = new Array(columnCount)
- }
- }
- export class Field {
- constructor(
- public readonly name: string,
- public readonly tableID: number,
- public readonly columnID: number,
- public readonly dataTypeID: number,
- public readonly dataTypeSize: number,
- public readonly dataTypeModifier: number,
- public readonly format: Mode
- ) {}
- }
- export class RowDescriptionMessage {
- public readonly name: MessageName = 'rowDescription'
- public readonly fields: Field[]
- constructor(public readonly length: number, public readonly fieldCount: number) {
- this.fields = new Array(this.fieldCount)
- }
- }
- export class ParameterDescriptionMessage {
- public readonly name: MessageName = 'parameterDescription'
- public readonly dataTypeIDs: number[]
- constructor(public readonly length: number, public readonly parameterCount: number) {
- this.dataTypeIDs = new Array(this.parameterCount)
- }
- }
- export class ParameterStatusMessage {
- public readonly name: MessageName = 'parameterStatus'
- constructor(
- public readonly length: number,
- public readonly parameterName: string,
- public readonly parameterValue: string
- ) {}
- }
- export class AuthenticationMD5Password implements BackendMessage {
- public readonly name: MessageName = 'authenticationMD5Password'
- constructor(public readonly length: number, public readonly salt: Buffer) {}
- }
- export class BackendKeyDataMessage {
- public readonly name: MessageName = 'backendKeyData'
- constructor(public readonly length: number, public readonly processID: number, public readonly secretKey: number) {}
- }
- export class NotificationResponseMessage {
- public readonly name: MessageName = 'notification'
- constructor(
- public readonly length: number,
- public readonly processId: number,
- public readonly channel: string,
- public readonly payload: string
- ) {}
- }
- export class ReadyForQueryMessage {
- public readonly name: MessageName = 'readyForQuery'
- constructor(public readonly length: number, public readonly status: string) {}
- }
- export class CommandCompleteMessage {
- public readonly name: MessageName = 'commandComplete'
- constructor(public readonly length: number, public readonly text: string) {}
- }
- export class DataRowMessage {
- public readonly fieldCount: number
- public readonly name: MessageName = 'dataRow'
- constructor(public length: number, public fields: any[]) {
- this.fieldCount = fields.length
- }
- }
- export class NoticeMessage implements BackendMessage, NoticeOrError {
- constructor(public readonly length: number, public readonly message: string | undefined) {}
- public readonly name = 'notice'
- public severity: string | undefined
- public code: string | undefined
- public detail: string | undefined
- public hint: string | undefined
- public position: string | undefined
- public internalPosition: string | undefined
- public internalQuery: string | undefined
- public where: string | undefined
- public schema: string | undefined
- public table: string | undefined
- public column: string | undefined
- public dataType: string | undefined
- public constraint: string | undefined
- public file: string | undefined
- public line: string | undefined
- public routine: string | undefined
- }
|