(errorRegistry: ErrorRegistryInternal, transaction: Transaction)
| 113 | // *.bind(transaction) is required to preserve the `this` context of functions whose |
| 114 | // execution is delegated to napi.rs. |
| 115 | const bindTransaction = (errorRegistry: ErrorRegistryInternal, transaction: Transaction): ErrorCapturingTransaction => { |
| 116 | const boundTransaction: ErrorCapturingTransaction = { |
| 117 | adapterName: transaction.adapterName, |
| 118 | provider: transaction.provider, |
| 119 | options: transaction.options, |
| 120 | queryRaw: wrapAsync(errorRegistry, transaction.queryRaw.bind(transaction)), |
| 121 | executeRaw: wrapAsync(errorRegistry, transaction.executeRaw.bind(transaction)), |
| 122 | commit: wrapAsync(errorRegistry, transaction.commit.bind(transaction)), |
| 123 | rollback: wrapAsync(errorRegistry, transaction.rollback.bind(transaction)), |
| 124 | } |
| 125 | |
| 126 | if (transaction.createSavepoint) { |
| 127 | boundTransaction.createSavepoint = wrapAsync(errorRegistry, transaction.createSavepoint.bind(transaction)) |
| 128 | } |
| 129 | |
| 130 | if (transaction.rollbackToSavepoint) { |
| 131 | boundTransaction.rollbackToSavepoint = wrapAsync(errorRegistry, transaction.rollbackToSavepoint.bind(transaction)) |
| 132 | } |
| 133 | |
| 134 | if (transaction.releaseSavepoint) { |
| 135 | boundTransaction.releaseSavepoint = wrapAsync(errorRegistry, transaction.releaseSavepoint.bind(transaction)) |
| 136 | } |
| 137 | |
| 138 | return boundTransaction |
| 139 | } |
| 140 | |
| 141 | function wrapAsync<A extends unknown[], R>( |
| 142 | registry: ErrorRegistryInternal, |
no test coverage detected