(value: T)
| 1265 | } |
| 1266 | |
| 1267 | function wrapQueryLike<T>(value: T): T { |
| 1268 | if (!shouldWrapObject(value)) return value; |
| 1269 | const target = value as unknown as object; |
| 1270 | if (wrappedObjects.has(target)) { |
| 1271 | return wrappedObjects.get(target) as T; |
| 1272 | } |
| 1273 | |
| 1274 | const proxy = new Proxy(target as Record<string, unknown>, { |
| 1275 | get(innerTarget, prop, receiver) { |
| 1276 | if (prop === 'then' && typeof innerTarget.then === 'function') { |
| 1277 | return innerTarget.then.bind(innerTarget); |
| 1278 | } |
| 1279 | |
| 1280 | if (prop === 'all' && typeof innerTarget.all !== 'function' && typeof innerTarget.execute === 'function') { |
| 1281 | return async (...args: unknown[]) => normalizeAllResult(await (innerTarget.execute as (...a: unknown[]) => Promise<unknown>)(...args)); |
| 1282 | } |
| 1283 | |
| 1284 | if (prop === 'get' && typeof innerTarget.get !== 'function' && typeof innerTarget.execute === 'function') { |
| 1285 | return async (...args: unknown[]) => { |
| 1286 | const rows = normalizeAllResult(await (innerTarget.execute as (...a: unknown[]) => Promise<unknown>)(...args)); |
| 1287 | return rows[0] ?? undefined; |
| 1288 | }; |
| 1289 | } |
| 1290 | |
| 1291 | if (prop === 'run' && typeof innerTarget.run !== 'function' && typeof innerTarget.execute === 'function') { |
| 1292 | return async (...args: unknown[]) => normalizeRunResult(await (innerTarget.execute as (...a: unknown[]) => Promise<unknown>)(...args)); |
| 1293 | } |
| 1294 | |
| 1295 | const original = Reflect.get(innerTarget, prop, receiver); |
| 1296 | if (typeof original !== 'function') { |
| 1297 | return original; |
| 1298 | } |
| 1299 | |
| 1300 | return (...args: unknown[]) => { |
| 1301 | const result = original.apply(innerTarget, args); |
| 1302 | if (shouldWrapObject(result)) { |
| 1303 | return wrapQueryLike(result); |
| 1304 | } |
| 1305 | return result; |
| 1306 | }; |
| 1307 | }, |
| 1308 | }); |
| 1309 | |
| 1310 | wrappedObjects.set(target, proxy); |
| 1311 | return proxy as unknown as T; |
| 1312 | } |
| 1313 | |
| 1314 | function wrapDbClient<T extends object>( |
| 1315 | rawDb: T, |
no test coverage detected