MCPcopy
hub / github.com/cita-777/metapi / wrapDbClient

Function wrapDbClient

src/server/db/index.ts:1314–1346  ·  view source on GitHub ↗
(
  rawDb: T,
  customTransaction?: <R>(fn: (tx: any) => Promise<R> | R) => Promise<R>,
)

Source from the content-addressed store, hash-verified

1312}
1313
1314function wrapDbClient<T extends object>(
1315 rawDb: T,
1316 customTransaction?: <R>(fn: (tx: any) => Promise<R> | R) => Promise<R>,
1317) {
1318 return new Proxy(rawDb as Record<string, unknown>, {
1319 get(target, prop, receiver) {
1320 if (prop === 'transaction') {
1321 if (customTransaction) return customTransaction;
1322
1323 const originalTransaction = target.transaction;
1324 if (typeof originalTransaction !== 'function') return undefined;
1325 return async <R>(fn: (tx: any) => Promise<R> | R) => {
1326 return await (originalTransaction as (handler: (tx: unknown) => Promise<R> | R) => Promise<R>).call(target, async (tx: unknown) => {
1327 return await fn(wrapDbClient(tx as object));
1328 });
1329 };
1330 }
1331
1332 const original = Reflect.get(target, prop, receiver);
1333 if (typeof original !== 'function') {
1334 return original;
1335 }
1336
1337 return (...args: unknown[]) => {
1338 const result = original.apply(target, args);
1339 if (shouldWrapObject(result)) {
1340 return wrapQueryLike(result);
1341 }
1342 return result;
1343 };
1344 },
1345 }) as T;
1346}
1347
1348function initSqliteDb() {
1349 const sqlitePath = resolveSqlitePath();

Callers 4

getFunction · 0.85
initSqliteDbFunction · 0.85
initMysqlDbFunction · 0.85
initPostgresDbFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected