( driver: BaseDriver, statements: string[], onProgress?: (progress: MultipleQueryProgress) => void )
| 30 | } |
| 31 | |
| 32 | export async function multipleQuery( |
| 33 | driver: BaseDriver, |
| 34 | statements: string[], |
| 35 | onProgress?: (progress: MultipleQueryProgress) => void |
| 36 | ): Promise<{ |
| 37 | result: MultipleQueryResult[]; |
| 38 | logs: MultipleQueryProgressItem[]; |
| 39 | }> { |
| 40 | const logs: MultipleQueryProgressItem[] = []; |
| 41 | const result: MultipleQueryResult[] = []; |
| 42 | |
| 43 | for (let i = 0; i < statements.length; i++) { |
| 44 | const statement = statements[i] as string; |
| 45 | const statementType = statement ? getSQLStatementType(statement) : "OTHER"; |
| 46 | |
| 47 | const log: MultipleQueryProgressItem = { |
| 48 | order: i, |
| 49 | sql: statement, |
| 50 | start: Date.now(), |
| 51 | statementType, |
| 52 | }; |
| 53 | |
| 54 | logs.push(log); |
| 55 | |
| 56 | if (onProgress) { |
| 57 | onProgress({ logs, progress: i, total: statements.length }); |
| 58 | } |
| 59 | |
| 60 | try { |
| 61 | const r = await driver.query(statement); |
| 62 | |
| 63 | log.end = Date.now(); |
| 64 | log.stats = r.stat; |
| 65 | |
| 66 | if (r.headers.length > 0) { |
| 67 | result.push({ |
| 68 | sql: statement, |
| 69 | order: i, |
| 70 | result: r, |
| 71 | }); |
| 72 | } |
| 73 | |
| 74 | if (onProgress) { |
| 75 | onProgress({ logs, progress: i + 1, total: statements.length }); |
| 76 | } |
| 77 | } catch (e) { |
| 78 | log.end = Date.now(); |
| 79 | log.error = (e as Error).toString(); |
| 80 | |
| 81 | if (onProgress) { |
| 82 | onProgress({ |
| 83 | logs, |
| 84 | progress: i, |
| 85 | total: statements.length, |
| 86 | error: true, |
| 87 | }); |
| 88 | } |
| 89 |
no test coverage detected