@taylordb/query-builder 0.9.1 → 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/dist/cjs/__tests__/query-builder.spec.js +126 -23
- package/dist/cjs/__tests__/query-builder.spec.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/query-builder.d.ts +7 -5
- package/dist/cjs/query-builder.js +31 -5
- package/dist/cjs/query-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/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/executor.d.ts +4 -1
- package/dist/esm/executor.js +20 -35
- package/dist/esm/executor.js.map +1 -1
- package/dist/esm/query-builder.d.ts +7 -5
- package/dist/esm/query-builder.js +29 -4
- package/dist/esm/query-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/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 +3 -1
- package/dist/cjs/subscription-manager.js.map +0 -1
- package/dist/esm/subscription-manager.js.map +0 -1
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const index_js_1 = require("../index.js");
|
|
4
|
+
const socket_connection_js_1 = require("../socket-connection.js");
|
|
5
|
+
jest.mock('socket.io-client', () => {
|
|
6
|
+
const mockSocket = {
|
|
7
|
+
on: jest.fn(),
|
|
8
|
+
emit: jest.fn(),
|
|
9
|
+
once: jest.fn(),
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
io: jest.fn(() => mockSocket),
|
|
13
|
+
};
|
|
14
|
+
});
|
|
4
15
|
describe('QueryBuilder', () => {
|
|
16
|
+
let mockRawRequest;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
mockRawRequest = jest.fn().mockResolvedValue({ execute: [] });
|
|
19
|
+
socket_connection_js_1.SocketConnection.prototype.rawRequest = mockRawRequest;
|
|
20
|
+
});
|
|
5
21
|
// @ts-ignore
|
|
6
22
|
const qb = (0, index_js_1.createQueryBuilder)({
|
|
7
23
|
baseUrl: 'http://localhost',
|
|
8
24
|
apiKey: 'test',
|
|
9
25
|
});
|
|
10
|
-
it('should compile a select query', () => {
|
|
11
|
-
|
|
26
|
+
it('should compile a select query and execute', async () => {
|
|
27
|
+
await qb
|
|
12
28
|
.selectFrom('customers')
|
|
13
29
|
.select(['firstName', 'lastName'])
|
|
14
30
|
.where('firstName', '=', 'John')
|
|
15
31
|
.orderBy('lastName', 'asc')
|
|
16
32
|
.paginate(1, 10)
|
|
17
|
-
.
|
|
33
|
+
.execute();
|
|
34
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
35
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
18
36
|
expect(variables.metadata[0]).toMatchObject({
|
|
19
37
|
type: 'select',
|
|
20
38
|
tableName: 'customers',
|
|
@@ -33,26 +51,30 @@ describe('QueryBuilder', () => {
|
|
|
33
51
|
pagination: { offset: 0, limit: 10 },
|
|
34
52
|
});
|
|
35
53
|
});
|
|
36
|
-
it('should compile an insert query', () => {
|
|
37
|
-
|
|
54
|
+
it('should compile an insert query and execute', async () => {
|
|
55
|
+
await qb
|
|
38
56
|
.insertInto('customers')
|
|
39
57
|
.values({
|
|
40
58
|
firstName: 'Jane',
|
|
41
59
|
lastName: 'Doe',
|
|
42
60
|
})
|
|
43
|
-
.
|
|
61
|
+
.execute();
|
|
62
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
63
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
44
64
|
expect(variables.metadata[0]).toMatchObject({
|
|
45
65
|
type: 'create',
|
|
46
66
|
tableName: 'customers',
|
|
47
67
|
createdRecords: [{ firstName: 'Jane', lastName: 'Doe' }],
|
|
48
68
|
});
|
|
49
69
|
});
|
|
50
|
-
it('should compile an update query', () => {
|
|
51
|
-
|
|
70
|
+
it('should compile an update query and execute', async () => {
|
|
71
|
+
await qb
|
|
52
72
|
.update('customers')
|
|
53
73
|
.set({ lastName: 'Smith' })
|
|
54
74
|
.where('id', '=', 1)
|
|
55
|
-
.
|
|
75
|
+
.execute();
|
|
76
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
77
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
56
78
|
expect(variables.metadata[0]).toMatchObject({
|
|
57
79
|
type: 'update',
|
|
58
80
|
tableName: 'customers',
|
|
@@ -69,11 +91,10 @@ describe('QueryBuilder', () => {
|
|
|
69
91
|
},
|
|
70
92
|
});
|
|
71
93
|
});
|
|
72
|
-
it('should compile a delete query', () => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
.compile();
|
|
94
|
+
it('should compile a delete query and execute', async () => {
|
|
95
|
+
await qb.deleteFrom('customers').where('id', '=', 1).execute();
|
|
96
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
97
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
77
98
|
expect(variables.metadata[0]).toMatchObject({
|
|
78
99
|
type: 'delete',
|
|
79
100
|
tableName: 'customers',
|
|
@@ -89,15 +110,17 @@ describe('QueryBuilder', () => {
|
|
|
89
110
|
},
|
|
90
111
|
});
|
|
91
112
|
});
|
|
92
|
-
it('should compile a batch query', async () => {
|
|
93
|
-
|
|
113
|
+
it('should compile a batch query and execute', async () => {
|
|
114
|
+
await qb
|
|
94
115
|
.batch([
|
|
95
116
|
qb.selectFrom('customers').select(['firstName', 'lastName']),
|
|
96
117
|
qb
|
|
97
118
|
.insertInto('customers')
|
|
98
119
|
.values({ firstName: 'John', lastName: 'Doe' }),
|
|
99
120
|
])
|
|
100
|
-
.
|
|
121
|
+
.execute();
|
|
122
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
123
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
101
124
|
expect(variables.metadata).toHaveLength(2);
|
|
102
125
|
expect(variables.metadata[0]).toMatchObject({
|
|
103
126
|
type: 'select',
|
|
@@ -108,14 +131,16 @@ describe('QueryBuilder', () => {
|
|
|
108
131
|
tableName: 'customers',
|
|
109
132
|
});
|
|
110
133
|
});
|
|
111
|
-
it('should compile an aggregate query', () => {
|
|
112
|
-
|
|
134
|
+
it('should compile an aggregate query and execute', async () => {
|
|
135
|
+
await qb
|
|
113
136
|
.aggregateFrom('customers')
|
|
114
137
|
.groupBy('firstName', 'asc')
|
|
115
138
|
.withAggregates({
|
|
116
139
|
id: ['sum'],
|
|
117
140
|
})
|
|
118
|
-
.
|
|
141
|
+
.execute();
|
|
142
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
143
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
119
144
|
expect(variables.metadata[0]).toMatchObject({
|
|
120
145
|
type: 'aggregation',
|
|
121
146
|
tableName: 'customers',
|
|
@@ -125,11 +150,13 @@ describe('QueryBuilder', () => {
|
|
|
125
150
|
},
|
|
126
151
|
});
|
|
127
152
|
});
|
|
128
|
-
it('should compile a cross-table query', () => {
|
|
129
|
-
|
|
153
|
+
it('should compile a cross-table query and execute', async () => {
|
|
154
|
+
await qb
|
|
130
155
|
.selectFrom('customers')
|
|
131
156
|
.where('orders', 'hasAnyOf', qb => qb.where('amount', '>', 100))
|
|
132
|
-
.
|
|
157
|
+
.execute();
|
|
158
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
159
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
133
160
|
expect(variables.metadata[0]).toMatchObject({
|
|
134
161
|
type: 'select',
|
|
135
162
|
tableName: 'customers',
|
|
@@ -157,5 +184,81 @@ describe('QueryBuilder', () => {
|
|
|
157
184
|
},
|
|
158
185
|
});
|
|
159
186
|
});
|
|
187
|
+
it('should handle a successful transaction', async () => {
|
|
188
|
+
const mockRawRequest = jest
|
|
189
|
+
.fn()
|
|
190
|
+
.mockResolvedValueOnce({
|
|
191
|
+
startTransaction: 'test-transaction-id',
|
|
192
|
+
})
|
|
193
|
+
.mockResolvedValueOnce({ execute: [] })
|
|
194
|
+
.mockResolvedValueOnce({ commitTransaction: true });
|
|
195
|
+
socket_connection_js_1.SocketConnection.prototype.rawRequest = mockRawRequest;
|
|
196
|
+
// @ts-ignore
|
|
197
|
+
const qb = (0, index_js_1.createQueryBuilder)({
|
|
198
|
+
baseUrl: 'http://localhost',
|
|
199
|
+
apiKey: 'test',
|
|
200
|
+
});
|
|
201
|
+
await qb.transaction(txQb => {
|
|
202
|
+
return txQb
|
|
203
|
+
.insertInto('customers')
|
|
204
|
+
.values({ firstName: 'John', lastName: 'Doe' })
|
|
205
|
+
.execute();
|
|
206
|
+
});
|
|
207
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(3);
|
|
208
|
+
const startTransactionCall = mockRawRequest.mock.calls[0];
|
|
209
|
+
expect(startTransactionCall[0]).toContain('startTransaction');
|
|
210
|
+
const executeCall = mockRawRequest.mock.calls[1];
|
|
211
|
+
expect(executeCall[3]).toBe('test-transaction-id');
|
|
212
|
+
const commitTransactionCall = mockRawRequest.mock.calls[2];
|
|
213
|
+
expect(commitTransactionCall[0]).toContain('commitTransaction');
|
|
214
|
+
expect(commitTransactionCall[3]).toBe('test-transaction-id');
|
|
215
|
+
});
|
|
216
|
+
it('should handle a failed transaction and rollback', async () => {
|
|
217
|
+
const transactionId = 'test-transaction-id-fail';
|
|
218
|
+
const errorMessage = 'Something went wrong';
|
|
219
|
+
const mockRawRequest = jest
|
|
220
|
+
.fn()
|
|
221
|
+
.mockResolvedValueOnce({ startTransaction: transactionId })
|
|
222
|
+
.mockRejectedValueOnce(new Error(errorMessage))
|
|
223
|
+
.mockResolvedValueOnce({ rollbackTransaction: true });
|
|
224
|
+
socket_connection_js_1.SocketConnection.prototype.rawRequest = mockRawRequest;
|
|
225
|
+
// @ts-ignore
|
|
226
|
+
const qb = (0, index_js_1.createQueryBuilder)({
|
|
227
|
+
baseUrl: 'http://localhost',
|
|
228
|
+
apiKey: 'test',
|
|
229
|
+
});
|
|
230
|
+
await expect(qb.transaction(txQb => {
|
|
231
|
+
return txQb
|
|
232
|
+
.insertInto('customers')
|
|
233
|
+
.values({ firstName: 'John', lastName: 'Doe' })
|
|
234
|
+
.execute();
|
|
235
|
+
})).rejects.toThrow(errorMessage);
|
|
236
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(3);
|
|
237
|
+
const startTransactionCall = mockRawRequest.mock.calls[0];
|
|
238
|
+
expect(startTransactionCall[0]).toContain('startTransaction');
|
|
239
|
+
const executeCall = mockRawRequest.mock.calls[1];
|
|
240
|
+
expect(executeCall[3]).toBe(transactionId);
|
|
241
|
+
const rollbackTransactionCall = mockRawRequest.mock.calls[2];
|
|
242
|
+
expect(rollbackTransactionCall[0]).toContain('rollbackTransaction');
|
|
243
|
+
expect(rollbackTransactionCall[3]).toBe(transactionId);
|
|
244
|
+
});
|
|
245
|
+
it('should not have transaction method within a transaction', async () => {
|
|
246
|
+
const mockRawRequest = jest
|
|
247
|
+
.fn()
|
|
248
|
+
.mockResolvedValueOnce({
|
|
249
|
+
startTransaction: 'test-transaction-id-no-nested',
|
|
250
|
+
})
|
|
251
|
+
.mockResolvedValueOnce({ commitTransaction: true });
|
|
252
|
+
socket_connection_js_1.SocketConnection.prototype.rawRequest = mockRawRequest;
|
|
253
|
+
// @ts-ignore
|
|
254
|
+
const qb = (0, index_js_1.createQueryBuilder)({
|
|
255
|
+
baseUrl: 'http://localhost',
|
|
256
|
+
apiKey: 'test',
|
|
257
|
+
});
|
|
258
|
+
await qb.transaction(async (txQb) => {
|
|
259
|
+
expect(txQb).not.toHaveProperty('transaction');
|
|
260
|
+
});
|
|
261
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(2);
|
|
262
|
+
});
|
|
160
263
|
});
|
|
161
264
|
//# sourceMappingURL=query-builder.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":";;AAAA,0CAAiD;
|
|
1
|
+
{"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/executor.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AnySubscribableQueryBuilder } from './batch-query-builder.js';
|
|
2
|
+
import { SocketConnection } from './socket-connection.js';
|
|
2
3
|
interface Compilable {
|
|
3
4
|
compile(): {
|
|
4
5
|
query: string;
|
|
@@ -7,7 +8,9 @@ interface Compilable {
|
|
|
7
8
|
}
|
|
8
9
|
export declare class Executor {
|
|
9
10
|
#private;
|
|
10
|
-
constructor(baseUrl: string, apiKey: string);
|
|
11
|
+
constructor(baseUrl: string, apiKey: string, transactionId?: string, socketConnection?: SocketConnection);
|
|
12
|
+
get isInTransaction(): boolean;
|
|
13
|
+
withTransactionId(transactionId: string): Executor;
|
|
11
14
|
execute<T>(builder: Compilable): Promise<T>;
|
|
12
15
|
rawRequest<T>(query: string, variables: Record<string, any>, headers?: Record<string, string>): Promise<T>;
|
|
13
16
|
subscribe<TResult>(builders: AnySubscribableQueryBuilder[], callback: (result: TResult) => void): Promise<{
|
package/dist/cjs/executor.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Executor = void 0;
|
|
4
|
-
const
|
|
4
|
+
const socket_connection_js_1 = require("./socket-connection.js");
|
|
5
5
|
const generateUUID = () => {
|
|
6
6
|
if (globalThis.crypto && globalThis.crypto.randomUUID) {
|
|
7
7
|
return globalThis.crypto.randomUUID();
|
|
@@ -16,51 +16,36 @@ const generateUUID = () => {
|
|
|
16
16
|
class Executor {
|
|
17
17
|
#baseUrl;
|
|
18
18
|
#apiKey;
|
|
19
|
-
#
|
|
20
|
-
|
|
19
|
+
#socketConnection;
|
|
20
|
+
#transactionId;
|
|
21
|
+
constructor(baseUrl, apiKey, transactionId, socketConnection) {
|
|
21
22
|
this.#baseUrl = baseUrl;
|
|
22
23
|
this.#apiKey = apiKey;
|
|
23
|
-
this.#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
this.#transactionId = transactionId;
|
|
25
|
+
this.#socketConnection =
|
|
26
|
+
socketConnection ??
|
|
27
|
+
new socket_connection_js_1.SocketConnection({
|
|
28
|
+
baseUrl,
|
|
29
|
+
apiKey,
|
|
30
|
+
clientId: generateUUID(),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
get isInTransaction() {
|
|
34
|
+
return !!this.#transactionId;
|
|
35
|
+
}
|
|
36
|
+
withTransactionId(transactionId) {
|
|
37
|
+
return new Executor(this.#baseUrl, this.#apiKey, transactionId, this.#socketConnection);
|
|
28
38
|
}
|
|
29
39
|
async execute(builder) {
|
|
30
40
|
const { query, variables } = builder.compile();
|
|
31
41
|
return this.rawRequest(query, variables);
|
|
32
42
|
}
|
|
33
43
|
async rawRequest(query, variables, headers) {
|
|
34
|
-
|
|
35
|
-
method: 'POST',
|
|
36
|
-
headers: {
|
|
37
|
-
'Content-Type': 'application/json',
|
|
38
|
-
Authorization: `Bearer ${this.#apiKey}`,
|
|
39
|
-
schema: 'readable',
|
|
40
|
-
...(headers ? { ...headers } : {}),
|
|
41
|
-
},
|
|
42
|
-
body: JSON.stringify({ query, variables }),
|
|
43
|
-
});
|
|
44
|
-
if (!response.ok) {
|
|
45
|
-
const errorText = await response.text();
|
|
46
|
-
throw new Error(`Request failed with status ${response.status}: ${errorText}`);
|
|
47
|
-
}
|
|
48
|
-
const jsonResponse = await response.json();
|
|
49
|
-
if (jsonResponse.errors) {
|
|
50
|
-
throw new Error(`GraphQL errors: ${jsonResponse.errors.map(error => error.message).join('\n')}`);
|
|
51
|
-
}
|
|
52
|
-
if (jsonResponse.data) {
|
|
53
|
-
const [firstKey] = Object.keys(jsonResponse.data);
|
|
54
|
-
if (Array.isArray(jsonResponse.data[firstKey])) {
|
|
55
|
-
return jsonResponse.data[firstKey];
|
|
56
|
-
}
|
|
57
|
-
return jsonResponse.data;
|
|
58
|
-
}
|
|
59
|
-
throw new Error('Unexpected response format');
|
|
44
|
+
return this.#socketConnection.rawRequest(query, variables, headers, this.#transactionId);
|
|
60
45
|
}
|
|
61
46
|
subscribe(builders, callback) {
|
|
62
47
|
const metadatas = builders.map(b => b._prepareMetadata());
|
|
63
|
-
return this.#
|
|
48
|
+
return this.#socketConnection.subscribe(metadatas, callback);
|
|
64
49
|
}
|
|
65
50
|
}
|
|
66
51
|
exports.Executor = Executor;
|
package/dist/cjs/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":";;;AACA,iEAA0D;AAM1D,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IACD,+DAA+D;IAC/D,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;QACjE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAa,QAAQ;IACnB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,iBAAiB,CAAmB;IACpC,cAAc,CAAU;IAExB,YACE,OAAe,EACf,MAAc,EACd,aAAsB,EACtB,gBAAmC;QAEnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,iBAAiB;YACpB,gBAAgB;gBAChB,IAAI,uCAAgB,CAAC;oBACnB,OAAO;oBACP,MAAM;oBACN,QAAQ,EAAE,YAAY,EAAE;iBACzB,CAAC,CAAC;IACP,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,iBAAiB,CAAC,aAAqB;QACrC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,aAAa,EACb,IAAI,CAAC,iBAAiB,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,OAAmB;QAClC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,SAA8B,EAC9B,OAAgC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CACtC,KAAK,EACL,SAAS,EACT,OAAO,EACP,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED,SAAS,CACP,QAAuC,EACvC,QAAmC;QAEnC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACF;AA9DD,4BA8DC"}
|
|
@@ -184,12 +184,9 @@ export declare class QueryBuilder<DB extends AnyDB, TableName extends keyof DB,
|
|
|
184
184
|
/**
|
|
185
185
|
* The root query builder class that provides entry points for all query types.
|
|
186
186
|
*/
|
|
187
|
-
export declare class
|
|
187
|
+
export declare class BaseRootQueryBuilder<DB extends AnyDB> {
|
|
188
188
|
#private;
|
|
189
|
-
constructor(
|
|
190
|
-
baseUrl: string;
|
|
191
|
-
apiKey: string;
|
|
192
|
-
});
|
|
189
|
+
constructor(executor: Executor);
|
|
193
190
|
/**
|
|
194
191
|
* Creates a new select query builder for the specified table.
|
|
195
192
|
* @param from - The name of the table to select from.
|
|
@@ -267,6 +264,11 @@ export declare class RootQueryBuilder<DB extends AnyDB> {
|
|
|
267
264
|
*/
|
|
268
265
|
aggregateFrom<TableName extends keyof Omit<DB, 'selectTable' | 'attachmentTable' | 'collaboratorsTable'> & string>(tableName: TableName): AggregationQueryBuilder<DB, TableName>;
|
|
269
266
|
}
|
|
267
|
+
export declare class RootQueryBuilder<DB extends AnyDB> extends BaseRootQueryBuilder<DB> {
|
|
268
|
+
#private;
|
|
269
|
+
constructor(executor: Executor);
|
|
270
|
+
transaction<T>(callback: (qb: BaseRootQueryBuilder<DB>) => Promise<T>): Promise<T>;
|
|
271
|
+
}
|
|
270
272
|
export declare function createQueryBuilder<DB extends AnyDB>(config: {
|
|
271
273
|
baseUrl: string;
|
|
272
274
|
apiKey: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RootQueryBuilder = exports.QueryBuilder = void 0;
|
|
3
|
+
exports.RootQueryBuilder = exports.BaseRootQueryBuilder = exports.QueryBuilder = void 0;
|
|
4
4
|
exports.createQueryBuilder = createQueryBuilder;
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
const aggregation_query_builder_js_1 = require("./aggregation-query-builder.js");
|
|
@@ -267,10 +267,10 @@ exports.QueryBuilder = QueryBuilder;
|
|
|
267
267
|
/**
|
|
268
268
|
* The root query builder class that provides entry points for all query types.
|
|
269
269
|
*/
|
|
270
|
-
class
|
|
270
|
+
class BaseRootQueryBuilder {
|
|
271
271
|
#executor;
|
|
272
|
-
constructor(
|
|
273
|
-
this.#executor =
|
|
272
|
+
constructor(executor) {
|
|
273
|
+
this.#executor = executor;
|
|
274
274
|
}
|
|
275
275
|
/**
|
|
276
276
|
* Creates a new select query builder for the specified table.
|
|
@@ -389,6 +389,31 @@ class RootQueryBuilder {
|
|
|
389
389
|
return new aggregation_query_builder_js_1.AggregationQueryBuilder(node, this.#executor);
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
|
+
exports.BaseRootQueryBuilder = BaseRootQueryBuilder;
|
|
393
|
+
class RootQueryBuilder extends BaseRootQueryBuilder {
|
|
394
|
+
#executor;
|
|
395
|
+
constructor(executor) {
|
|
396
|
+
super(executor);
|
|
397
|
+
this.#executor = executor;
|
|
398
|
+
}
|
|
399
|
+
async transaction(callback) {
|
|
400
|
+
if (this.#executor.isInTransaction) {
|
|
401
|
+
throw new Error('Nested transactions are not supported.');
|
|
402
|
+
}
|
|
403
|
+
const { startTransaction: transactionId } = await this.#executor.rawRequest('mutation { startTransaction }', {});
|
|
404
|
+
const transactionalExecutor = this.#executor.withTransactionId(transactionId);
|
|
405
|
+
const transactionalQb = new BaseRootQueryBuilder(transactionalExecutor);
|
|
406
|
+
try {
|
|
407
|
+
const result = await callback(transactionalQb);
|
|
408
|
+
await transactionalExecutor.rawRequest('mutation { commitTransaction }', {});
|
|
409
|
+
return result;
|
|
410
|
+
}
|
|
411
|
+
catch (error) {
|
|
412
|
+
await transactionalExecutor.rawRequest('mutation { rollbackTransaction }', {});
|
|
413
|
+
throw error;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
392
417
|
exports.RootQueryBuilder = RootQueryBuilder;
|
|
393
418
|
const QBConfigSchema = zod_1.z.object({
|
|
394
419
|
baseUrl: zod_1.z.string().url(),
|
|
@@ -396,6 +421,7 @@ const QBConfigSchema = zod_1.z.object({
|
|
|
396
421
|
});
|
|
397
422
|
function createQueryBuilder(config) {
|
|
398
423
|
QBConfigSchema.parse(config);
|
|
399
|
-
|
|
424
|
+
const executor = new executor_js_1.Executor(config.baseUrl, config.apiKey);
|
|
425
|
+
return new RootQueryBuilder(executor);
|
|
400
426
|
}
|
|
401
427
|
//# sourceMappingURL=query-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
}
|
|
@@ -3,17 +3,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.SocketConnection = void 0;
|
|
7
|
+
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
7
8
|
const fast_json_patch_1 = __importDefault(require("fast-json-patch"));
|
|
8
9
|
const socket_io_client_1 = require("socket.io-client");
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const with_resolver_js_1 = require("./with-resolver.js");
|
|
11
|
+
const generateUUID = () => {
|
|
12
|
+
if (globalThis.crypto && globalThis.crypto.randomUUID) {
|
|
13
|
+
return globalThis.crypto.randomUUID();
|
|
14
|
+
}
|
|
15
|
+
// A simple fallback for environments without crypto.randomUUID
|
|
16
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
|
17
|
+
const r = (Math.random() * 16) | 0;
|
|
18
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
19
|
+
return v.toString(16);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
class SocketConnection extends eventemitter3_1.default {
|
|
11
23
|
config;
|
|
12
24
|
#socket = null;
|
|
13
25
|
#subscriptions = new Map();
|
|
14
26
|
#isConnecting = false;
|
|
15
|
-
constructor(
|
|
16
|
-
|
|
27
|
+
constructor(config) {
|
|
28
|
+
super();
|
|
17
29
|
this.config = config;
|
|
18
30
|
}
|
|
19
31
|
async #connect() {
|
|
@@ -29,6 +41,7 @@ class SubscriptionManager {
|
|
|
29
41
|
auth: {
|
|
30
42
|
token: this.config.apiKey,
|
|
31
43
|
'time-zone': this.config.timeZone || 'UTC',
|
|
44
|
+
schema: 'readable',
|
|
32
45
|
'client-id': this.config.clientId,
|
|
33
46
|
},
|
|
34
47
|
query: {},
|
|
@@ -44,6 +57,9 @@ class SubscriptionManager {
|
|
|
44
57
|
this.#socket.on('connect_error', err => {
|
|
45
58
|
reject(err);
|
|
46
59
|
});
|
|
60
|
+
this.#socket.on('query-response', (response) => {
|
|
61
|
+
this.emit(response.queryId, response.data);
|
|
62
|
+
});
|
|
47
63
|
});
|
|
48
64
|
this.#socket.emit('subscribe', { clientId: this.config.clientId });
|
|
49
65
|
}
|
|
@@ -51,6 +67,29 @@ class SubscriptionManager {
|
|
|
51
67
|
this.#isConnecting = false;
|
|
52
68
|
}
|
|
53
69
|
}
|
|
70
|
+
async rawRequest(query, variables, headers, transactionId) {
|
|
71
|
+
await this.#connect();
|
|
72
|
+
const queryId = generateUUID();
|
|
73
|
+
const { promise, resolve } = (0, with_resolver_js_1.withResolver)();
|
|
74
|
+
this.once(queryId, (response) => {
|
|
75
|
+
resolve(response);
|
|
76
|
+
});
|
|
77
|
+
if (!headers) {
|
|
78
|
+
headers = {};
|
|
79
|
+
}
|
|
80
|
+
headers = {
|
|
81
|
+
...headers,
|
|
82
|
+
schema: 'readable',
|
|
83
|
+
};
|
|
84
|
+
this.emit('query', {
|
|
85
|
+
query,
|
|
86
|
+
variables,
|
|
87
|
+
queryId,
|
|
88
|
+
...(transactionId ? { transactionId } : {}),
|
|
89
|
+
...(headers ? { options: { ...headers } } : {}),
|
|
90
|
+
});
|
|
91
|
+
return promise;
|
|
92
|
+
}
|
|
54
93
|
async subscribe(metadatas, callback) {
|
|
55
94
|
await this.#connect();
|
|
56
95
|
const param = metadatas.map(metadata => ({
|
|
@@ -59,7 +98,7 @@ class SubscriptionManager {
|
|
|
59
98
|
returns: ['patch', 'affectedFields'],
|
|
60
99
|
},
|
|
61
100
|
}));
|
|
62
|
-
const result = await this.
|
|
101
|
+
const result = await this.rawRequest(`
|
|
63
102
|
query ($param: [SubscriptionMetadataInput]!) {
|
|
64
103
|
plugins {
|
|
65
104
|
subscriptions {
|
|
@@ -94,7 +133,7 @@ class SubscriptionManager {
|
|
|
94
133
|
for (const id of subscriptionIds) {
|
|
95
134
|
this.#subscriptions.delete(id);
|
|
96
135
|
}
|
|
97
|
-
await this.
|
|
136
|
+
await this.rawRequest(`query RemoveSubscription ($subscriptionIds: [String]) {
|
|
98
137
|
plugins {
|
|
99
138
|
subscriptions {
|
|
100
139
|
unsubscribe(subscriptionIds: $subscriptionIds)
|
|
@@ -104,6 +143,13 @@ class SubscriptionManager {
|
|
|
104
143
|
},
|
|
105
144
|
};
|
|
106
145
|
}
|
|
146
|
+
emit(event, ...args) {
|
|
147
|
+
if (event === 'query') {
|
|
148
|
+
this.#socket?.emit('query', ...args);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return super.emit(event, ...args);
|
|
152
|
+
}
|
|
107
153
|
#handlePatch(response) {
|
|
108
154
|
for (const patch of response.patches) {
|
|
109
155
|
const sub = this.#subscriptions.get(patch.subscriptionId);
|
|
@@ -116,5 +162,5 @@ class SubscriptionManager {
|
|
|
116
162
|
}
|
|
117
163
|
}
|
|
118
164
|
}
|
|
119
|
-
exports.
|
|
120
|
-
//# sourceMappingURL=
|
|
165
|
+
exports.SocketConnection = SocketConnection;
|
|
166
|
+
//# sourceMappingURL=socket-connection.js.map
|