@taylordb/query-builder 0.9.8 → 0.9.9
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/README.md +69 -0
- package/dist/cjs/@types/query-builder.d.ts +3 -3
- package/dist/cjs/@types/type-helpers.d.ts +2 -2
- package/dist/cjs/__tests__/query-builder.spec.js +180 -0
- package/dist/cjs/__tests__/query-builder.spec.js.map +1 -1
- package/dist/cjs/executor.d.ts +3 -1
- package/dist/cjs/executor.js +11 -2
- package/dist/cjs/executor.js.map +1 -1
- package/dist/cjs/fields-processor.d.ts +3 -0
- package/dist/cjs/fields-processor.js +26 -0
- package/dist/cjs/fields-processor.js.map +1 -0
- package/dist/cjs/insert-query-builder.js +5 -1
- package/dist/cjs/insert-query-builder.js.map +1 -1
- package/dist/cjs/query-builder.d.ts +8 -4
- package/dist/cjs/query-builder.js +33 -14
- package/dist/cjs/query-builder.js.map +1 -1
- package/dist/cjs/selection-builder.d.ts +2 -2
- package/dist/cjs/selection-builder.js.map +1 -1
- package/dist/cjs/socket-connection.d.ts +1 -0
- package/dist/cjs/socket-connection.js +6 -5
- package/dist/cjs/socket-connection.js.map +1 -1
- package/dist/cjs/update-query-builder.js +4 -1
- package/dist/cjs/update-query-builder.js.map +1 -1
- package/dist/cjs/where-query-builder.d.ts +3 -3
- package/dist/cjs/where-query-builder.js.map +1 -1
- package/dist/esm/@types/query-builder.d.ts +3 -3
- package/dist/esm/@types/type-helpers.d.ts +2 -2
- package/dist/esm/__tests__/query-builder.spec.js +180 -0
- package/dist/esm/__tests__/query-builder.spec.js.map +1 -1
- package/dist/esm/executor.d.ts +3 -1
- package/dist/esm/executor.js +11 -2
- package/dist/esm/executor.js.map +1 -1
- package/dist/esm/fields-processor.d.ts +3 -0
- package/dist/esm/fields-processor.js +22 -0
- package/dist/esm/fields-processor.js.map +1 -0
- package/dist/esm/insert-query-builder.js +5 -1
- package/dist/esm/insert-query-builder.js.map +1 -1
- package/dist/esm/query-builder.d.ts +8 -4
- package/dist/esm/query-builder.js +33 -14
- package/dist/esm/query-builder.js.map +1 -1
- package/dist/esm/selection-builder.d.ts +2 -2
- package/dist/esm/selection-builder.js.map +1 -1
- package/dist/esm/socket-connection.d.ts +1 -0
- package/dist/esm/socket-connection.js +6 -5
- package/dist/esm/socket-connection.js.map +1 -1
- package/dist/esm/update-query-builder.js +4 -1
- package/dist/esm/update-query-builder.js.map +1 -1
- package/dist/esm/where-query-builder.d.ts +3 -3
- package/dist/esm/where-query-builder.js.map +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RootQueryBuilder = exports.BaseRootQueryBuilder = exports.QueryBuilder = void 0;
|
|
4
4
|
exports.createQueryBuilder = createQueryBuilder;
|
|
5
|
+
const shared_1 = require("@taylordb/shared");
|
|
5
6
|
const zod_1 = require("zod");
|
|
6
7
|
const aggregation_query_builder_js_1 = require("./aggregation-query-builder.js");
|
|
7
8
|
const batch_query_builder_js_1 = require("./batch-query-builder.js");
|
|
@@ -12,6 +13,7 @@ const selection_builder_js_1 = require("./selection-builder.js");
|
|
|
12
13
|
const update_query_builder_js_1 = require("./update-query-builder.js");
|
|
13
14
|
const where_query_builder_js_1 = require("./where-query-builder.js");
|
|
14
15
|
const DEFAULT_LIMIT = 50;
|
|
16
|
+
const MEDIA_UPLOAD_URL = 'https://media.taylordb.ai/media-collection';
|
|
15
17
|
/**
|
|
16
18
|
* The main query builder class for constructing and executing select queries.
|
|
17
19
|
* @template DB - The database type.
|
|
@@ -268,9 +270,9 @@ exports.QueryBuilder = QueryBuilder;
|
|
|
268
270
|
* The root query builder class that provides entry points for all query types.
|
|
269
271
|
*/
|
|
270
272
|
class BaseRootQueryBuilder {
|
|
271
|
-
|
|
273
|
+
_executor;
|
|
272
274
|
constructor(executor) {
|
|
273
|
-
this
|
|
275
|
+
this._executor = executor;
|
|
274
276
|
}
|
|
275
277
|
/**
|
|
276
278
|
* Creates a new select query builder for the specified table.
|
|
@@ -290,7 +292,7 @@ class BaseRootQueryBuilder {
|
|
|
290
292
|
filtersSet: { conjunction: 'and', filtersSet: [] },
|
|
291
293
|
type: 'select',
|
|
292
294
|
queryType: 'root',
|
|
293
|
-
}, this
|
|
295
|
+
}, this._executor);
|
|
294
296
|
}
|
|
295
297
|
/**
|
|
296
298
|
* Creates a new insert query builder for the specified table.
|
|
@@ -309,7 +311,7 @@ class BaseRootQueryBuilder {
|
|
|
309
311
|
createdRecords: [],
|
|
310
312
|
returning: [],
|
|
311
313
|
type: 'create',
|
|
312
|
-
}, this
|
|
314
|
+
}, this._executor);
|
|
313
315
|
}
|
|
314
316
|
/**
|
|
315
317
|
* Creates a new update query builder for the specified table.
|
|
@@ -328,7 +330,7 @@ class BaseRootQueryBuilder {
|
|
|
328
330
|
values: {},
|
|
329
331
|
filtersSet: { conjunction: 'and', filtersSet: [] },
|
|
330
332
|
type: 'update',
|
|
331
|
-
}, this
|
|
333
|
+
}, this._executor);
|
|
332
334
|
}
|
|
333
335
|
/**
|
|
334
336
|
* Creates a new delete query builder for the specified table.
|
|
@@ -347,7 +349,7 @@ class BaseRootQueryBuilder {
|
|
|
347
349
|
deletedRecordIds: [],
|
|
348
350
|
filtersSet: { conjunction: 'and', filtersSet: [] },
|
|
349
351
|
type: 'delete',
|
|
350
|
-
}, this
|
|
352
|
+
}, this._executor);
|
|
351
353
|
}
|
|
352
354
|
/**
|
|
353
355
|
* Creates a new batch query builder.
|
|
@@ -365,7 +367,7 @@ class BaseRootQueryBuilder {
|
|
|
365
367
|
* ```
|
|
366
368
|
*/
|
|
367
369
|
batch(builders) {
|
|
368
|
-
return new batch_query_builder_js_1.BatchQueryBuilder(builders, this
|
|
370
|
+
return new batch_query_builder_js_1.BatchQueryBuilder(builders, this._executor);
|
|
369
371
|
}
|
|
370
372
|
/**
|
|
371
373
|
* Creates a new aggregation query builder for the specified table.
|
|
@@ -386,22 +388,39 @@ class BaseRootQueryBuilder {
|
|
|
386
388
|
groupings: [],
|
|
387
389
|
aggregations: {},
|
|
388
390
|
};
|
|
389
|
-
return new aggregation_query_builder_js_1.AggregationQueryBuilder(node, this
|
|
391
|
+
return new aggregation_query_builder_js_1.AggregationQueryBuilder(node, this._executor);
|
|
392
|
+
}
|
|
393
|
+
async uploadAttachments(files) {
|
|
394
|
+
const formData = new FormData();
|
|
395
|
+
files.forEach(({ file, name }) => {
|
|
396
|
+
formData.append('files', file, name);
|
|
397
|
+
});
|
|
398
|
+
const response = await fetch(MEDIA_UPLOAD_URL, {
|
|
399
|
+
method: 'POST',
|
|
400
|
+
headers: {
|
|
401
|
+
Authorization: `Bearer ${this._executor.getApiKey()}`,
|
|
402
|
+
baseId: this._executor.getBaseId(),
|
|
403
|
+
},
|
|
404
|
+
body: formData,
|
|
405
|
+
});
|
|
406
|
+
if (!response.ok) {
|
|
407
|
+
throw new Error(`Attachment upload failed: ${response.statusText}`);
|
|
408
|
+
}
|
|
409
|
+
const responseData = await response.json();
|
|
410
|
+
return responseData.map((data) => new shared_1.Attachment(data));
|
|
390
411
|
}
|
|
391
412
|
}
|
|
392
413
|
exports.BaseRootQueryBuilder = BaseRootQueryBuilder;
|
|
393
414
|
class RootQueryBuilder extends BaseRootQueryBuilder {
|
|
394
|
-
#executor;
|
|
395
415
|
constructor(executor) {
|
|
396
416
|
super(executor);
|
|
397
|
-
this.#executor = executor;
|
|
398
417
|
}
|
|
399
418
|
async transaction(callback) {
|
|
400
|
-
if (this
|
|
419
|
+
if (this._executor.isInTransaction) {
|
|
401
420
|
throw new Error('Nested transactions are not supported.');
|
|
402
421
|
}
|
|
403
|
-
const { startTransaction: transactionId } = await this
|
|
404
|
-
const transactionalExecutor = this
|
|
422
|
+
const { startTransaction: transactionId } = await this._executor.rawRequest('mutation { startTransaction }', {});
|
|
423
|
+
const transactionalExecutor = this._executor.withTransactionId(transactionId);
|
|
405
424
|
const transactionalQb = new BaseRootQueryBuilder(transactionalExecutor);
|
|
406
425
|
try {
|
|
407
426
|
const result = await callback(transactionalQb);
|
|
@@ -421,7 +440,7 @@ const QBConfigSchema = zod_1.z.object({
|
|
|
421
440
|
});
|
|
422
441
|
function createQueryBuilder(config) {
|
|
423
442
|
QBConfigSchema.parse(config);
|
|
424
|
-
const executor = new executor_js_1.Executor(config.baseUrl, config.apiKey);
|
|
443
|
+
const executor = new executor_js_1.Executor(config.baseUrl, config.apiKey, config.baseId);
|
|
425
444
|
return new RootQueryBuilder(executor);
|
|
426
445
|
}
|
|
427
446
|
//# 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,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ALinkColumnType } from '@taylordb/shared';
|
|
2
2
|
import type { AnyDB } from './@types/internal-types.js';
|
|
3
3
|
import { LinkColumnNames } from './@types/query-builder.js';
|
|
4
4
|
import { Executor } from './executor.js';
|
|
@@ -17,5 +17,5 @@ export declare class SelectionBuilder<DB extends AnyDB, CurrentTableName extends
|
|
|
17
17
|
* @param from - The name of the link field to select from.
|
|
18
18
|
* @returns A new `QueryBuilder` instance for the linked table.
|
|
19
19
|
*/
|
|
20
|
-
useLink<LinkName extends LinkColumnNames<DB[CurrentTableName]> & string>(from: LinkName): QueryBuilder<DB, DB[CurrentTableName][LinkName] extends
|
|
20
|
+
useLink<LinkName extends LinkColumnNames<DB[CurrentTableName]> & string>(from: LinkName): QueryBuilder<DB, DB[CurrentTableName][LinkName] extends ALinkColumnType<any, any, any, any, boolean> ? DB[CurrentTableName][LinkName]["linkedTo"] : never, object, LinkName>;
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-builder.js","sourceRoot":"","sources":["../../src/selection-builder.ts"],"names":[],"mappings":";;;AAIA,yDAAkD;AAElD;;;;;GAKG;AACH,MAAa,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,+BAAY,
|
|
1
|
+
{"version":3,"file":"selection-builder.js","sourceRoot":"","sources":["../../src/selection-builder.ts"],"names":[],"mappings":";;;AAIA,yDAAkD;AAElD;;;;;GAKG;AACH,MAAa,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,+BAAY,CAcrB;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;AAzCD,4CAyCC"}
|
|
@@ -37,9 +37,7 @@ class SocketConnection extends eventemitter3_1.default {
|
|
|
37
37
|
}
|
|
38
38
|
this.#connectionPromise = new Promise((resolve, reject) => {
|
|
39
39
|
try {
|
|
40
|
-
const socketUrl = this.config.baseUrl
|
|
41
|
-
.replace(/^http/, 'ws')
|
|
42
|
-
.replace('api', 'bamboo');
|
|
40
|
+
const socketUrl = `${this.config.baseUrl.replace(/^http/, 'ws')}/bamboo/${this.config.baseId}`;
|
|
43
41
|
this.#socket = (0, socket_io_client_1.io)(socketUrl, {
|
|
44
42
|
auth: {
|
|
45
43
|
token: this.config.apiKey,
|
|
@@ -48,13 +46,14 @@ class SocketConnection extends eventemitter3_1.default {
|
|
|
48
46
|
},
|
|
49
47
|
query: {},
|
|
50
48
|
});
|
|
51
|
-
this.#socket.on('
|
|
52
|
-
this.#socket?.emit('listen', { clientId: this.config.clientId });
|
|
49
|
+
this.#socket.on('successful', () => {
|
|
53
50
|
this.#socket?.on('patch', this.#handlePatch.bind(this));
|
|
54
51
|
this.#socket?.on('query-response', (response) => {
|
|
52
|
+
console.log('[LOGGED] First response came');
|
|
55
53
|
this.emit(response.queryId, response);
|
|
56
54
|
});
|
|
57
55
|
this.#socket?.emit('subscribe', { clientId: this.config.clientId });
|
|
56
|
+
console.log('[LOGGED] connected');
|
|
58
57
|
resolve();
|
|
59
58
|
});
|
|
60
59
|
this.#socket.on('disconnect', () => {
|
|
@@ -79,6 +78,7 @@ class SocketConnection extends eventemitter3_1.default {
|
|
|
79
78
|
const queryId = generateUUID();
|
|
80
79
|
const { promise, resolve } = (0, with_resolver_js_1.withResolver)();
|
|
81
80
|
this.once(queryId, (response) => {
|
|
81
|
+
console.log('[LOGGED] the first response');
|
|
82
82
|
if (response.errors) {
|
|
83
83
|
throw new Error(JSON.stringify(response.errors));
|
|
84
84
|
}
|
|
@@ -97,6 +97,7 @@ class SocketConnection extends eventemitter3_1.default {
|
|
|
97
97
|
...headers,
|
|
98
98
|
schema: 'readable',
|
|
99
99
|
};
|
|
100
|
+
console.log('[LOGGED] the first request');
|
|
100
101
|
this.emit('query', {
|
|
101
102
|
query,
|
|
102
103
|
variables,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-connection.js","sourceRoot":"","sources":["../../src/socket-connection.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAyC;AACzC,sEAAwC;AACxC,uDAA8C;AAC9C,yDAAkD;AAElD,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;AAcF,MAAa,gBAAiB,SAAQ,uBAAY;IAMtC;IALV,OAAO,GAAkB,IAAI,CAAC;IAC9B,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,kBAAkB,GAAyB,IAAI,CAAC;IAEhD,YACU,
|
|
1
|
+
{"version":3,"file":"socket-connection.js","sourceRoot":"","sources":["../../src/socket-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UpdateQueryBuilder = void 0;
|
|
4
|
+
const fields_processor_js_1 = require("./fields-processor.js");
|
|
4
5
|
const where_query_builder_js_1 = require("./where-query-builder.js");
|
|
6
|
+
const fieldsProcessor = new fields_processor_js_1.FieldsProcessor();
|
|
5
7
|
/**
|
|
6
8
|
* A query builder for updating records in the database.
|
|
7
9
|
* @template DB - The database type.
|
|
@@ -28,9 +30,10 @@ class UpdateQueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder
|
|
|
28
30
|
* ```
|
|
29
31
|
*/
|
|
30
32
|
set(values) {
|
|
33
|
+
const newValues = fieldsProcessor.process(values);
|
|
31
34
|
return new UpdateQueryBuilder({
|
|
32
35
|
...this.#node,
|
|
33
|
-
values,
|
|
36
|
+
values: newValues,
|
|
34
37
|
}, this._executor);
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-query-builder.js","sourceRoot":"","sources":["../../src/update-query-builder.ts"],"names":[],"mappings":";;;AAGA,qEAAkE;AAElE;;;;GAIG;AACH,MAAa,kBAGX,SAAQ,+CAAqC;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;
|
|
1
|
+
{"version":3,"file":"update-query-builder.js","sourceRoot":"","sources":["../../src/update-query-builder.ts"],"names":[],"mappings":";;;AAGA,+DAAwD;AACxD,qEAAkE;AAElE,MAAM,eAAe,GAAG,IAAI,qCAAe,EAAE,CAAC;AAE9C;;;;GAIG;AACH,MAAa,kBAGX,SAAQ,+CAAqC;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,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,SAAS;SAClB,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;AAhFD,gDAgFC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ALinkColumnType } 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';
|
|
@@ -47,7 +47,7 @@ export declare class FilterableQueryBuilder<DB extends AnyDB, TableName extends
|
|
|
47
47
|
* .execute();
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
|
-
where<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends
|
|
50
|
+
where<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends ALinkColumnType<any, any, any, any, boolean> ? ((qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends ALinkColumnType<any, any, any, any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends ALinkColumnType<any, any, any, any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
51
51
|
where<C extends (builder: WhereQueryBuilder<DB, TableName>) => WhereQueryBuilder<DB, TableName>>(column: C): this;
|
|
52
52
|
/**
|
|
53
53
|
* Adds an `orWhere` clause to the query.
|
|
@@ -67,7 +67,7 @@ export declare class FilterableQueryBuilder<DB extends AnyDB, TableName extends
|
|
|
67
67
|
* .execute();
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
|
-
orWhere<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends
|
|
70
|
+
orWhere<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends ALinkColumnType<any, any, any, any, boolean> ? (qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends ALinkColumnType<any, any, any, any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends ALinkColumnType<any, any, any, any, boolean> ? DB[TableName][TField]['linkedTo'] : never> | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
71
71
|
orWhere<C extends (builder: WhereQueryBuilder<DB, TableName>) => WhereQueryBuilder<DB, TableName>>(column: C): this;
|
|
72
72
|
}
|
|
73
73
|
export declare class WhereQueryBuilder<DB extends AnyDB, TableName extends keyof DB> extends FilterableQueryBuilder<DB, TableName> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-query-builder.js","sourceRoot":"","sources":["../../src/where-query-builder.ts"],"names":[],"mappings":";;;AAIA,iEAA0D;AAE1D;;;;;GAKG;AACH,MAAa,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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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ALinkColumnType } from '@taylordb/shared';
|
|
2
2
|
export type NonLinkColumnNames<T> = {
|
|
3
|
-
[K in keyof T]: T[K] extends
|
|
3
|
+
[K in keyof T]: T[K] extends ALinkColumnType<any, any, any, any, boolean> ? never : K;
|
|
4
4
|
}[keyof T];
|
|
5
5
|
export type LinkColumnNames<T> = {
|
|
6
|
-
[K in keyof T]: T[K] extends
|
|
6
|
+
[K in keyof T]: T[K] extends ALinkColumnType<any, any, any, any, boolean> ? K : never;
|
|
7
7
|
}[keyof T];
|
|
8
8
|
export type ColumnNames<T> = keyof T;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ALinkColumnType, ColumnType } from '@taylordb/shared';
|
|
2
2
|
import { QueryBuilder } from '../query-builder.js';
|
|
3
3
|
import { AnyDB } from './internal-types.js';
|
|
4
4
|
import { LinkColumnNames, NonLinkColumnNames } from './query-builder.js';
|
|
@@ -18,7 +18,7 @@ export type ResolveSelection<DB extends AnyDB, TName extends keyof DB, TFields e
|
|
|
18
18
|
}[number]>;
|
|
19
19
|
export type ResolveWithPlain<DB extends AnyDB, TName extends keyof DB, TRelations extends (LinkColumnNames<DB[TName]> & string) | readonly (LinkColumnNames<DB[TName]> & string)[], TCurrentSelection> = TCurrentSelection & UnionToIntersection<{
|
|
20
20
|
[K in TRelations extends readonly any[] ? TRelations[number] : TRelations]: {
|
|
21
|
-
[P in K]: TableShape<DB[DB[TName][P] extends
|
|
21
|
+
[P in K]: TableShape<DB[DB[TName][P] extends ALinkColumnType<infer L, any, any, any, boolean> ? L : never]>[];
|
|
22
22
|
};
|
|
23
23
|
}[TRelations extends readonly any[] ? TRelations[number] : TRelations]>;
|
|
24
24
|
export type ResolveWithObject<TRelations extends Record<string, (qb: any) => QueryBuilder<any, any, any, any>>, TCurrentSelection> = TCurrentSelection & {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Attachment, } from '@taylordb/shared';
|
|
1
2
|
import { createQueryBuilder } from '../index.js';
|
|
2
3
|
import { SocketConnection } from '../socket-connection.js';
|
|
3
4
|
jest.mock('socket.io-client', () => {
|
|
@@ -19,6 +20,7 @@ describe('QueryBuilder', () => {
|
|
|
19
20
|
// @ts-ignore
|
|
20
21
|
const qb = createQueryBuilder({
|
|
21
22
|
baseUrl: 'http://localhost',
|
|
23
|
+
baseId: 'test-base-id',
|
|
22
24
|
apiKey: 'test',
|
|
23
25
|
});
|
|
24
26
|
it('should compile a select query and execute', async () => {
|
|
@@ -194,6 +196,7 @@ describe('QueryBuilder', () => {
|
|
|
194
196
|
// @ts-ignore
|
|
195
197
|
const qb = createQueryBuilder({
|
|
196
198
|
baseUrl: 'http://localhost',
|
|
199
|
+
baseId: 'test-base-id',
|
|
197
200
|
apiKey: 'test',
|
|
198
201
|
});
|
|
199
202
|
await qb.transaction(txQb => {
|
|
@@ -223,6 +226,7 @@ describe('QueryBuilder', () => {
|
|
|
223
226
|
// @ts-ignore
|
|
224
227
|
const qb = createQueryBuilder({
|
|
225
228
|
baseUrl: 'http://localhost',
|
|
229
|
+
baseId: 'test-base-id',
|
|
226
230
|
apiKey: 'test',
|
|
227
231
|
});
|
|
228
232
|
await expect(qb.transaction(txQb => {
|
|
@@ -251,6 +255,7 @@ describe('QueryBuilder', () => {
|
|
|
251
255
|
// @ts-ignore
|
|
252
256
|
const qb = createQueryBuilder({
|
|
253
257
|
baseUrl: 'http://localhost',
|
|
258
|
+
baseId: 'test-base-id',
|
|
254
259
|
apiKey: 'test',
|
|
255
260
|
});
|
|
256
261
|
await qb.transaction(async (txQb) => {
|
|
@@ -258,5 +263,180 @@ describe('QueryBuilder', () => {
|
|
|
258
263
|
});
|
|
259
264
|
expect(mockRawRequest).toHaveBeenCalledTimes(2);
|
|
260
265
|
});
|
|
266
|
+
it('should compile an insert query with a number array for a link field', async () => {
|
|
267
|
+
await qb
|
|
268
|
+
.insertInto('customers')
|
|
269
|
+
.values({
|
|
270
|
+
firstName: 'Jane',
|
|
271
|
+
lastName: 'Doe',
|
|
272
|
+
orders: [1, 2, 3],
|
|
273
|
+
})
|
|
274
|
+
.execute();
|
|
275
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
276
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
277
|
+
expect(variables.metadata[0]).toMatchObject({
|
|
278
|
+
type: 'create',
|
|
279
|
+
tableName: 'customers',
|
|
280
|
+
createdRecords: [
|
|
281
|
+
{
|
|
282
|
+
firstName: 'Jane',
|
|
283
|
+
lastName: 'Doe',
|
|
284
|
+
orders: [1, 2, 3],
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
it('should compile an update query with a number array for a link field', async () => {
|
|
290
|
+
await qb
|
|
291
|
+
.update('customers')
|
|
292
|
+
.set({
|
|
293
|
+
lastName: 'Smith',
|
|
294
|
+
orders: [1, 2, 3],
|
|
295
|
+
})
|
|
296
|
+
.where('id', '=', 1)
|
|
297
|
+
.execute();
|
|
298
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
299
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
300
|
+
expect(variables.metadata[0]).toMatchObject({
|
|
301
|
+
type: 'update',
|
|
302
|
+
tableName: 'customers',
|
|
303
|
+
values: {
|
|
304
|
+
lastName: 'Smith',
|
|
305
|
+
orders: [1, 2, 3],
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
it('should compile an insert query with attachments and execute', async () => {
|
|
310
|
+
// Mock uploadAttachments to return a mock Attachment
|
|
311
|
+
const mockAttachment = new Attachment({
|
|
312
|
+
collectionName: 'string',
|
|
313
|
+
fileInformation: {
|
|
314
|
+
path: 'test-path.png',
|
|
315
|
+
mimetype: 'image/png',
|
|
316
|
+
size: 12345,
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
// @ts-ignore
|
|
320
|
+
qb.uploadAttachments = jest.fn().mockResolvedValue([mockAttachment]);
|
|
321
|
+
await qb
|
|
322
|
+
.insertInto('customers')
|
|
323
|
+
.values({
|
|
324
|
+
firstName: 'Jane',
|
|
325
|
+
lastName: 'Doe',
|
|
326
|
+
avatar: await qb.uploadAttachments([
|
|
327
|
+
{ file: new Blob(['']), name: 'test.png' },
|
|
328
|
+
]),
|
|
329
|
+
})
|
|
330
|
+
.execute();
|
|
331
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
332
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
333
|
+
expect(variables.metadata[0]).toMatchObject({
|
|
334
|
+
type: 'create',
|
|
335
|
+
tableName: 'customers',
|
|
336
|
+
createdRecords: [
|
|
337
|
+
{
|
|
338
|
+
firstName: 'Jane',
|
|
339
|
+
lastName: 'Doe',
|
|
340
|
+
avatar: [
|
|
341
|
+
{
|
|
342
|
+
url: 'test-path.png',
|
|
343
|
+
fileType: 'image/png',
|
|
344
|
+
size: 12345,
|
|
345
|
+
},
|
|
346
|
+
],
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
it('should compile an update query with attachments and execute', async () => {
|
|
352
|
+
// Mock uploadAttachments to return a mock Attachment
|
|
353
|
+
const mockAttachment = new Attachment({
|
|
354
|
+
collectionName: 'string',
|
|
355
|
+
fileInformation: {
|
|
356
|
+
path: 'test-path.png',
|
|
357
|
+
mimetype: 'image/png',
|
|
358
|
+
size: 12345,
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
// @ts-ignore
|
|
362
|
+
qb.uploadAttachments = jest.fn().mockResolvedValue([mockAttachment]);
|
|
363
|
+
await qb
|
|
364
|
+
.update('customers')
|
|
365
|
+
.set({
|
|
366
|
+
lastName: 'Smith',
|
|
367
|
+
avatar: await qb.uploadAttachments([
|
|
368
|
+
{ file: new Blob(['']), name: 'test.png' },
|
|
369
|
+
]),
|
|
370
|
+
})
|
|
371
|
+
.where('id', '=', 1)
|
|
372
|
+
.execute();
|
|
373
|
+
expect(mockRawRequest).toHaveBeenCalledTimes(1);
|
|
374
|
+
const variables = mockRawRequest.mock.calls[0][1];
|
|
375
|
+
expect(variables.metadata[0]).toMatchObject({
|
|
376
|
+
type: 'update',
|
|
377
|
+
tableName: 'customers',
|
|
378
|
+
values: {
|
|
379
|
+
lastName: 'Smith',
|
|
380
|
+
avatar: [
|
|
381
|
+
{
|
|
382
|
+
url: 'test-path.png',
|
|
383
|
+
fileType: 'image/png',
|
|
384
|
+
size: 12345,
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
},
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
it('should upload attachments and return Attachment instances', async () => {
|
|
391
|
+
const mockUploadResponse = [
|
|
392
|
+
{
|
|
393
|
+
collectionName: 'string',
|
|
394
|
+
fileInformation: {
|
|
395
|
+
fieldname: 'files',
|
|
396
|
+
originalname: 'Designer.png',
|
|
397
|
+
encoding: '7bit',
|
|
398
|
+
mimetype: 'image/png',
|
|
399
|
+
destination: '/var/bamboo/storage/bamboo-media-uploader-main/files/d2330358-ae38-40ef-b127-bd497456d488',
|
|
400
|
+
filename: '31529ce5-5ef2-428d-bb63-aaf8d3e97635.png',
|
|
401
|
+
path: 'files/d2330358-ae38-40ef-b127-bd497456d488/31529ce5-5ef2-428d-bb63-aaf8d3e97635.png',
|
|
402
|
+
size: 1483249,
|
|
403
|
+
format: 'png',
|
|
404
|
+
width: 1080,
|
|
405
|
+
height: 1080,
|
|
406
|
+
},
|
|
407
|
+
metadata: { thumbnails: [], clips: [] },
|
|
408
|
+
baseId: 'fdfdfd',
|
|
409
|
+
storageAdaptor: 'LOCAL',
|
|
410
|
+
_id: '691ec20b164dcec7a1a981f6',
|
|
411
|
+
__v: 0,
|
|
412
|
+
},
|
|
413
|
+
];
|
|
414
|
+
global.fetch = jest.fn().mockResolvedValue({
|
|
415
|
+
ok: true,
|
|
416
|
+
json: jest.fn().mockResolvedValue(mockUploadResponse),
|
|
417
|
+
});
|
|
418
|
+
// @ts-ignore
|
|
419
|
+
const qb = createQueryBuilder({
|
|
420
|
+
baseUrl: 'http://localhost',
|
|
421
|
+
baseId: 'test-base-id',
|
|
422
|
+
apiKey: 'test-api-key',
|
|
423
|
+
});
|
|
424
|
+
const files = [{ file: new Blob(['']), name: 'test.png' }];
|
|
425
|
+
const attachments = await qb.uploadAttachments(files);
|
|
426
|
+
expect(fetch).toHaveBeenCalledWith('https://media.taylordb.ai/media-collection', expect.objectContaining({
|
|
427
|
+
method: 'POST',
|
|
428
|
+
headers: {
|
|
429
|
+
Authorization: 'Bearer test-api-key',
|
|
430
|
+
},
|
|
431
|
+
}));
|
|
432
|
+
expect(attachments).toHaveLength(1);
|
|
433
|
+
expect(attachments[0]).toBeInstanceOf(Attachment);
|
|
434
|
+
expect(attachments[0].fileInformation.originalname).toBe('Designer.png');
|
|
435
|
+
expect(attachments[0].toColumnValue()).toEqual({
|
|
436
|
+
url: 'files/d2330358-ae38-40ef-b127-bd497456d488/31529ce5-5ef2-428d-bb63-aaf8d3e97635.png',
|
|
437
|
+
fileType: 'image/png',
|
|
438
|
+
size: 1483249,
|
|
439
|
+
});
|
|
440
|
+
});
|
|
261
441
|
});
|
|
262
442
|
//# sourceMappingURL=query-builder.spec.js.map
|