(
offset: number,
length: number,
bytes: ArrayBuffer,
name: MessageName,
)
| 411 | } |
| 412 | |
| 413 | #parseErrorMessage( |
| 414 | offset: number, |
| 415 | length: number, |
| 416 | bytes: ArrayBuffer, |
| 417 | name: MessageName, |
| 418 | ) { |
| 419 | this.#reader.setBuffer(offset, bytes) |
| 420 | const fields: Record<string, string> = {} |
| 421 | let fieldType = this.#reader.string(1) |
| 422 | while (fieldType !== '\0') { |
| 423 | fields[fieldType] = this.#reader.cstring() |
| 424 | fieldType = this.#reader.string(1) |
| 425 | } |
| 426 | |
| 427 | const messageValue = fields.M |
| 428 | |
| 429 | const message = |
| 430 | name === 'notice' |
| 431 | ? new NoticeMessage(length, messageValue) |
| 432 | : new DatabaseError(messageValue, length, name) |
| 433 | |
| 434 | message.severity = fields.S |
| 435 | message.code = fields.C |
| 436 | message.detail = fields.D |
| 437 | message.hint = fields.H |
| 438 | message.position = fields.P |
| 439 | message.internalPosition = fields.p |
| 440 | message.internalQuery = fields.q |
| 441 | message.where = fields.W |
| 442 | message.schema = fields.s |
| 443 | message.table = fields.t |
| 444 | message.column = fields.c |
| 445 | message.dataType = fields.d |
| 446 | message.constraint = fields.n |
| 447 | message.file = fields.F |
| 448 | message.line = fields.L |
| 449 | message.routine = fields.R |
| 450 | return message |
| 451 | } |
| 452 | } |
no test coverage detected