feat: udfs autocomplete

This commit is contained in:
didierfranc
2025-02-20 20:51:16 +01:00
parent efb14e9e48
commit 6c2a000cb6
2 changed files with 17 additions and 16 deletions

View File

@@ -9,7 +9,7 @@ export function setupLanguage(
operators: string[] = []
) {
monaco.languages.register({ id });
monaco.languages.setMonarchTokensProvider('clickhouse', {
monaco.languages.setMonarchTokensProvider(id, {
ignoreCase: true,
keywords: keywords.map((k) => k.split(' ')[0]),
functions: functions,
@@ -90,5 +90,5 @@ export function setupLanguage(
}
};
monaco.languages.registerCompletionItemProvider('clickhouse', sql);
monaco.languages.registerCompletionItemProvider(id, sql);
}

View File

@@ -62,21 +62,22 @@
let history = $state.raw<HistoryEntry[]>([]);
let queries = $state.raw<Query[]>([]);
$effect(
() =>
void engine.getSchema().then((t) => {
tables = t;
async function setupEditor() {
const [t, udfs] = await Promise.all([engine.getSchema(), engine.getUDFs()]);
tables = t;
setupLanguage(
'clickhouse',
keywords,
[...functions, ...udfs],
tables.map((t) => t.name),
types,
operators
);
}
setupEditor();
setupLanguage(
'clickhouse',
keywords,
functions,
tables.map((t) => t.name),
types,
operators
);
})
);
$effect(() => void historyRepository.getAll().then((entries) => (history = entries)));
$effect(() => void queryRepository.getAll().then((q) => (queries = q)));