/** * ORM Integrations for Query Telemetry * * Provides helpers for Prisma, Drizzle, and Bun SQL */ import type { QueryInfo } from './collector'; type QueryInput = Omit; /** * Record a query manually (works with any database) */ export declare function recordQuery(query: QueryInput): void; /** * Create Prisma middleware for query telemetry * * @example * ```typescript * import { PrismaClient } from '@prisma/client' * import { createPrismaMiddleware } from 'binja/debug' * * const prisma = new PrismaClient() * prisma.$use(createPrismaMiddleware()) * ``` */ export declare function createPrismaMiddleware(): (params: any, next: (params: any) => Promise) => Promise; /** * Setup Prisma query event logging * * @example * ```typescript * import { PrismaClient } from '@prisma/client' * import { setupPrismaLogging } from 'binja/debug' * * const prisma = new PrismaClient({ log: [{ emit: 'event', level: 'query' }] }) * setupPrismaLogging(prisma) * ``` */ export declare function setupPrismaLogging(prisma: any): void; /** * Create Drizzle logger for query telemetry * * @example * ```typescript * import { drizzle } from 'drizzle-orm/...' * import { createDrizzleLogger } from 'binja/debug' * * const db = drizzle(client, { logger: createDrizzleLogger() }) * ``` */ export declare function createDrizzleLogger(): { logQuery(query: string, params: unknown[]): void; }; /** * Wrap a Drizzle query for accurate timing * * @example * ```typescript * import { wrapDrizzleQuery } from 'binja/debug' * * const users = await wrapDrizzleQuery( * db.select().from(usersTable).where(eq(usersTable.id, 1)) * ) * ``` */ export declare function wrapDrizzleQuery(query: Promise, sql?: string): Promise; /** * Wrap Bun SQL database for query telemetry * * @example * ```typescript * import { Database } from 'bun:sqlite' * import { wrapBunSQL } from 'binja/debug' * * const db = wrapBunSQL(new Database('mydb.sqlite')) * ``` */ export declare function wrapBunSQL(db: T): T; /** * Wrap any async query function for timing * * @example * ```typescript * import { wrapQuery } from 'binja/debug' * * const result = await wrapQuery( * 'SELECT * FROM users WHERE id = ?', * () => db.query('SELECT * FROM users WHERE id = ?', [1]) * ) * ``` */ export declare function wrapQuery(sql: string, queryFn: () => Promise, source?: string): Promise; /** * Create a query wrapper for any database client * * @example * ```typescript * import { createQueryWrapper } from 'binja/debug' * * const query = createQueryWrapper('mysql') * const users = await query('SELECT * FROM users', () => mysql.query('SELECT * FROM users')) * ``` */ export declare function createQueryWrapper(source: string): (sql: string, queryFn: () => Promise) => Promise; export {}; //# sourceMappingURL=integrations.d.ts.map