/
githubmirror
/
ydb-embedded-ui
Обзор
Документация
Войти
/
githubmirror
/
ydb-embedded-ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/containers/Tenant/Query/QueryEditor/utils/queryExecutionManager.ts
45 строк
1 KB
Anton Standrik
feat: add safe external query editor opening API (#4191)
11 авг 2026, 14:46
Не верифицирован
11 авг 2026, 14:46
5295776
Код
Авторство
О чём код?
type AbortablePromiseLike = PromiseLike<unknown> & { abort: VoidFunction; finally: (onFinally?: (() => void) | null) => PromiseLike<unknown>; }; interface ActiveQuery { database: string; query: AbortablePromiseLike; } class QueryExecutionManager { private readonly queries = new Map<string, ActiveQuery>(); registerQuery(tabId: string, query: AbortablePromiseLike, database: string) { const activeQuery = {database, query}; this.queries.set(tabId, activeQuery); query.finally(() => { if (this.queries.get(tabId) === activeQuery) { this.queries.delete(tabId); } }); } getQueryDatabase(tabId: string) { return this.queries.get(tabId)?.database; } abortQuery(tabId: string) { const activeQuery = this.queries.get(tabId); if (activeQuery) { activeQuery.query.abort(); this.queries.delete(tabId); } } abortAll() { for (const activeQuery of this.queries.values()) { activeQuery.query.abort(); } this.queries.clear(); } } export const queryExecutionManagerInstance = new QueryExecutionManager();