UNPKG

iagate-querykit

Version:

QueryKit: lightweight TypeScript query toolkit with models, views, triggers, events, scheduler and adapters (better-sqlite3).

32 lines (31 loc) 1.24 kB
/** * Executa múltiplas queries em paralelo para melhor performance. * Detecta automaticamente se a query tem operações de escrita pendentes. * * @param queries - Array de QueryBuilders para executar em paralelo * @returns Promise que resolve com array de resultados de todas as queries * * @example * ```typescript * // Dados iniciais * const userQuery = table('users').select('*').where('active', true); * const productQuery = table('products').select('*').where('category', 'electronics'); * const orderQuery = table('orders').select('*').where('status', 'pending'); * * // Como usar * const [users, products, orders] = await parallel(userQuery, productQuery, orderQuery); * * // Output: Array com resultados de todas as queries executadas em paralelo * // users = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }] * // products = [{ id: 1, name: 'Laptop' }, { id: 2, name: 'Phone' }] * // orders = [{ id: 1, user_id: 1, total: 100 }] * ``` */ export async function parallel(...queries) { const promises = queries.map(async (query) => { if (query.hasPendingWrite && query.hasPendingWrite()) return query.make(); return query.all(); }); return Promise.all(promises); }