@taylordb/query-builder 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/cjs/__tests__/query-builder.spec.js +126 -23
- package/dist/cjs/__tests__/query-builder.spec.js.map +1 -1
- package/dist/cjs/aggregation-query-builder.d.ts +92 -0
- package/dist/cjs/aggregation-query-builder.js +92 -0
- package/dist/cjs/aggregation-query-builder.js.map +1 -1
- package/dist/cjs/batch-query-builder.d.ts +36 -0
- package/dist/cjs/batch-query-builder.js +36 -0
- package/dist/cjs/batch-query-builder.js.map +1 -1
- package/dist/cjs/delete-query-builder.d.ts +17 -0
- package/dist/cjs/delete-query-builder.js +17 -0
- package/dist/cjs/delete-query-builder.js.map +1 -1
- package/dist/cjs/executor.d.ts +4 -1
- package/dist/cjs/executor.js +20 -35
- package/dist/cjs/executor.js.map +1 -1
- package/dist/cjs/insert-query-builder.d.ts +68 -0
- package/dist/cjs/insert-query-builder.js +71 -0
- package/dist/cjs/insert-query-builder.js.map +1 -1
- package/dist/cjs/query-builder.d.ts +224 -5
- package/dist/cjs/query-builder.js +219 -5
- package/dist/cjs/query-builder.js.map +1 -1
- package/dist/cjs/selection-builder.d.ts +11 -0
- package/dist/cjs/selection-builder.js +11 -0
- package/dist/cjs/selection-builder.js.map +1 -1
- package/dist/cjs/{subscription-manager.d.ts → socket-connection.d.ts} +5 -4
- package/dist/cjs/{subscription-manager.js → socket-connection.js} +55 -9
- package/dist/cjs/socket-connection.js.map +1 -0
- package/dist/cjs/update-query-builder.d.ts +32 -0
- package/dist/cjs/update-query-builder.js +32 -0
- package/dist/cjs/update-query-builder.js.map +1 -1
- package/dist/cjs/where-query-builder.d.ts +59 -0
- package/dist/cjs/where-query-builder.js +6 -0
- package/dist/cjs/where-query-builder.js.map +1 -1
- package/dist/cjs/with-resolver.d.ts +5 -0
- package/dist/cjs/with-resolver.js +17 -0
- package/dist/cjs/with-resolver.js.map +1 -0
- package/dist/esm/__tests__/query-builder.spec.js +126 -23
- package/dist/esm/__tests__/query-builder.spec.js.map +1 -1
- package/dist/esm/aggregation-query-builder.d.ts +92 -0
- package/dist/esm/aggregation-query-builder.js +92 -0
- package/dist/esm/aggregation-query-builder.js.map +1 -1
- package/dist/esm/batch-query-builder.d.ts +36 -0
- package/dist/esm/batch-query-builder.js +36 -0
- package/dist/esm/batch-query-builder.js.map +1 -1
- package/dist/esm/delete-query-builder.d.ts +17 -0
- package/dist/esm/delete-query-builder.js +17 -0
- package/dist/esm/delete-query-builder.js.map +1 -1
- package/dist/esm/executor.d.ts +4 -1
- package/dist/esm/executor.js +20 -35
- package/dist/esm/executor.js.map +1 -1
- package/dist/esm/insert-query-builder.d.ts +68 -0
- package/dist/esm/insert-query-builder.js +71 -0
- package/dist/esm/insert-query-builder.js.map +1 -1
- package/dist/esm/query-builder.d.ts +224 -5
- package/dist/esm/query-builder.js +217 -4
- package/dist/esm/query-builder.js.map +1 -1
- package/dist/esm/selection-builder.d.ts +11 -0
- package/dist/esm/selection-builder.js +11 -0
- package/dist/esm/selection-builder.js.map +1 -1
- package/dist/esm/{subscription-manager.d.ts → socket-connection.d.ts} +5 -4
- package/dist/esm/{subscription-manager.js → socket-connection.js} +53 -7
- package/dist/esm/socket-connection.js.map +1 -0
- package/dist/esm/update-query-builder.d.ts +32 -0
- package/dist/esm/update-query-builder.js +32 -0
- package/dist/esm/update-query-builder.js.map +1 -1
- package/dist/esm/where-query-builder.d.ts +59 -0
- package/dist/esm/where-query-builder.js +6 -0
- package/dist/esm/where-query-builder.js.map +1 -1
- package/dist/esm/with-resolver.d.ts +5 -0
- package/dist/esm/with-resolver.js +14 -0
- package/dist/esm/with-resolver.js.map +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/dist/cjs/subscription-manager.js.map +0 -1
- package/dist/esm/subscription-manager.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAGL,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,MAAM,OAAO,YAKX,SAAQ,sBAAqC;IAG7C,YAAY,IAAe,EAAE,QAAkB;QAC7C,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI;YACP,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;SACpE,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,MAAe;QAMf,OAAO,IAAI,YAAY,CACrB;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;SAC7B,EACd,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,SAAS;QAOP,OAAO,IAAI,YAAY,CACrB;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,CAAC;SACD,EACd,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,19 @@ import type { AnyDB } from './@types/internal-types.js';
|
|
|
3
3
|
import { LinkColumnNames } from './@types/query-builder.js';
|
|
4
4
|
import { Executor } from './executor.js';
|
|
5
5
|
import { QueryBuilder } from './query-builder.js';
|
|
6
|
+
/**
|
|
7
|
+
* A builder for creating subqueries on linked records.
|
|
8
|
+
* This is used internally by the `with` method on the `QueryBuilder`.
|
|
9
|
+
* @template DB - The database type.
|
|
10
|
+
* @template CurrentTableName - The name of the table the selection is starting from.
|
|
11
|
+
*/
|
|
6
12
|
export declare class SelectionBuilder<DB extends AnyDB, CurrentTableName extends keyof DB> {
|
|
7
13
|
_executor: Executor;
|
|
8
14
|
constructor(executor: Executor);
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new query builder for a linked table.
|
|
17
|
+
* @param from - The name of the link field to select from.
|
|
18
|
+
* @returns A new `QueryBuilder` instance for the linked table.
|
|
19
|
+
*/
|
|
9
20
|
useLink<LinkName extends LinkColumnNames<DB[CurrentTableName]> & string>(from: LinkName): QueryBuilder<DB, DB[CurrentTableName][LinkName] extends LinkColumnType<any, boolean> ? DB[CurrentTableName][LinkName]["linkedTo"] : never, object, LinkName>;
|
|
10
21
|
}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { QueryBuilder } from './query-builder.js';
|
|
2
|
+
/**
|
|
3
|
+
* A builder for creating subqueries on linked records.
|
|
4
|
+
* This is used internally by the `with` method on the `QueryBuilder`.
|
|
5
|
+
* @template DB - The database type.
|
|
6
|
+
* @template CurrentTableName - The name of the table the selection is starting from.
|
|
7
|
+
*/
|
|
2
8
|
export class SelectionBuilder {
|
|
3
9
|
_executor;
|
|
4
10
|
constructor(executor) {
|
|
5
11
|
this._executor = executor;
|
|
6
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new query builder for a linked table.
|
|
15
|
+
* @param from - The name of the link field to select from.
|
|
16
|
+
* @returns A new `QueryBuilder` instance for the linked table.
|
|
17
|
+
*/
|
|
7
18
|
useLink(from) {
|
|
8
19
|
return new QueryBuilder({
|
|
9
20
|
field: from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-builder.js","sourceRoot":"","sources":["../../src/selection-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,gBAAgB;IAI3B,SAAS,CAAW;IAEpB,YAAY,QAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,OAAO,CACL,IAAc;QAEd,OAAO,IAAI,YAAY,CAQrB;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAClD,SAAS,EAAE,MAAM;SAClB,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"selection-builder.js","sourceRoot":"","sources":["../../src/selection-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAI3B,SAAS,CAAW;IAEpB,YAAY,QAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,OAAO,CACL,IAAc;QAEd,OAAO,IAAI,YAAY,CAQrB;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAClD,SAAS,EAAE,MAAM;SAClB,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
2
|
export type DriverSubscriptionResponse = {
|
|
3
3
|
id: string;
|
|
4
4
|
delta: object[];
|
|
5
5
|
tableName: string;
|
|
6
6
|
subscriptionId: string;
|
|
7
7
|
};
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class SocketConnection extends EventEmitter {
|
|
9
9
|
#private;
|
|
10
|
-
private executor;
|
|
11
10
|
private config;
|
|
12
|
-
constructor(
|
|
11
|
+
constructor(config: {
|
|
13
12
|
baseUrl: string;
|
|
14
13
|
apiKey: string;
|
|
15
14
|
timeZone?: string;
|
|
16
15
|
clientId?: string;
|
|
17
16
|
});
|
|
17
|
+
rawRequest<T>(query: string, variables: Record<string, any>, headers?: Record<string, string>, transactionId?: string): Promise<T>;
|
|
18
18
|
subscribe<TResult>(metadatas: any[], callback: (...results: TResult[]) => void): Promise<{
|
|
19
19
|
unsubscribe: () => Promise<void>;
|
|
20
20
|
}>;
|
|
21
|
+
emit(event: string | symbol, ...args: any[]): boolean;
|
|
21
22
|
}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
1
2
|
import jsonpatch from 'fast-json-patch';
|
|
2
3
|
import { io } from 'socket.io-client';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
import { withResolver } from './with-resolver.js';
|
|
5
|
+
const generateUUID = () => {
|
|
6
|
+
if (globalThis.crypto && globalThis.crypto.randomUUID) {
|
|
7
|
+
return globalThis.crypto.randomUUID();
|
|
8
|
+
}
|
|
9
|
+
// A simple fallback for environments without crypto.randomUUID
|
|
10
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
|
11
|
+
const r = (Math.random() * 16) | 0;
|
|
12
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
13
|
+
return v.toString(16);
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
export class SocketConnection extends EventEmitter {
|
|
5
17
|
config;
|
|
6
18
|
#socket = null;
|
|
7
19
|
#subscriptions = new Map();
|
|
8
20
|
#isConnecting = false;
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
21
|
+
constructor(config) {
|
|
22
|
+
super();
|
|
11
23
|
this.config = config;
|
|
12
24
|
}
|
|
13
25
|
async #connect() {
|
|
@@ -23,6 +35,7 @@ export class SubscriptionManager {
|
|
|
23
35
|
auth: {
|
|
24
36
|
token: this.config.apiKey,
|
|
25
37
|
'time-zone': this.config.timeZone || 'UTC',
|
|
38
|
+
schema: 'readable',
|
|
26
39
|
'client-id': this.config.clientId,
|
|
27
40
|
},
|
|
28
41
|
query: {},
|
|
@@ -38,6 +51,9 @@ export class SubscriptionManager {
|
|
|
38
51
|
this.#socket.on('connect_error', err => {
|
|
39
52
|
reject(err);
|
|
40
53
|
});
|
|
54
|
+
this.#socket.on('query-response', (response) => {
|
|
55
|
+
this.emit(response.queryId, response.data);
|
|
56
|
+
});
|
|
41
57
|
});
|
|
42
58
|
this.#socket.emit('subscribe', { clientId: this.config.clientId });
|
|
43
59
|
}
|
|
@@ -45,6 +61,29 @@ export class SubscriptionManager {
|
|
|
45
61
|
this.#isConnecting = false;
|
|
46
62
|
}
|
|
47
63
|
}
|
|
64
|
+
async rawRequest(query, variables, headers, transactionId) {
|
|
65
|
+
await this.#connect();
|
|
66
|
+
const queryId = generateUUID();
|
|
67
|
+
const { promise, resolve } = withResolver();
|
|
68
|
+
this.once(queryId, (response) => {
|
|
69
|
+
resolve(response);
|
|
70
|
+
});
|
|
71
|
+
if (!headers) {
|
|
72
|
+
headers = {};
|
|
73
|
+
}
|
|
74
|
+
headers = {
|
|
75
|
+
...headers,
|
|
76
|
+
schema: 'readable',
|
|
77
|
+
};
|
|
78
|
+
this.emit('query', {
|
|
79
|
+
query,
|
|
80
|
+
variables,
|
|
81
|
+
queryId,
|
|
82
|
+
...(transactionId ? { transactionId } : {}),
|
|
83
|
+
...(headers ? { options: { ...headers } } : {}),
|
|
84
|
+
});
|
|
85
|
+
return promise;
|
|
86
|
+
}
|
|
48
87
|
async subscribe(metadatas, callback) {
|
|
49
88
|
await this.#connect();
|
|
50
89
|
const param = metadatas.map(metadata => ({
|
|
@@ -53,7 +92,7 @@ export class SubscriptionManager {
|
|
|
53
92
|
returns: ['patch', 'affectedFields'],
|
|
54
93
|
},
|
|
55
94
|
}));
|
|
56
|
-
const result = await this.
|
|
95
|
+
const result = await this.rawRequest(`
|
|
57
96
|
query ($param: [SubscriptionMetadataInput]!) {
|
|
58
97
|
plugins {
|
|
59
98
|
subscriptions {
|
|
@@ -88,7 +127,7 @@ export class SubscriptionManager {
|
|
|
88
127
|
for (const id of subscriptionIds) {
|
|
89
128
|
this.#subscriptions.delete(id);
|
|
90
129
|
}
|
|
91
|
-
await this.
|
|
130
|
+
await this.rawRequest(`query RemoveSubscription ($subscriptionIds: [String]) {
|
|
92
131
|
plugins {
|
|
93
132
|
subscriptions {
|
|
94
133
|
unsubscribe(subscriptionIds: $subscriptionIds)
|
|
@@ -98,6 +137,13 @@ export class SubscriptionManager {
|
|
|
98
137
|
},
|
|
99
138
|
};
|
|
100
139
|
}
|
|
140
|
+
emit(event, ...args) {
|
|
141
|
+
if (event === 'query') {
|
|
142
|
+
this.#socket?.emit('query', ...args);
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
return super.emit(event, ...args);
|
|
146
|
+
}
|
|
101
147
|
#handlePatch(response) {
|
|
102
148
|
for (const patch of response.patches) {
|
|
103
149
|
const sub = this.#subscriptions.get(patch.subscriptionId);
|
|
@@ -110,4 +156,4 @@ export class SubscriptionManager {
|
|
|
110
156
|
}
|
|
111
157
|
}
|
|
112
158
|
}
|
|
113
|
-
//# sourceMappingURL=
|
|
159
|
+
//# sourceMappingURL=socket-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket-connection.js","sourceRoot":"","sources":["../../src/socket-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,42 @@ import type { AnyDB } from './@types/internal-types.js';
|
|
|
2
2
|
import type { Updatable, UpdateNode } from './@types/update.js';
|
|
3
3
|
import { Executor } from './executor.js';
|
|
4
4
|
import { FilterableQueryBuilder } from './where-query-builder.js';
|
|
5
|
+
/**
|
|
6
|
+
* A query builder for updating records in the database.
|
|
7
|
+
* @template DB - The database type.
|
|
8
|
+
* @template TableName - The name of the table to update.
|
|
9
|
+
*/
|
|
5
10
|
export declare class UpdateQueryBuilder<DB extends AnyDB, TableName extends keyof DB> extends FilterableQueryBuilder<DB, TableName> {
|
|
6
11
|
#private;
|
|
7
12
|
constructor(node: UpdateNode, executor: Executor);
|
|
13
|
+
/**
|
|
14
|
+
* Sets the values to update for the records that match the where clauses.
|
|
15
|
+
* @param values - An object containing the fields and their new values.
|
|
16
|
+
* @returns The `UpdateQueryBuilder` instance for chaining.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const { affectedRecords } = await qb
|
|
21
|
+
* .update('users')
|
|
22
|
+
* .set({ name: 'New Name' })
|
|
23
|
+
* .where('id', '=', 1)
|
|
24
|
+
* .execute();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
8
27
|
set(values: Updatable<DB[TableName]>): UpdateQueryBuilder<DB, TableName>;
|
|
28
|
+
/**
|
|
29
|
+
* Executes the update query.
|
|
30
|
+
* @returns A promise that resolves with the number of affected records.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const { affectedRecords } = await qb
|
|
35
|
+
* .update('users')
|
|
36
|
+
* .set({ name: 'New Name' })
|
|
37
|
+
* .where('id', '=', 1)
|
|
38
|
+
* .execute();
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
9
41
|
execute(): Promise<{
|
|
10
42
|
affectedRecords: number;
|
|
11
43
|
}>;
|
|
@@ -1,16 +1,48 @@
|
|
|
1
1
|
import { FilterableQueryBuilder } from './where-query-builder.js';
|
|
2
|
+
/**
|
|
3
|
+
* A query builder for updating records in the database.
|
|
4
|
+
* @template DB - The database type.
|
|
5
|
+
* @template TableName - The name of the table to update.
|
|
6
|
+
*/
|
|
2
7
|
export class UpdateQueryBuilder extends FilterableQueryBuilder {
|
|
3
8
|
#node;
|
|
4
9
|
constructor(node, executor) {
|
|
5
10
|
super(node, executor);
|
|
6
11
|
this.#node = node;
|
|
7
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the values to update for the records that match the where clauses.
|
|
15
|
+
* @param values - An object containing the fields and their new values.
|
|
16
|
+
* @returns The `UpdateQueryBuilder` instance for chaining.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const { affectedRecords } = await qb
|
|
21
|
+
* .update('users')
|
|
22
|
+
* .set({ name: 'New Name' })
|
|
23
|
+
* .where('id', '=', 1)
|
|
24
|
+
* .execute();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
8
27
|
set(values) {
|
|
9
28
|
return new UpdateQueryBuilder({
|
|
10
29
|
...this.#node,
|
|
11
30
|
values,
|
|
12
31
|
}, this._executor);
|
|
13
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Executes the update query.
|
|
35
|
+
* @returns A promise that resolves with the number of affected records.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const { affectedRecords } = await qb
|
|
40
|
+
* .update('users')
|
|
41
|
+
* .set({ name: 'New Name' })
|
|
42
|
+
* .where('id', '=', 1)
|
|
43
|
+
* .execute();
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
14
46
|
async execute() {
|
|
15
47
|
const response = await this._executor.execute(this);
|
|
16
48
|
return response[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-query-builder.js","sourceRoot":"","sources":["../../src/update-query-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,kBAGX,SAAQ,sBAAqC;IAC7C,KAAK,CAAa;IAElB,YAAY,IAAgB,EAAE,QAAkB;QAC9C,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,MAAgC;QAClC,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM;SACP,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAgC,IAAI,CAAC,CAAC;QAEpE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE3C,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"update-query-builder.js","sourceRoot":"","sources":["../../src/update-query-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;GAIG;AACH,MAAM,OAAO,kBAGX,SAAQ,sBAAqC;IAC7C,KAAK,CAAa;IAElB,YAAY,IAAgB,EAAE,QAAkB;QAC9C,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,MAAgC;QAClC,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM;SACP,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAgC,IAAI,CAAC,CAAC;QAEpE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE3C,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -2,12 +2,71 @@ import { LinkColumnType } from '@taylordb/shared';
|
|
|
2
2
|
import { AnyDB, FilterableNode } from './@types/internal-types.js';
|
|
3
3
|
import { ColumnNames } from './@types/query-builder.js';
|
|
4
4
|
import { Executor } from './executor.js';
|
|
5
|
+
/**
|
|
6
|
+
* A base class for query builders that support filtering.
|
|
7
|
+
* It provides the `where` and `orWhere` methods.
|
|
8
|
+
* @template DB - The database type.
|
|
9
|
+
* @template TableName - The name of the table to query.
|
|
10
|
+
*/
|
|
5
11
|
export declare class FilterableQueryBuilder<DB extends AnyDB, TableName extends keyof DB> {
|
|
6
12
|
_node: FilterableNode;
|
|
7
13
|
_executor: Executor;
|
|
8
14
|
constructor(node: FilterableNode, executor: Executor);
|
|
15
|
+
/**
|
|
16
|
+
* Adds a `where` clause to the query.
|
|
17
|
+
* This can be a simple condition, a nested query, or a cross-filter on a linked table.
|
|
18
|
+
*
|
|
19
|
+
* @param field - The field to filter on.
|
|
20
|
+
* @param operator - The filter operator.
|
|
21
|
+
* @param value - The value to filter by.
|
|
22
|
+
* @returns The query builder instance for chaining.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const users = await qb
|
|
27
|
+
* .selectFrom('users')
|
|
28
|
+
* .where('name', '=', 'John Doe')
|
|
29
|
+
* .execute();
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const users = await qb
|
|
35
|
+
* .selectFrom('users')
|
|
36
|
+
* .where((qb) =>
|
|
37
|
+
* qb.where('name', '=', 'John Doe').orWhere('email', '=', 'john.doe@example.com')
|
|
38
|
+
* )
|
|
39
|
+
* .execute();
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const users = await qb
|
|
45
|
+
* .selectFrom('users')
|
|
46
|
+
* .where('posts', 'hasAnyOf', (qb) => qb.where('isPublished', '=', true))
|
|
47
|
+
* .execute();
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
9
50
|
where<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends LinkColumnType<any, boolean> ? ((qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
10
51
|
where<C extends (builder: WhereQueryBuilder<DB, TableName>) => WhereQueryBuilder<DB, TableName>>(column: C): this;
|
|
52
|
+
/**
|
|
53
|
+
* Adds an `orWhere` clause to the query.
|
|
54
|
+
* This is similar to `where`, but the condition will be joined with `OR`.
|
|
55
|
+
*
|
|
56
|
+
* @param field - The field to filter on.
|
|
57
|
+
* @param operator - The filter operator.
|
|
58
|
+
* @param value - The value to filter by.
|
|
59
|
+
* @returns The query builder instance for chaining.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const users = await qb
|
|
64
|
+
* .selectFrom('users')
|
|
65
|
+
* .where('name', '=', 'John Doe')
|
|
66
|
+
* .orWhere('name', '=', 'Jane Doe')
|
|
67
|
+
* .execute();
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
11
70
|
orWhere<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends LinkColumnType<any, boolean> ? (qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never> | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
12
71
|
orWhere<C extends (builder: WhereQueryBuilder<DB, TableName>) => WhereQueryBuilder<DB, TableName>>(column: C): this;
|
|
13
72
|
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { SelectionBuilder } from './selection-builder.js';
|
|
2
|
+
/**
|
|
3
|
+
* A base class for query builders that support filtering.
|
|
4
|
+
* It provides the `where` and `orWhere` methods.
|
|
5
|
+
* @template DB - The database type.
|
|
6
|
+
* @template TableName - The name of the table to query.
|
|
7
|
+
*/
|
|
2
8
|
export class FilterableQueryBuilder {
|
|
3
9
|
_executor;
|
|
4
10
|
constructor(node, executor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-query-builder.js","sourceRoot":"","sources":["../../src/where-query-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,sBAAsB;IAKjC,SAAS,CAAW;IAEpB,YAAY,IAAoB,EAAE,QAAkB;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"where-query-builder.js","sourceRoot":"","sources":["../../src/where-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-resolver.js","sourceRoot":"","sources":["../../src/with-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,IAAI,OAA2B,CAAC;IAChC,IAAI,MAA8B,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,OAAO,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
|