@taylordb/query-builder 0.1.4 → 0.2.0

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.
Files changed (133) hide show
  1. package/dist/{src → cjs}/__tests__/query-builder.spec.js +1 -1
  2. package/dist/{src → cjs}/__tests__/query-builder.spec.js.map +1 -1
  3. package/dist/{src → cjs}/aggregation-query-builder.d.ts +1 -0
  4. package/dist/{src → cjs}/aggregation-query-builder.js +4 -1
  5. package/dist/{src → cjs}/aggregation-query-builder.js.map +1 -1
  6. package/dist/cjs/batch-query-builder.d.ts +27 -0
  7. package/dist/{src → cjs}/batch-query-builder.js +10 -0
  8. package/dist/cjs/batch-query-builder.js.map +1 -0
  9. package/dist/cjs/executor.d.ts +15 -0
  10. package/dist/cjs/executor.js +67 -0
  11. package/dist/cjs/executor.js.map +1 -0
  12. package/dist/{src → cjs}/insert-query-builder.d.ts +8 -6
  13. package/dist/{src → cjs}/insert-query-builder.js +2 -1
  14. package/dist/cjs/insert-query-builder.js.map +1 -0
  15. package/dist/{src → cjs}/query-builder.d.ts +4 -2
  16. package/dist/{src → cjs}/query-builder.js +7 -0
  17. package/dist/cjs/query-builder.js.map +1 -0
  18. package/dist/cjs/subscription-manager.d.ts +19 -0
  19. package/dist/cjs/subscription-manager.js +105 -0
  20. package/dist/cjs/subscription-manager.js.map +1 -0
  21. package/dist/esm/@types/aggregate.d.ts +28 -0
  22. package/dist/esm/@types/aggregate.js +3 -0
  23. package/dist/esm/@types/aggregate.js.map +1 -0
  24. package/dist/esm/@types/delete.d.ts +2 -0
  25. package/dist/esm/@types/delete.js +3 -0
  26. package/dist/esm/@types/delete.js.map +1 -0
  27. package/dist/esm/@types/insert.d.ts +8 -0
  28. package/dist/esm/@types/insert.js +3 -0
  29. package/dist/esm/@types/insert.js.map +1 -0
  30. package/dist/esm/@types/internal-types.d.ts +24 -0
  31. package/dist/esm/@types/internal-types.js +3 -0
  32. package/dist/esm/@types/internal-types.js.map +1 -0
  33. package/dist/esm/@types/query-builder.d.ts +7 -0
  34. package/dist/esm/@types/query-builder.js +3 -0
  35. package/dist/esm/@types/query-builder.js.map +1 -0
  36. package/dist/esm/@types/type-helpers.d.ts +27 -0
  37. package/dist/esm/@types/type-helpers.js +3 -0
  38. package/dist/esm/@types/type-helpers.js.map +1 -0
  39. package/dist/esm/@types/update.d.ts +5 -0
  40. package/dist/esm/@types/update.js +3 -0
  41. package/dist/esm/@types/update.js.map +1 -0
  42. package/dist/esm/__tests__/query-builder.spec.js +129 -0
  43. package/dist/esm/__tests__/query-builder.spec.js.map +1 -0
  44. package/dist/{sample/sample-1 → esm/__tests__}/taylorclient.types.d.ts +0 -21
  45. package/dist/esm/__tests__/taylorclient.types.js.map +1 -0
  46. package/dist/esm/aggregation-query-builder.d.ts +28 -0
  47. package/dist/esm/aggregation-query-builder.js +83 -0
  48. package/dist/esm/aggregation-query-builder.js.map +1 -0
  49. package/dist/esm/batch-query-builder.d.ts +27 -0
  50. package/dist/esm/batch-query-builder.js +38 -0
  51. package/dist/esm/batch-query-builder.js.map +1 -0
  52. package/dist/esm/delete-query-builder.d.ts +16 -0
  53. package/dist/esm/delete-query-builder.js +36 -0
  54. package/dist/esm/delete-query-builder.js.map +1 -0
  55. package/dist/esm/executor.d.ts +15 -0
  56. package/dist/esm/executor.js +67 -0
  57. package/dist/esm/executor.js.map +1 -0
  58. package/dist/esm/index.d.ts +1 -0
  59. package/dist/esm/index.js +6 -0
  60. package/dist/esm/index.js.map +1 -0
  61. package/dist/esm/insert-query-builder.d.ts +19 -0
  62. package/dist/esm/insert-query-builder.js +69 -0
  63. package/dist/esm/insert-query-builder.js.map +1 -0
  64. package/dist/esm/query-builder.d.ts +54 -0
  65. package/dist/esm/query-builder.js +209 -0
  66. package/dist/esm/query-builder.js.map +1 -0
  67. package/dist/esm/selection-builder.d.ts +10 -0
  68. package/dist/esm/selection-builder.js +20 -0
  69. package/dist/esm/selection-builder.js.map +1 -0
  70. package/dist/esm/subscription-manager.d.ts +19 -0
  71. package/dist/esm/subscription-manager.js +105 -0
  72. package/dist/esm/subscription-manager.js.map +1 -0
  73. package/dist/esm/update-query-builder.d.ts +17 -0
  74. package/dist/esm/update-query-builder.js +43 -0
  75. package/dist/esm/update-query-builder.js.map +1 -0
  76. package/dist/esm/where-query-builder.d.ts +14 -0
  77. package/dist/esm/where-query-builder.js +68 -0
  78. package/dist/esm/where-query-builder.js.map +1 -0
  79. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  80. package/package.json +12 -9
  81. package/dist/sample/sample-1/index.js +0 -71
  82. package/dist/sample/sample-1/index.js.map +0 -1
  83. package/dist/sample/sample-1/taylorclient.types.js.map +0 -1
  84. package/dist/src/batch-query-builder.d.ts +0 -16
  85. package/dist/src/batch-query-builder.js.map +0 -1
  86. package/dist/src/executor.d.ts +0 -12
  87. package/dist/src/executor.js +0 -37
  88. package/dist/src/executor.js.map +0 -1
  89. package/dist/src/insert-query-builder.js.map +0 -1
  90. package/dist/src/query-builder.js.map +0 -1
  91. package/dist/tsconfig.tsbuildinfo +0 -1
  92. /package/dist/{src → cjs}/@types/aggregate.d.ts +0 -0
  93. /package/dist/{src → cjs}/@types/aggregate.js +0 -0
  94. /package/dist/{src → cjs}/@types/aggregate.js.map +0 -0
  95. /package/dist/{src → cjs}/@types/delete.d.ts +0 -0
  96. /package/dist/{src → cjs}/@types/delete.js +0 -0
  97. /package/dist/{src → cjs}/@types/delete.js.map +0 -0
  98. /package/dist/{src → cjs}/@types/insert.d.ts +0 -0
  99. /package/dist/{src → cjs}/@types/insert.js +0 -0
  100. /package/dist/{src → cjs}/@types/insert.js.map +0 -0
  101. /package/dist/{src → cjs}/@types/internal-types.d.ts +0 -0
  102. /package/dist/{src → cjs}/@types/internal-types.js +0 -0
  103. /package/dist/{src → cjs}/@types/internal-types.js.map +0 -0
  104. /package/dist/{src → cjs}/@types/query-builder.d.ts +0 -0
  105. /package/dist/{src → cjs}/@types/query-builder.js +0 -0
  106. /package/dist/{src → cjs}/@types/query-builder.js.map +0 -0
  107. /package/dist/{src → cjs}/@types/type-helpers.d.ts +0 -0
  108. /package/dist/{src → cjs}/@types/type-helpers.js +0 -0
  109. /package/dist/{src → cjs}/@types/type-helpers.js.map +0 -0
  110. /package/dist/{src → cjs}/@types/update.d.ts +0 -0
  111. /package/dist/{src → cjs}/@types/update.js +0 -0
  112. /package/dist/{src → cjs}/@types/update.js.map +0 -0
  113. /package/dist/{src → cjs}/__tests__/query-builder.spec.d.ts +0 -0
  114. /package/dist/{src → cjs}/__tests__/taylorclient.types.d.ts +0 -0
  115. /package/dist/{sample/sample-1 → cjs/__tests__}/taylorclient.types.js +0 -0
  116. /package/dist/{src → cjs}/__tests__/taylorclient.types.js.map +0 -0
  117. /package/dist/{src → cjs}/delete-query-builder.d.ts +0 -0
  118. /package/dist/{src → cjs}/delete-query-builder.js +0 -0
  119. /package/dist/{src → cjs}/delete-query-builder.js.map +0 -0
  120. /package/dist/{src → cjs}/index.d.ts +0 -0
  121. /package/dist/{src → cjs}/index.js +0 -0
  122. /package/dist/{src → cjs}/index.js.map +0 -0
  123. /package/dist/{src → cjs}/selection-builder.d.ts +0 -0
  124. /package/dist/{src → cjs}/selection-builder.js +0 -0
  125. /package/dist/{src → cjs}/selection-builder.js.map +0 -0
  126. /package/dist/{src → cjs}/update-query-builder.d.ts +0 -0
  127. /package/dist/{src → cjs}/update-query-builder.js +0 -0
  128. /package/dist/{src → cjs}/update-query-builder.js.map +0 -0
  129. /package/dist/{src → cjs}/where-query-builder.d.ts +0 -0
  130. /package/dist/{src → cjs}/where-query-builder.js +0 -0
  131. /package/dist/{src → cjs}/where-query-builder.js.map +0 -0
  132. /package/dist/{sample/sample-1/index.d.ts → esm/__tests__/query-builder.spec.d.ts} +0 -0
  133. /package/dist/{src → esm}/__tests__/taylorclient.types.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-helpers.js","sourceRoot":"","sources":["../../../src/@types/type-helpers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ColumnType, MetadataWithTableName, UpdateMutationMetaData } from '@taylordb/shared';
2
+ export type UpdateNode = MetadataWithTableName<UpdateMutationMetaData>;
3
+ export type Updatable<T> = {
4
+ [K in keyof T]?: T[K] extends ColumnType<any, any, infer I, any> ? I : never;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/@types/update.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_js_1 = require("../index.js");
4
+ describe('QueryBuilder', () => {
5
+ // @ts-ignore
6
+ const qb = (0, index_js_1.createQueryBuilder)({
7
+ baseUrl: 'http://localhost',
8
+ apiKey: 'test',
9
+ });
10
+ it('should compile a select query', () => {
11
+ const { variables } = qb
12
+ .selectFrom('customers')
13
+ .select(['firstName', 'lastName'])
14
+ .where('firstName', '=', 'John')
15
+ .orderBy('lastName', 'asc')
16
+ .paginate(1, 10)
17
+ .compile();
18
+ expect(variables.metadata[0]).toMatchObject({
19
+ type: 'select',
20
+ tableName: 'customers',
21
+ fields: ['firstName', 'lastName'],
22
+ filtersSet: {
23
+ conjunction: 'and',
24
+ filtersSet: [
25
+ {
26
+ field: 'firstName',
27
+ operator: '=',
28
+ value: 'John',
29
+ },
30
+ ],
31
+ },
32
+ sorting: [{ field: 'lastName', direction: 'asc' }],
33
+ pagination: { offset: 0, limit: 10 },
34
+ });
35
+ });
36
+ it('should compile an insert query', () => {
37
+ const { variables } = qb
38
+ .insertInto('customers')
39
+ .values({
40
+ firstName: 'Jane',
41
+ lastName: 'Doe',
42
+ })
43
+ .compile();
44
+ expect(variables.metadata[0]).toMatchObject({
45
+ type: 'create',
46
+ tableName: 'customers',
47
+ createdRecords: [{ firstName: 'Jane', lastName: 'Doe' }],
48
+ });
49
+ });
50
+ it('should compile an update query', () => {
51
+ const { variables } = qb
52
+ .update('customers')
53
+ .set({ lastName: 'Smith' })
54
+ .where('id', '=', 1)
55
+ .compile();
56
+ expect(variables.metadata[0]).toMatchObject({
57
+ type: 'update',
58
+ tableName: 'customers',
59
+ values: { lastName: 'Smith' },
60
+ filtersSet: {
61
+ conjunction: 'and',
62
+ filtersSet: [
63
+ {
64
+ field: 'id',
65
+ operator: '=',
66
+ value: 1,
67
+ },
68
+ ],
69
+ },
70
+ });
71
+ });
72
+ it('should compile a delete query', () => {
73
+ const { variables } = qb
74
+ .deleteFrom('customers')
75
+ .where('id', '=', 1)
76
+ .compile();
77
+ expect(variables.metadata[0]).toMatchObject({
78
+ type: 'delete',
79
+ tableName: 'customers',
80
+ filtersSet: {
81
+ conjunction: 'and',
82
+ filtersSet: [
83
+ {
84
+ field: 'id',
85
+ operator: '=',
86
+ value: 1,
87
+ },
88
+ ],
89
+ },
90
+ });
91
+ });
92
+ it('should compile a batch query', () => {
93
+ const { variables } = qb
94
+ .batch([
95
+ qb.selectFrom('customers').select(['firstName', 'lastName']),
96
+ qb
97
+ .insertInto('customers')
98
+ .values({ firstName: 'John', lastName: 'Doe' }),
99
+ ])
100
+ .compile();
101
+ expect(variables.metadata).toHaveLength(2);
102
+ expect(variables.metadata[0]).toMatchObject({
103
+ type: 'select',
104
+ tableName: 'customers',
105
+ });
106
+ expect(variables.metadata[1]).toMatchObject({
107
+ type: 'create',
108
+ tableName: 'customers',
109
+ });
110
+ });
111
+ it('should compile an aggregate query', () => {
112
+ const { variables } = qb
113
+ .aggregateFrom('customers')
114
+ .groupBy('firstName', 'asc')
115
+ .withAggregates({
116
+ id: ['sum'],
117
+ })
118
+ .compile();
119
+ expect(variables.metadata[0]).toMatchObject({
120
+ type: 'aggregation',
121
+ tableName: 'customers',
122
+ groupings: [{ field: 'firstName', direction: 'asc' }],
123
+ aggregations: {
124
+ id: ['sum'],
125
+ },
126
+ });
127
+ });
128
+ });
129
+ //# sourceMappingURL=query-builder.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"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"}
@@ -134,8 +134,6 @@ export interface Tables {
134
134
  attachmentTable: AttachmentTable;
135
135
  collaboratorsTable: CollaboratorsTable;
136
136
  customers: CustomersTable;
137
- orders: OrdersTable;
138
- products: ProductsTable;
139
137
  }
140
138
  export interface TaylorDatabase {
141
139
  filters: Filters;
@@ -147,25 +145,6 @@ interface CustomersTable {
147
145
  createdAt: DateColumnType;
148
146
  updatedAt: DateColumnType;
149
147
  firstName: TextColumnType;
150
- phoneNumber: TextColumnType;
151
148
  lastName: TextColumnType;
152
- avatar: LinkColumnType<'attachmentTable'>;
153
- orders: LinkColumnType<'orders'>;
154
- }
155
- interface OrdersTable {
156
- id: NumberColumnType;
157
- createdAt: DateColumnType;
158
- updatedAt: DateColumnType;
159
- address: TextColumnType;
160
- customer: LinkColumnType<'customers'>;
161
- products: LinkColumnType<'products'>;
162
- }
163
- interface ProductsTable {
164
- id: NumberColumnType;
165
- createdAt: DateColumnType;
166
- updatedAt: DateColumnType;
167
- name: TextColumnType;
168
- sku: TextColumnType;
169
- orders1: LinkColumnType<'orders'>;
170
149
  }
171
150
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taylorclient.types.js","sourceRoot":"","sources":["../../../src/__tests__/taylorclient.types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,28 @@
1
+ import type { AggregateNode, AggregateRecord } from './@types/aggregate.js';
2
+ import type { AnyDB } from './@types/internal-types.js';
3
+ import { Executor } from './executor.js';
4
+ import { FilterableQueryBuilder } from './where-query-builder.js';
5
+ export declare class AggregationQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables'], TGroupBy extends readonly (keyof DB['tables'][TableName] & string)[] = [], TAggregations extends {
6
+ [K in keyof DB['tables'][TableName] & string]?: readonly (keyof DB['aggregates'][DB['tables'][TableName][K]['type']])[];
7
+ } = object> extends FilterableQueryBuilder<DB, TableName> {
8
+ #private;
9
+ constructor(node: AggregateNode, executor: Executor);
10
+ groupBy<const TField extends keyof DB['tables'][TableName] & string>(field: TField, direction?: 'asc' | 'desc'): AggregationQueryBuilder<DB, TableName, [
11
+ ...TGroupBy,
12
+ TField
13
+ ], TAggregations>;
14
+ withAggregates<const T extends {
15
+ [K in keyof DB['tables'][TableName] & string]?: readonly (keyof DB['aggregates'][DB['tables'][TableName][K]['type']])[];
16
+ }>(aggregates: T): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations & T>;
17
+ limit(count: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
18
+ offset(count: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
19
+ paginate(page: number, limit: number): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
20
+ orderBy(field: keyof DB['tables'][TableName], direction?: 'asc' | 'desc'): AggregationQueryBuilder<DB, TableName, TGroupBy, TAggregations>;
21
+ execute(): Promise<AggregateRecord<DB, TableName, TGroupBy, TAggregations>[]>;
22
+ subscribe(callback: (result: AggregateRecord<DB, TableName, TGroupBy, TAggregations>[]) => void): Promise<void>;
23
+ compile(): {
24
+ query: string;
25
+ variables: Record<string, any>;
26
+ };
27
+ _prepareMetadata(): any;
28
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregationQueryBuilder = void 0;
4
+ const where_query_builder_js_1 = require("./where-query-builder.js");
5
+ class AggregationQueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
6
+ #node;
7
+ constructor(node, executor) {
8
+ super(node, executor);
9
+ this.#node = node;
10
+ }
11
+ groupBy(field, direction = 'asc') {
12
+ const newGrouping = {
13
+ field,
14
+ direction,
15
+ };
16
+ return new AggregationQueryBuilder({
17
+ ...this.#node,
18
+ groupings: [...(this.#node.groupings || []), newGrouping],
19
+ }, this._executor);
20
+ }
21
+ withAggregates(aggregates) {
22
+ const newAggregates = { ...this.#node.aggregations };
23
+ for (const key in aggregates) {
24
+ newAggregates[key] = aggregates[key].map(aggregate => aggregate);
25
+ }
26
+ return new AggregationQueryBuilder({
27
+ ...this.#node,
28
+ aggregations: newAggregates,
29
+ }, this._executor);
30
+ }
31
+ limit(count) {
32
+ return new AggregationQueryBuilder({
33
+ ...this.#node,
34
+ pagination: { ...this.#node.pagination, limit: count },
35
+ }, this._executor);
36
+ }
37
+ offset(count) {
38
+ return new AggregationQueryBuilder({
39
+ ...this.#node,
40
+ pagination: { ...this.#node.pagination, offset: count },
41
+ }, this._executor);
42
+ }
43
+ paginate(page, limit) {
44
+ return this.offset((page - 1) * limit).limit(limit);
45
+ }
46
+ orderBy(field, direction = 'asc') {
47
+ const newSorting = {
48
+ field: field,
49
+ direction,
50
+ };
51
+ return new AggregationQueryBuilder({
52
+ ...this.#node,
53
+ sorting: [...(this.#node.sorting || []), newSorting],
54
+ }, this._executor);
55
+ }
56
+ async execute() {
57
+ const response = await this._executor.execute(this);
58
+ return response;
59
+ }
60
+ subscribe(callback) {
61
+ return this._executor.subscribe([this], callback);
62
+ }
63
+ compile() {
64
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
65
+ const metadata = [this._prepareMetadata()];
66
+ return { query, variables: { metadata } };
67
+ }
68
+ _prepareMetadata() {
69
+ return {
70
+ type: 'aggregation',
71
+ tableName: this.#node.tableName,
72
+ groupings: this.#node.groupings,
73
+ aggregations: this.#node.aggregations,
74
+ ...(this.#node.filtersSet.filtersSet.length > 0
75
+ ? { filtersSet: this.#node.filtersSet }
76
+ : {}),
77
+ ...(this.#node.pagination ? { pagination: this.#node.pagination } : {}),
78
+ ...(this.#node.sorting ? { sorting: this.#node.sorting } : {}),
79
+ };
80
+ }
81
+ }
82
+ exports.AggregationQueryBuilder = AggregationQueryBuilder;
83
+ //# sourceMappingURL=aggregation-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation-query-builder.js","sourceRoot":"","sources":["../../src/aggregation-query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { AggregationQueryBuilder } from './aggregation-query-builder.js';
2
+ import { DeleteQueryBuilder } from './delete-query-builder.js';
3
+ import { Executor } from './executor.js';
4
+ import { InsertQueryBuilder } from './insert-query-builder.js';
5
+ import { QueryBuilder } from './query-builder.js';
6
+ import { UpdateQueryBuilder } from './update-query-builder.js';
7
+ export type AnySubscribableQueryBuilder = QueryBuilder<any, any, any, any> | AggregationQueryBuilder<any, any, any, any>;
8
+ export type AnyQueryBuilder = AnySubscribableQueryBuilder | InsertQueryBuilder<any, any, any> | UpdateQueryBuilder<any, any> | DeleteQueryBuilder<any, any>;
9
+ type InferExecuteResult<TBuilder> = TBuilder extends {
10
+ execute: () => Promise<any>;
11
+ } ? Awaited<ReturnType<TBuilder['execute']>> : never;
12
+ export type AreAllBuildersSubscribable<TBuilders extends readonly AnyQueryBuilder[]> = TBuilders[number] extends AnySubscribableQueryBuilder ? true : false;
13
+ export declare class BatchQueryBuilder<const TBuilders extends readonly AnyQueryBuilder[]> {
14
+ #private;
15
+ constructor(builders: TBuilders, executor: Executor);
16
+ execute(): Promise<{
17
+ -readonly [K in keyof TBuilders]: InferExecuteResult<TBuilders[K]>;
18
+ }>;
19
+ subscribe(callback: (...results: {
20
+ -readonly [K in keyof TBuilders]: InferExecuteResult<TBuilders[K]>;
21
+ }) => void): Promise<void>;
22
+ compile(): {
23
+ query: string;
24
+ variables: Record<string, any>;
25
+ };
26
+ }
27
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchQueryBuilder = void 0;
4
+ const aggregation_query_builder_js_1 = require("./aggregation-query-builder.js");
5
+ const query_builder_js_1 = require("./query-builder.js");
6
+ class BatchQueryBuilder {
7
+ #builders;
8
+ #executor;
9
+ constructor(builders, executor) {
10
+ this.#builders = builders;
11
+ this.#executor = executor;
12
+ }
13
+ async execute() {
14
+ return this.#executor.execute(this);
15
+ }
16
+ subscribe(callback) {
17
+ const builders = this.#builders.filter(builder => builder instanceof aggregation_query_builder_js_1.AggregationQueryBuilder ||
18
+ builder instanceof query_builder_js_1.QueryBuilder);
19
+ if (builders.length !== this.#builders.length) {
20
+ throw new Error('Batch contains non-subscribable queries (e.g., insert, update, delete)');
21
+ }
22
+ return this.#executor.subscribe(builders, callback);
23
+ }
24
+ compile() {
25
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
26
+ const metadata = this.#builders.map(builder => {
27
+ return builder._prepareMetadata();
28
+ });
29
+ return {
30
+ query,
31
+ variables: {
32
+ metadata,
33
+ },
34
+ };
35
+ }
36
+ }
37
+ exports.BatchQueryBuilder = BatchQueryBuilder;
38
+ //# sourceMappingURL=batch-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-query-builder.js","sourceRoot":"","sources":["../../src/batch-query-builder.ts"],"names":[],"mappings":";;;AAAA,iFAAyE;AAIzE,yDAAkD;AAuBlD,MAAa,iBAAiB;IAG5B,SAAS,CAAY;IACrB,SAAS,CAAW;IAEpB,YAAY,QAAmB,EAAE,QAAkB;QACjD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QAGX,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CACP,QAIS;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,OAAO,CAAC,EAAE,CACR,OAAO,YAAY,sDAAuB;YAC1C,OAAO,YAAY,+BAAY,CAClC,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAe,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,6DAA6D,CAAC;QAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC5C,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC;IACJ,CAAC;CACF;AArDD,8CAqDC"}
@@ -0,0 +1,16 @@
1
+ import type { DeleteNode } from './@types/delete.js';
2
+ import type { AnyDB } from './@types/internal-types.js';
3
+ import { Executor } from './executor.js';
4
+ import { FilterableQueryBuilder } from './where-query-builder.js';
5
+ export declare class DeleteQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables']> extends FilterableQueryBuilder<DB, TableName> {
6
+ #private;
7
+ constructor(node: DeleteNode, executor: Executor);
8
+ execute(): Promise<{
9
+ affectedRecords: number;
10
+ }>;
11
+ compile(): {
12
+ query: string;
13
+ variables: Record<string, any>;
14
+ };
15
+ _prepareMetadata(): any;
16
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteQueryBuilder = void 0;
4
+ const where_query_builder_js_1 = require("./where-query-builder.js");
5
+ class DeleteQueryBuilder extends where_query_builder_js_1.FilterableQueryBuilder {
6
+ #node;
7
+ constructor(node, executor) {
8
+ super(node, executor);
9
+ this.#node = node;
10
+ }
11
+ async execute() {
12
+ const response = await this._executor.execute(this);
13
+ return response[0];
14
+ }
15
+ compile() {
16
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
17
+ const metadata = [this._prepareMetadata()];
18
+ return {
19
+ query,
20
+ variables: {
21
+ metadata,
22
+ },
23
+ };
24
+ }
25
+ _prepareMetadata() {
26
+ return {
27
+ type: 'delete',
28
+ tableName: this.#node.tableName,
29
+ ...(this.#node.filtersSet.filtersSet.length > 0
30
+ ? { filtersSet: this.#node.filtersSet }
31
+ : {}),
32
+ };
33
+ }
34
+ }
35
+ exports.DeleteQueryBuilder = DeleteQueryBuilder;
36
+ //# sourceMappingURL=delete-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-query-builder.js","sourceRoot":"","sources":["../../src/delete-query-builder.ts"],"names":[],"mappings":";;;AAGA,qEAAkE;AAElE,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,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,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;AAxCD,gDAwCC"}
@@ -0,0 +1,15 @@
1
+ import { AnySubscribableQueryBuilder } from './batch-query-builder.js';
2
+ interface Compilable {
3
+ compile(): {
4
+ query: string;
5
+ variables: Record<string, any>;
6
+ };
7
+ }
8
+ export declare class Executor {
9
+ #private;
10
+ constructor(baseUrl: string, apiKey: string);
11
+ execute<T>(builder: Compilable): Promise<T>;
12
+ rawRequest<T>(query: string, variables: Record<string, any>, headers?: Record<string, string>): Promise<T>;
13
+ subscribe<TResult>(builders: AnySubscribableQueryBuilder[], callback: (result: TResult) => void): Promise<void>;
14
+ }
15
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Executor = void 0;
4
+ const subscription_manager_js_1 = require("./subscription-manager.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
+ class Executor {
17
+ #baseUrl;
18
+ #apiKey;
19
+ #subscriptionManager;
20
+ constructor(baseUrl, apiKey) {
21
+ this.#baseUrl = baseUrl;
22
+ this.#apiKey = apiKey;
23
+ this.#subscriptionManager = new subscription_manager_js_1.SubscriptionManager(this, {
24
+ baseUrl,
25
+ apiKey,
26
+ clientId: generateUUID(),
27
+ });
28
+ }
29
+ async execute(builder) {
30
+ const { query, variables } = builder.compile();
31
+ return this.rawRequest(query, variables);
32
+ }
33
+ async rawRequest(query, variables, headers) {
34
+ const response = await fetch(this.#baseUrl, {
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: ${JSON.stringify(jsonResponse.errors)}`);
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');
60
+ }
61
+ async subscribe(builders, callback) {
62
+ const metadatas = builders.map(b => b._prepareMetadata());
63
+ return this.#subscriptionManager.subscribe(metadatas, callback);
64
+ }
65
+ }
66
+ exports.Executor = Executor;
67
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { createQueryBuilder } from './query-builder.js';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createQueryBuilder = void 0;
4
+ var query_builder_js_1 = require("./query-builder.js");
5
+ Object.defineProperty(exports, "createQueryBuilder", { enumerable: true, get: function () { return query_builder_js_1.createQueryBuilder; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AAA/C,sHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,19 @@
1
+ import type { Insertable, InsertNode } from './@types/insert.js';
2
+ import type { AnyDB } from './@types/internal-types.js';
3
+ import { NonLinkColumnNames } from './@types/query-builder.js';
4
+ import { ResolveSelection } from './@types/type-helpers.js';
5
+ import { Executor } from './executor.js';
6
+ export declare class InsertQueryBuilder<DB extends AnyDB, TableName extends keyof DB['tables'], Selection = {
7
+ id: number;
8
+ }> {
9
+ #private;
10
+ constructor(node: InsertNode, executor: Executor);
11
+ values(values: Insertable<DB['tables'][TableName]> | Insertable<DB['tables'][TableName]>[]): InsertQueryBuilder<DB, TableName, Selection>;
12
+ returning<const TFields extends readonly NonLinkColumnNames<DB['tables'][TableName]>[]>(fields: TFields): InsertQueryBuilder<DB, TableName, ResolveSelection<DB, TableName, TFields, object>>;
13
+ execute(): Promise<Selection[]>;
14
+ compile(): {
15
+ query: string;
16
+ variables: Record<string, any>;
17
+ };
18
+ _prepareMetadata(): any;
19
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InsertQueryBuilder = void 0;
4
+ const query_builder_js_1 = require("./query-builder.js");
5
+ const selection_builder_js_1 = require("./selection-builder.js");
6
+ class InsertQueryBuilder {
7
+ #node;
8
+ #executor;
9
+ constructor(node, executor) {
10
+ this.#node = node;
11
+ this.#executor = executor;
12
+ }
13
+ values(values) {
14
+ return new InsertQueryBuilder({
15
+ ...this.#node,
16
+ createdRecords: Array.isArray(values) ? values : [values],
17
+ }, this.#executor);
18
+ }
19
+ returning(fields) {
20
+ const newSelects = fields.map(field => {
21
+ if (typeof field === 'function') {
22
+ const builder = new selection_builder_js_1.SelectionBuilder(this.#executor);
23
+ // @ts-ignore
24
+ const subQuery = field(builder);
25
+ return subQuery._node;
26
+ }
27
+ return field;
28
+ });
29
+ return new InsertQueryBuilder({
30
+ ...this.#node,
31
+ returning: [...this.#node.returning, ...newSelects],
32
+ }, this.#executor);
33
+ }
34
+ async execute() {
35
+ return (await this.#executor.execute(this))[0];
36
+ }
37
+ compile() {
38
+ const query = 'mutation ($metadata: JSON) { execute(metadata: $metadata) }';
39
+ const metadata = [this._prepareMetadata()];
40
+ return {
41
+ query,
42
+ variables: {
43
+ metadata,
44
+ },
45
+ };
46
+ }
47
+ _prepareMetadata() {
48
+ const buildSelects = (selects) => {
49
+ return selects.map(field => {
50
+ if (typeof field === 'string') {
51
+ return field;
52
+ }
53
+ const subQueryBuilder = new query_builder_js_1.QueryBuilder(field, this.#executor);
54
+ return subQueryBuilder._prepareMetadata();
55
+ });
56
+ };
57
+ const returningSelection = this.#node.returning.length
58
+ ? buildSelects(this.#node.returning)
59
+ : ['id'];
60
+ return {
61
+ type: 'create',
62
+ tableName: this.#node.tableName,
63
+ createdRecords: this.#node.createdRecords,
64
+ returning: returningSelection,
65
+ };
66
+ }
67
+ }
68
+ exports.InsertQueryBuilder = InsertQueryBuilder;
69
+ //# sourceMappingURL=insert-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-query-builder.js","sourceRoot":"","sources":["../../src/insert-query-builder.ts"],"names":[],"mappings":";;;AAKA,yDAAkD;AAClD,iEAA0D;AAE1D,MAAa,kBAAkB;IAK7B,KAAK,CAAa;IAClB,SAAS,CAAW;IAEpB,YAAY,IAAgB,EAAE,QAAkB;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,MAEyC;QAEzC,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC1D,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,SAAS,CAKP,MAAe;QAMf,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,uCAAgB,CAAgB,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpE,aAAa;gBACb,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO,KAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,kBAAkB,CAC3B;YACE,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC;SACpD,EACD,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,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,MAAM,YAAY,GAAG,CAAC,OAA+B,EAAS,EAAE;YAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,+BAAY,CACtC,KAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC;gBACF,OAAO,eAAe,CAAC,gBAAgB,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;YACpD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEX,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YACzC,SAAS,EAAE,kBAAkB;SAC9B,CAAC;IACJ,CAAC;CACF;AAnGD,gDAmGC"}