MCPcopy Create free account
hub / github.com/outerbase/studio / multipleQuery

Function multipleQuery

src/lib/sql/multiple-query.ts:32–115  ·  view source on GitHub ↗
(
  driver: BaseDriver,
  statements: string[],
  onProgress?: (progress: MultipleQueryProgress) => void
)

Source from the content-addressed store, hash-verified

30}
31
32export 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

Callers 1

onRunClickedFunction · 0.90

Calls 4

getSQLStatementTypeFunction · 0.90
sendAnalyticEventsFunction · 0.90
queryMethod · 0.65
toStringMethod · 0.45

Tested by

no test coverage detected