Skip to content

Commit b3bd89d

Browse files
committed
Cleanup of fetch
Signed-off-by: worksofliam <[email protected]>
1 parent ddd494a commit b3bd89d

File tree

2 files changed

+28
-25
lines changed

2 files changed

+28
-25
lines changed

src/database/schemas.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { JobManager } from "../config";
55
import { ResolvedSqlObject, BasicSQLObject } from "../types";
66

77
export type SQLType = "schemas" | "tables" | "views" | "aliases" | "constraints" | "functions" | "variables" | "indexes" | "procedures" | "sequences" | "packages" | "triggers" | "types" | "logicals";
8-
export type PageData = { filter?: string, offset?: number, limit?: number };
8+
export type PageData = { filter?: string, offset?: number, limit?: number, sort?: boolean };
99

1010
const typeMap = {
1111
'tables': [`T`, `P`, `M`],
@@ -353,9 +353,21 @@ export default class Schemas {
353353
}
354354
}
355355

356-
const query = `with results as (${selects.join(
357-
" UNION ALL "
358-
)}) select * from results Order by QSYS2.DELIMIT_NAME(NAME) asc`;
356+
let query: string;
357+
358+
if (selects.length > 1) {
359+
if (details.sort) {
360+
query = `with results as (${selects.join(
361+
" UNION ALL "
362+
)}) select * from results Order by QSYS2.DELIMIT_NAME(NAME) asc`;
363+
} else {
364+
query = selects.join(` UNION ALL `);
365+
}
366+
367+
} else {
368+
// TODO: sort single
369+
query = selects[0];
370+
}
359371

360372
const objects: any[] = await JobManager.runSQL(
361373
[

src/language/providers/completionProvider.ts

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -143,28 +143,19 @@ async function getObjectCompletions(
143143
forSchema: string,
144144
sqlTypes: { [index: string]: CompletionType }
145145
): Promise<CompletionItem[]> {
146-
forSchema = Statement.noQuotes(Statement.delimName(forSchema, true));
147-
148-
const promises = Object.entries(sqlTypes).map(async ([_, value]) => {
149-
const data = await DbCache.getObjects(forSchema, [value.type]);
150-
return data.map((table) =>
151-
createCompletionItem(
152-
Statement.prettyName(table.name),
153-
value.icon,
154-
value.label,
155-
`Schema: ${table.schema}`,
156-
value.order
146+
const allObjects = await DbCache.getObjects(forSchema, Object.values(sqlTypes).map(k => k.type));
147+
148+
return allObjects.map((value) => {
149+
const completionData = completionTypes[value.type];
150+
return createCompletionItem(
151+
Statement.prettyName(value.name),
152+
completionData.icon,
153+
completionData.label,
154+
`Schema: ${value.schema}`,
155+
completionData.order
157156
)
158-
);
159-
});
160-
161-
const results = await Promise.allSettled(promises);
162-
const list = results
163-
.filter((result) => result.status == "fulfilled")
164-
.map((result) => (result as PromiseFulfilledResult<any>).value)
165-
.flat();
166-
167-
return list;
157+
}
158+
);
168159
}
169160

170161
async function getCompletionItemsForSchema(

0 commit comments

Comments
 (0)