Skip to content

Commit b94b2c1

Browse files
authored
Accept AbortSignal in query executor (#103)
* Accept AbortSignal in query executor * Support AbortSignal exclusively * Revert package changes * Use node types @ 20 * engines
1 parent c79f3a3 commit b94b2c1

File tree

6 files changed

+43
-41
lines changed

6 files changed

+43
-41
lines changed

.changeset/lazy-emus-explain.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'druid-query-toolkit': minor
3+
---
4+
5+
- Switch to AbortSignal in query executor
6+
- Use a single object parameter in query executor

package-lock.json

Lines changed: 21 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656
"url": "https://github.com/implydata/druid-query-toolkit/issues"
5757
},
5858
"homepage": "https://github.com/implydata/druid-query-toolkit",
59+
"engines": {
60+
"node": ">= 14.17.0"
61+
},
5962
"volta": {
6063
"node": "20.9.0"
6164
},
@@ -68,6 +71,7 @@
6871
"@changesets/changelog-github": "^0.5.0",
6972
"@changesets/cli": "^2.27.10",
7073
"@types/jest": "^29.5.0",
74+
"@types/node": "^20.0.0",
7175
"axios": "^1.7.7",
7276
"eslint": "^9.15.0",
7377
"eslint-plugin-notice": "^1.0.0",

src/query-runner/cancel-token.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/query-runner/query-runner.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe('QueryRunner', () => {
2222

2323
const queryRunner = new QueryRunner({
2424
// eslint-disable-next-line @typescript-eslint/require-await
25-
executor: async (payload, isSql) => {
25+
executor: async ({ payload, isSql }) => {
2626
const firstParameterValue: any =
2727
payload.parameters && payload.parameters.length ? payload.parameters[0].value : undefined;
2828

src/query-runner/query-runner.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,18 @@ import type { QueryParameter, QueryPayload } from '../query-payload/query-payloa
1616
import { QueryResult } from '../query-result';
1717
import { SqlQuery } from '../sql';
1818

19-
import type { CancelToken } from './cancel-token';
20-
2119
export interface DataAndHeaders {
2220
data: unknown;
2321
headers: Record<string, string>;
2422
}
2523

26-
export type QueryExecutor = (
27-
payload: QueryPayload,
28-
isSql: boolean,
29-
cancelToken?: CancelToken,
30-
) => Promise<DataAndHeaders>;
24+
export interface QueryExecutorArgs {
25+
payload: QueryPayload;
26+
isSql: boolean;
27+
signal: AbortSignal | undefined;
28+
}
29+
30+
export type QueryExecutor = (args: QueryExecutorArgs) => Promise<DataAndHeaders>;
3131

3232
export interface RunQueryOptions {
3333
query: string | SqlQuery | QueryPayload;
@@ -38,7 +38,7 @@ export interface RunQueryOptions {
3838
header?: boolean;
3939
typesHeader?: boolean;
4040
sqlTypesHeader?: boolean;
41-
cancelToken?: CancelToken;
41+
signal?: AbortSignal;
4242
}
4343

4444
export type InflateDateStrategy = 'fromSqlTypes' | 'guess' | 'none';
@@ -85,7 +85,7 @@ export class QueryRunner {
8585
header,
8686
typesHeader,
8787
sqlTypesHeader,
88-
cancelToken,
88+
signal,
8989
} = options;
9090

9191
let isSql: boolean;
@@ -146,10 +146,10 @@ export class QueryRunner {
146146
}
147147

148148
const startTime = QueryRunner.now();
149-
const dataAndHeaders = await this.getExecutor()(queryPayload, isSql, cancelToken);
149+
const dataAndHeaders = await this.getExecutor()({ payload: queryPayload, isSql, signal });
150150
const endTime = QueryRunner.now();
151151

152-
if (cancelToken) cancelToken.throwIfRequested();
152+
if (signal) signal.throwIfAborted();
153153

154154
const result = QueryResult.fromQueryAndRawResult(
155155
queryPayload,

0 commit comments

Comments
 (0)