@starbemtech/star-db-query-builder 1.3.1 → 1.4.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.
- package/.claude/skills/star-db-query-builder/SKILL.md +104 -0
- package/CHANGELOG.md +82 -45
- package/LICENSE +21 -0
- package/README.md +194 -94
- package/bin/install-skill.js +53 -0
- package/dist/src/core/repository.d.ts +92 -9
- package/dist/src/core/repository.js +275 -27
- package/dist/src/core/repository.js.map +1 -1
- package/dist/src/core/types.d.ts +16 -1
- package/dist/src/core/utils.d.ts +102 -0
- package/dist/src/core/utils.js +287 -70
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/db/initDb.d.ts +60 -50
- package/dist/src/db/initDb.js +96 -64
- package/dist/src/db/initDb.js.map +1 -1
- package/dist/src/db/mysqlClient.d.ts +3 -8
- package/dist/src/db/mysqlClient.js +9 -11
- package/dist/src/db/mysqlClient.js.map +1 -1
- package/dist/src/db/pgClient.js +0 -2
- package/dist/src/db/pgClient.js.map +1 -1
- package/dist/src/monitor/monitor.js +7 -0
- package/dist/src/monitor/monitor.js.map +1 -1
- package/package.json +27 -19
- package/.github/workflows/publish.yml +0 -118
- package/.prettierignore +0 -3
- package/.prettierrc +0 -5
- package/ARCHITECTURE.md +0 -313
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -131
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -131
- package/coverage/lcov-report/mysqlClient.ts.html +0 -685
- package/coverage/lcov-report/pgClient.ts.html +0 -823
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -533
- package/coverage/mysqlClient.ts.html +0 -685
- package/coverage/pgClient.ts.html +0 -823
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/dist/src/setupTests.d.ts +0 -26
- package/dist/src/setupTests.js +0 -43
- package/dist/src/setupTests.js.map +0 -1
- package/docs/INDEX.md +0 -145
- package/docs/methods/findFirst.md +0 -394
- package/docs/methods/findMany.md +0 -587
- package/docs/methods/insert.md +0 -536
- package/docs/methods/insertMany.md +0 -627
- package/docs/methods/joins.md +0 -781
- package/docs/methods/rawQuery.md +0 -284
- package/docs/methods/transactions.md +0 -737
- package/eslint.config.mjs +0 -77
- package/index.ts +0 -16
- package/jest.config.ts +0 -194
- package/scripts/release.sh +0 -123
- package/src/core/repository.ts +0 -865
- package/src/core/types.ts +0 -97
- package/src/core/utils.ts +0 -357
- package/src/db/IDatabaseClient.ts +0 -16
- package/src/db/__tests__/mysqlClient.test.ts +0 -262
- package/src/db/__tests__/pgClient.test.ts +0 -260
- package/src/db/initDb.ts +0 -181
- package/src/db/mysqlClient.ts +0 -200
- package/src/db/pgClient.ts +0 -246
- package/src/monitor/monitor.ts +0 -16
- package/src/setupTests.ts +0 -45
- package/tsconfig.test.json +0 -21
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.beginTransaction = exports.withTransaction = exports.rawQuery = exports.joins = exports.deleteMany = exports.deleteOne = exports.updateMany = exports.update = exports.insertMany = exports.insert = exports.findMany = exports.findFirst = void 0;
|
|
3
|
+
exports.beginTransaction = exports.withTransaction = exports.rawQuery = exports.joins = exports.deleteMany = exports.deleteOne = exports.updateMany = exports.update = exports.upsert = exports.insertMany = exports.insert = exports.findManyCursor = exports.findMany = exports.findFirst = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
|
+
const JOIN_TYPES = new Set(['INNER', 'LEFT', 'RIGHT', 'FULL']);
|
|
6
7
|
/**
|
|
7
8
|
* Finds the first record in the specified table
|
|
8
9
|
*
|
|
@@ -21,7 +22,7 @@ const utils_1 = require("./utils");
|
|
|
21
22
|
* tableName: 'users',
|
|
22
23
|
* dbClient: dbClient,
|
|
23
24
|
* select: ['id', 'name', 'email'],
|
|
24
|
-
* where: { status: 'active' },
|
|
25
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
25
26
|
* groupBy: ['status'],
|
|
26
27
|
* orderBy: [{ field: 'created_at', direction: 'DESC' }],
|
|
27
28
|
* })
|
|
@@ -31,7 +32,7 @@ const utils_1 = require("./utils");
|
|
|
31
32
|
* tableName: 'users',
|
|
32
33
|
* dbClient: dbClient,
|
|
33
34
|
* select: ['id', 'name', 'email'],
|
|
34
|
-
* where: { status: 'active' },
|
|
35
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
35
36
|
* groupBy: ['status'],
|
|
36
37
|
* orderBy: [{ field: 'created_at', direction: 'DESC' }],
|
|
37
38
|
* })
|
|
@@ -39,6 +40,7 @@ const utils_1 = require("./utils");
|
|
|
39
40
|
const findFirst = async ({ tableName, dbClient, select, where, groupBy, orderBy, }) => {
|
|
40
41
|
if (!tableName)
|
|
41
42
|
throw new Error('Table name is required');
|
|
43
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
42
44
|
if (!dbClient)
|
|
43
45
|
throw new Error('DB client is required');
|
|
44
46
|
const fields = (0, utils_1.createSelectFields)(select, dbClient.clientType);
|
|
@@ -46,9 +48,10 @@ const findFirst = async ({ tableName, dbClient, select, where, groupBy, orderBy,
|
|
|
46
48
|
const orderByClause = (0, utils_1.createOrderByClause)(orderBy);
|
|
47
49
|
const groupByClause = (0, utils_1.createGroupByClause)(groupBy);
|
|
48
50
|
const rows = await dbClient.query(`SELECT ${fields} FROM ${tableName}
|
|
49
|
-
${whereClause
|
|
51
|
+
${whereClause}
|
|
50
52
|
${groupByClause}
|
|
51
53
|
${orderByClause}
|
|
54
|
+
LIMIT 1
|
|
52
55
|
`, params);
|
|
53
56
|
return rows[0] || null;
|
|
54
57
|
};
|
|
@@ -71,7 +74,7 @@ exports.findFirst = findFirst;
|
|
|
71
74
|
* tableName: 'users',
|
|
72
75
|
* dbClient: dbClient,
|
|
73
76
|
* select: ['id', 'name', 'email'],
|
|
74
|
-
* where: { status: 'active' },
|
|
77
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
75
78
|
* groupBy: ['status'],
|
|
76
79
|
* orderBy: [{ field: 'created_at', direction: 'DESC' }],
|
|
77
80
|
* limit: 10,
|
|
@@ -82,6 +85,7 @@ exports.findFirst = findFirst;
|
|
|
82
85
|
const findMany = async ({ tableName, dbClient, select, where, groupBy, orderBy, limit, offset, unaccent, }) => {
|
|
83
86
|
if (!tableName)
|
|
84
87
|
throw new Error('Table name is required');
|
|
88
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
85
89
|
if (!dbClient)
|
|
86
90
|
throw new Error('DB client is required');
|
|
87
91
|
const fields = (0, utils_1.createSelectFields)(select, dbClient.clientType);
|
|
@@ -91,7 +95,7 @@ const findMany = async ({ tableName, dbClient, select, where, groupBy, orderBy,
|
|
|
91
95
|
const limitClause = (0, utils_1.createLimitClause)(limit);
|
|
92
96
|
const offsetClause = (0, utils_1.createOffsetClause)(offset);
|
|
93
97
|
const rows = await dbClient.query(`SELECT ${fields} FROM ${tableName}
|
|
94
|
-
${whereClause
|
|
98
|
+
${whereClause}
|
|
95
99
|
${groupByClause}
|
|
96
100
|
${orderByClause}
|
|
97
101
|
${limitClause}
|
|
@@ -100,6 +104,91 @@ const findMany = async ({ tableName, dbClient, select, where, groupBy, orderBy,
|
|
|
100
104
|
return rows || [];
|
|
101
105
|
};
|
|
102
106
|
exports.findMany = findMany;
|
|
107
|
+
/**
|
|
108
|
+
* Finds multiple records in the specified table using keyset (cursor)
|
|
109
|
+
* pagination instead of offset/limit
|
|
110
|
+
*
|
|
111
|
+
* Unlike offset-based pagination, keyset pagination stays O(1) regardless of
|
|
112
|
+
* how deep the page is (no `OFFSET N` row-skipping) and does not skip/repeat
|
|
113
|
+
* rows when the underlying data changes between pages. It requires
|
|
114
|
+
* `cursorField` to be a strictly ordered, indexed column — `id` (if
|
|
115
|
+
* sequential) or `created_at` are typical choices; a plain UUID `id` works
|
|
116
|
+
* for uniqueness but its ordering is arbitrary, so prefer a monotonically
|
|
117
|
+
* increasing column when the page order matters to callers.
|
|
118
|
+
*
|
|
119
|
+
* @template T - The type of the records to be returned
|
|
120
|
+
* @param params - Query parameters including table name, database client, select fields, where conditions, cursor field, cursor value, direction, page size and unaccent
|
|
121
|
+
* @returns Promise<CursorPageResult<T>> - The page of records plus the cursor to request the next page (`null` when there is no next page)
|
|
122
|
+
*
|
|
123
|
+
* @throws {Error} When table name is not provided
|
|
124
|
+
* @throws {Error} When database client is not provided
|
|
125
|
+
* @throws {Error} When direction is not ASC or DESC
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* // First page
|
|
129
|
+
* const page1 = await findManyCursor({
|
|
130
|
+
* tableName: 'users',
|
|
131
|
+
* dbClient: dbClient,
|
|
132
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
133
|
+
* cursorField: 'created_at',
|
|
134
|
+
* limit: 20,
|
|
135
|
+
* })
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* // Next page
|
|
139
|
+
* const page2 = await findManyCursor({
|
|
140
|
+
* tableName: 'users',
|
|
141
|
+
* dbClient: dbClient,
|
|
142
|
+
* cursorField: 'created_at',
|
|
143
|
+
* cursor: page1.nextCursor,
|
|
144
|
+
* limit: 20,
|
|
145
|
+
* })
|
|
146
|
+
*/
|
|
147
|
+
const findManyCursor = async ({ tableName, dbClient, select, where, cursorField = 'id', cursor, direction = 'ASC', limit = 20, unaccent, }) => {
|
|
148
|
+
if (!tableName)
|
|
149
|
+
throw new Error('Table name is required');
|
|
150
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
151
|
+
if (!dbClient)
|
|
152
|
+
throw new Error('DB client is required');
|
|
153
|
+
(0, utils_1.assertValidIdentifier)(cursorField, 'cursor field');
|
|
154
|
+
if (direction !== 'ASC' && direction !== 'DESC') {
|
|
155
|
+
throw new Error(`Invalid direction: "${direction}". Only ASC or DESC are allowed.`);
|
|
156
|
+
}
|
|
157
|
+
if (!Number.isInteger(limit) || limit <= 0) {
|
|
158
|
+
throw new Error(`Invalid limit: "${limit}". Must be a positive integer.`);
|
|
159
|
+
}
|
|
160
|
+
const fields = (0, utils_1.createSelectFields)(select, dbClient.clientType);
|
|
161
|
+
const [whereClause, whereParams, nextIndex] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType, unaccent);
|
|
162
|
+
const params = [...whereParams];
|
|
163
|
+
let cursorCondition = '';
|
|
164
|
+
if (cursor !== undefined && cursor !== null) {
|
|
165
|
+
const operator = direction === 'ASC' ? '>' : '<';
|
|
166
|
+
const placeholder = dbClient.clientType === 'pg' ? `$${nextIndex}` : '?';
|
|
167
|
+
cursorCondition = `${cursorField} ${operator} ${placeholder}`;
|
|
168
|
+
params.push(cursor);
|
|
169
|
+
}
|
|
170
|
+
let combinedWhere = whereClause;
|
|
171
|
+
if (cursorCondition) {
|
|
172
|
+
combinedWhere = whereClause
|
|
173
|
+
? `${whereClause} AND ${cursorCondition}`
|
|
174
|
+
: ` WHERE ${cursorCondition}`;
|
|
175
|
+
}
|
|
176
|
+
// fetch one extra row to know whether a next page exists without a
|
|
177
|
+
// separate COUNT query
|
|
178
|
+
const rows = await dbClient.query(`SELECT ${fields} FROM ${tableName}
|
|
179
|
+
${combinedWhere}
|
|
180
|
+
ORDER BY ${cursorField} ${direction}
|
|
181
|
+
LIMIT ${limit + 1}
|
|
182
|
+
`, params);
|
|
183
|
+
const hasMore = rows.length > limit;
|
|
184
|
+
const data = hasMore ? rows.slice(0, limit) : rows;
|
|
185
|
+
const lastRow = data[data.length - 1];
|
|
186
|
+
return {
|
|
187
|
+
data,
|
|
188
|
+
nextCursor: hasMore && lastRow ? (lastRow[cursorField] ?? null) : null,
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
exports.findManyCursor = findManyCursor;
|
|
103
192
|
/**
|
|
104
193
|
* Inserts a new record into the specified table
|
|
105
194
|
*
|
|
@@ -126,18 +215,20 @@ exports.findMany = findMany;
|
|
|
126
215
|
const insert = async ({ tableName, dbClient, data, returning, }) => {
|
|
127
216
|
if (!tableName)
|
|
128
217
|
throw new Error('Table name is required');
|
|
218
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
129
219
|
if (!dbClient)
|
|
130
220
|
throw new Error('DB client is required');
|
|
131
221
|
if (!data)
|
|
132
222
|
throw new Error('Data object is required');
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
223
|
+
const rawKeys = Object.keys(data);
|
|
224
|
+
rawKeys.forEach((key) => (0, utils_1.assertValidIdentifier)(key, 'column name'));
|
|
225
|
+
(0, utils_1.assertNoAutoManagedColumns)(rawKeys, 'insert');
|
|
226
|
+
const keys = rawKeys.map((key) => (0, utils_1.quoteIdentifier)(key, dbClient.clientType));
|
|
136
227
|
const values = Object.values(data);
|
|
137
|
-
keys.unshift('id');
|
|
228
|
+
keys.unshift((0, utils_1.quoteIdentifier)('id', dbClient.clientType));
|
|
138
229
|
const generatedUUID = (0, uuid_1.v4)();
|
|
139
230
|
values.unshift(generatedUUID);
|
|
140
|
-
keys.push('updated_at');
|
|
231
|
+
keys.push((0, utils_1.quoteIdentifier)('updated_at', dbClient.clientType));
|
|
141
232
|
values.push(new Date());
|
|
142
233
|
const placeholders = (0, utils_1.generatePlaceholders)(keys, dbClient.clientType);
|
|
143
234
|
let query = `INSERT INTO ${tableName} (${keys.join(', ')}) VALUES (${placeholders})`;
|
|
@@ -185,21 +276,41 @@ exports.insert = insert;
|
|
|
185
276
|
const insertMany = async ({ tableName, dbClient, data, returning, }) => {
|
|
186
277
|
if (!tableName)
|
|
187
278
|
throw new Error('Table name is required');
|
|
279
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
188
280
|
if (!dbClient)
|
|
189
281
|
throw new Error('DB client is required');
|
|
190
282
|
if (!data || data.length === 0)
|
|
191
283
|
throw new Error('Data array is required and cannot be empty');
|
|
192
284
|
const firstItem = data[0];
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const
|
|
285
|
+
const rawKeys = Object.keys(firstItem);
|
|
286
|
+
rawKeys.forEach((key) => (0, utils_1.assertValidIdentifier)(key, 'column name'));
|
|
287
|
+
(0, utils_1.assertNoAutoManagedColumns)(rawKeys, 'insertMany');
|
|
288
|
+
const rawKeySet = new Set(rawKeys);
|
|
289
|
+
data.forEach((item, index) => {
|
|
290
|
+
const itemKeys = Object.keys(item);
|
|
291
|
+
const itemKeySet = new Set(itemKeys);
|
|
292
|
+
const missing = rawKeys.filter((key) => !itemKeySet.has(key));
|
|
293
|
+
const extra = itemKeys.filter((key) => !rawKeySet.has(key));
|
|
294
|
+
if (missing.length > 0 || extra.length > 0) {
|
|
295
|
+
throw new Error(`insertMany: item at index ${index} has different keys than the first item.` +
|
|
296
|
+
(missing.length > 0 ? ` Missing: [${missing.join(', ')}].` : '') +
|
|
297
|
+
(extra.length > 0 ? ` Unexpected: [${extra.join(', ')}].` : ''));
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
const keys = rawKeys.map((key) => (0, utils_1.quoteIdentifier)(key, dbClient.clientType));
|
|
301
|
+
const allKeys = [
|
|
302
|
+
(0, utils_1.quoteIdentifier)('id', dbClient.clientType),
|
|
303
|
+
...keys,
|
|
304
|
+
(0, utils_1.quoteIdentifier)('updated_at', dbClient.clientType),
|
|
305
|
+
];
|
|
306
|
+
(0, utils_1.assertWithinBindParamLimit)(data.length * allKeys.length, 'insertMany');
|
|
197
307
|
let query = `INSERT INTO ${tableName} (${allKeys.join(', ')}) VALUES `;
|
|
198
308
|
const allValues = [];
|
|
199
309
|
const valueRows = [];
|
|
200
310
|
const generatedIds = [];
|
|
201
311
|
data.forEach((item, rowIndex) => {
|
|
202
|
-
const
|
|
312
|
+
const record = item;
|
|
313
|
+
const values = rawKeys.map((key) => record[key]);
|
|
203
314
|
const generatedUUID = (0, uuid_1.v4)();
|
|
204
315
|
generatedIds.push(generatedUUID);
|
|
205
316
|
const currentValues = [generatedUUID, ...values, new Date()];
|
|
@@ -237,6 +348,116 @@ const insertMany = async ({ tableName, dbClient, data, returning, }) => {
|
|
|
237
348
|
return inserted;
|
|
238
349
|
};
|
|
239
350
|
exports.insertMany = insertMany;
|
|
351
|
+
/**
|
|
352
|
+
* Inserts a record, or updates it in place if it collides with an existing
|
|
353
|
+
* unique/primary key
|
|
354
|
+
*
|
|
355
|
+
* Builds `INSERT ... ON CONFLICT (...) DO UPDATE SET ...` for pg and
|
|
356
|
+
* `INSERT ... ON DUPLICATE KEY UPDATE ...` for mysql. `conflictFields` must
|
|
357
|
+
* name columns actually covered by a unique or primary key constraint on
|
|
358
|
+
* `tableName` — this function does not create or verify that constraint, it
|
|
359
|
+
* only builds SQL that assumes it exists. For mysql, `conflictFields` is not
|
|
360
|
+
* part of the generated SQL (`ON DUPLICATE KEY UPDATE` relies on the table's
|
|
361
|
+
* own constraint) — it is used only to re-select the row afterwards, since
|
|
362
|
+
* mysql has no `RETURNING`.
|
|
363
|
+
*
|
|
364
|
+
* @template P - The type of the data to be upserted
|
|
365
|
+
* @template R - The type of the record to be returned
|
|
366
|
+
* @param params - Query parameters including table name, database client, data, conflict target fields, optional fields to update on conflict (defaults to every field in data), and optional returning fields
|
|
367
|
+
* @returns Promise<R> - The inserted or updated record
|
|
368
|
+
*
|
|
369
|
+
* @throws {Error} When table name is not provided
|
|
370
|
+
* @throws {Error} When database client is not provided
|
|
371
|
+
* @throws {Error} When data object is not provided
|
|
372
|
+
* @throws {Error} When conflictFields is not provided or empty
|
|
373
|
+
*
|
|
374
|
+
* @example
|
|
375
|
+
* const record = await upsert({
|
|
376
|
+
* tableName: 'users',
|
|
377
|
+
* dbClient: dbClient,
|
|
378
|
+
* data: { email: 'john.doe@example.com', name: 'John Doe' },
|
|
379
|
+
* conflictFields: ['email'],
|
|
380
|
+
* returning: ['id', 'name', 'email'],
|
|
381
|
+
* })
|
|
382
|
+
*/
|
|
383
|
+
const upsert = async ({ tableName, dbClient, data, conflictFields, updateFields, returning, }) => {
|
|
384
|
+
if (!tableName)
|
|
385
|
+
throw new Error('Table name is required');
|
|
386
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
387
|
+
if (!dbClient)
|
|
388
|
+
throw new Error('DB client is required');
|
|
389
|
+
if (!data)
|
|
390
|
+
throw new Error('Data object is required');
|
|
391
|
+
if (!conflictFields || conflictFields.length === 0)
|
|
392
|
+
throw new Error('conflictFields is required and cannot be empty');
|
|
393
|
+
conflictFields.forEach((field) => (0, utils_1.assertValidIdentifier)(field, 'conflict field'));
|
|
394
|
+
const rawKeys = Object.keys(data);
|
|
395
|
+
rawKeys.forEach((key) => (0, utils_1.assertValidIdentifier)(key, 'column name'));
|
|
396
|
+
(0, utils_1.assertNoAutoManagedColumns)(rawKeys, 'upsert');
|
|
397
|
+
const rawKeySet = new Set(rawKeys);
|
|
398
|
+
const fieldsToUpdate = updateFields && updateFields.length > 0 ? updateFields : rawKeys;
|
|
399
|
+
fieldsToUpdate.forEach((key) => (0, utils_1.assertValidIdentifier)(key, 'column name'));
|
|
400
|
+
// 'updated_at' is always refreshed on conflict regardless of `data`
|
|
401
|
+
// (the function injects it below), so naming it in `updateFields` is
|
|
402
|
+
// valid even though it's never a key of `data`.
|
|
403
|
+
const unknownUpdateFields = fieldsToUpdate.filter((key) => key !== 'updated_at' && !rawKeySet.has(key));
|
|
404
|
+
if (unknownUpdateFields.length > 0) {
|
|
405
|
+
throw new Error(`upsert: updateFields references column(s) not present in data: [${unknownUpdateFields.join(', ')}]. Only columns included in data can be refreshed on conflict — a column left out of data would resolve to its table default instead of the intended value.`);
|
|
406
|
+
}
|
|
407
|
+
if (dbClient.clientType === 'mysql') {
|
|
408
|
+
const record = data;
|
|
409
|
+
const missingConflictValues = conflictFields.filter((field) => record[field] === undefined);
|
|
410
|
+
if (missingConflictValues.length > 0) {
|
|
411
|
+
throw new Error(`upsert: conflictFields references column(s) not present in data: [${missingConflictValues.join(', ')}]. mysql has no RETURNING, so upsert() re-selects the row by these columns after the write — they must be included in data.`);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
const keys = rawKeys.map((key) => (0, utils_1.quoteIdentifier)(key, dbClient.clientType));
|
|
415
|
+
const values = Object.values(data);
|
|
416
|
+
keys.unshift((0, utils_1.quoteIdentifier)('id', dbClient.clientType));
|
|
417
|
+
const generatedUUID = (0, uuid_1.v4)();
|
|
418
|
+
values.unshift(generatedUUID);
|
|
419
|
+
keys.push((0, utils_1.quoteIdentifier)('updated_at', dbClient.clientType));
|
|
420
|
+
values.push(new Date());
|
|
421
|
+
const placeholders = (0, utils_1.generatePlaceholders)(keys, dbClient.clientType);
|
|
422
|
+
let query = `INSERT INTO ${tableName} (${keys.join(', ')}) VALUES (${placeholders})`;
|
|
423
|
+
if (dbClient.clientType === 'pg') {
|
|
424
|
+
const conflictTarget = conflictFields
|
|
425
|
+
.map((field) => (0, utils_1.quoteIdentifier)(field, 'pg'))
|
|
426
|
+
.join(', ');
|
|
427
|
+
const updateSet = Array.from(new Set([...fieldsToUpdate, 'updated_at']))
|
|
428
|
+
.map((key) => {
|
|
429
|
+
const quoted = (0, utils_1.quoteIdentifier)(key, 'pg');
|
|
430
|
+
return `${quoted} = EXCLUDED.${quoted}`;
|
|
431
|
+
})
|
|
432
|
+
.join(', ');
|
|
433
|
+
query += ` ON CONFLICT (${conflictTarget}) DO UPDATE SET ${updateSet}`;
|
|
434
|
+
if (returning && returning.length > 0) {
|
|
435
|
+
query += ` RETURNING ${(0, utils_1.createSelectFields)(returning, dbClient.clientType)}`;
|
|
436
|
+
}
|
|
437
|
+
const result = await dbClient.query(query, values);
|
|
438
|
+
return result[0];
|
|
439
|
+
}
|
|
440
|
+
const updateSet = Array.from(new Set([...fieldsToUpdate, 'updated_at']))
|
|
441
|
+
.map((key) => {
|
|
442
|
+
const quoted = (0, utils_1.quoteIdentifier)(key, 'mysql');
|
|
443
|
+
return `${quoted} = VALUES(${quoted})`;
|
|
444
|
+
})
|
|
445
|
+
.join(', ');
|
|
446
|
+
query += ` ON DUPLICATE KEY UPDATE ${updateSet}`;
|
|
447
|
+
await dbClient.query(query, values);
|
|
448
|
+
const record = data;
|
|
449
|
+
const whereClause = conflictFields
|
|
450
|
+
.map((field) => `${(0, utils_1.quoteIdentifier)(field, 'mysql')} = ?`)
|
|
451
|
+
.join(' AND ');
|
|
452
|
+
const conflictValues = conflictFields.map((field) => record[field]);
|
|
453
|
+
const rows = await dbClient.query(`SELECT ${returning && returning.length > 0
|
|
454
|
+
? (0, utils_1.createSelectFields)(returning, dbClient.clientType)
|
|
455
|
+
: '*'} FROM ${tableName}
|
|
456
|
+
WHERE ${whereClause}
|
|
457
|
+
`, conflictValues);
|
|
458
|
+
return rows[0];
|
|
459
|
+
};
|
|
460
|
+
exports.upsert = upsert;
|
|
240
461
|
/**
|
|
241
462
|
* Updates a record in the specified table
|
|
242
463
|
*
|
|
@@ -264,16 +485,23 @@ exports.insertMany = insertMany;
|
|
|
264
485
|
const update = async ({ tableName, dbClient, id, data, returning, }) => {
|
|
265
486
|
if (!tableName)
|
|
266
487
|
throw new Error('Table name is required');
|
|
488
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
267
489
|
if (!dbClient)
|
|
268
490
|
throw new Error('DB client is required');
|
|
269
491
|
if (!id)
|
|
270
|
-
throw new Error(
|
|
492
|
+
throw new Error(`ID is required for update() on table "${tableName}"`);
|
|
271
493
|
if (!data)
|
|
272
494
|
throw new Error('Data object is required');
|
|
495
|
+
if (Object.keys(data).length === 0)
|
|
496
|
+
throw new Error('Data object must have at least one field to update');
|
|
273
497
|
const keys = Object.keys(data);
|
|
498
|
+
keys.forEach((key) => (0, utils_1.assertValidIdentifier)(key, 'column name'));
|
|
274
499
|
const values = Object.values(data);
|
|
275
|
-
const
|
|
276
|
-
|
|
500
|
+
const quotedKeys = keys.map((key) => (0, utils_1.quoteIdentifier)(key, dbClient.clientType));
|
|
501
|
+
const setClause = (0, utils_1.generateSetClause)(quotedKeys, dbClient.clientType);
|
|
502
|
+
const idPlaceholder = dbClient.clientType === 'pg' ? `$${values.length + 1}` : '?';
|
|
503
|
+
let query = `UPDATE ${tableName} SET ${setClause} WHERE id = ${idPlaceholder}`;
|
|
504
|
+
values.push(id);
|
|
277
505
|
if (dbClient.clientType === 'pg') {
|
|
278
506
|
if (returning && returning.length > 0) {
|
|
279
507
|
query += ` RETURNING ${(0, utils_1.createSelectFields)(returning, dbClient.clientType)}`;
|
|
@@ -313,28 +541,34 @@ exports.update = update;
|
|
|
313
541
|
* tableName: 'users',
|
|
314
542
|
* dbClient: dbClient,
|
|
315
543
|
* data: { name: 'John Doe', email: 'john.doe@example.com' },
|
|
316
|
-
* where: { status: 'active' },
|
|
544
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
317
545
|
* returning: ['id', 'name', 'email'],
|
|
318
546
|
* })
|
|
319
547
|
*/
|
|
320
548
|
const updateMany = async ({ tableName, dbClient, data, where, returning, }) => {
|
|
321
549
|
if (!tableName)
|
|
322
550
|
throw new Error('Table name is required');
|
|
551
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
323
552
|
if (!dbClient)
|
|
324
553
|
throw new Error('DB client is required');
|
|
325
554
|
if (!data)
|
|
326
555
|
throw new Error('Data object is required');
|
|
556
|
+
if (Object.keys(data).length === 0)
|
|
557
|
+
throw new Error('Data object must have at least one field to update');
|
|
327
558
|
if (!where)
|
|
328
559
|
throw new Error('Where condition is required');
|
|
329
560
|
const keys = Object.keys(data);
|
|
561
|
+
keys.forEach((key) => (0, utils_1.assertValidIdentifier)(key, 'column name'));
|
|
330
562
|
const values = Object.values(data);
|
|
331
563
|
// Generate SET clause with correct placeholders
|
|
332
|
-
const
|
|
333
|
-
|
|
334
|
-
.join(', ');
|
|
564
|
+
const quotedKeys = keys.map((key) => (0, utils_1.quoteIdentifier)(key, dbClient.clientType));
|
|
565
|
+
const setClause = (0, utils_1.generateSetClause)(quotedKeys, dbClient.clientType);
|
|
335
566
|
// Generate WHERE clause with placeholders starting after SET values
|
|
336
567
|
const [whereClause, whereParams] = (0, utils_1.createWhereClause)(where, values.length + 1, dbClient.clientType);
|
|
337
|
-
|
|
568
|
+
if (!whereClause) {
|
|
569
|
+
throw new Error('updateMany: where condition produced an empty WHERE clause — refusing to update every row in the table. Pass at least one condition.');
|
|
570
|
+
}
|
|
571
|
+
let query = `UPDATE ${tableName} SET ${setClause}${whereClause}`;
|
|
338
572
|
if (dbClient.clientType === 'pg') {
|
|
339
573
|
if (returning && returning.length > 0) {
|
|
340
574
|
query += ` RETURNING ${(0, utils_1.createSelectFields)(returning, dbClient.clientType)}`;
|
|
@@ -379,10 +613,11 @@ exports.updateMany = updateMany;
|
|
|
379
613
|
const deleteOne = async ({ tableName, dbClient, id, permanently = false, }) => {
|
|
380
614
|
if (!tableName)
|
|
381
615
|
throw new Error('Table name is required');
|
|
616
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
382
617
|
if (!dbClient)
|
|
383
618
|
throw new Error('DB client is required');
|
|
384
619
|
if (!id)
|
|
385
|
-
throw new Error(
|
|
620
|
+
throw new Error(`ID is required for deleteOne() on table "${tableName}"`);
|
|
386
621
|
await dbClient.query(permanently
|
|
387
622
|
? `DELETE FROM ${tableName} WHERE id = ${dbClient.clientType === 'pg' ? '$1' : '?'}`
|
|
388
623
|
: `UPDATE ${tableName} SET status = 'deleted' WHERE id = ${dbClient.clientType === 'pg' ? '$1' : '?'}`, [id]);
|
|
@@ -415,12 +650,15 @@ exports.deleteOne = deleteOne;
|
|
|
415
650
|
const deleteMany = async ({ tableName, dbClient, ids, field = 'id', permanently = false, }) => {
|
|
416
651
|
if (!tableName)
|
|
417
652
|
throw new Error('Table name is required');
|
|
653
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
418
654
|
if (!dbClient)
|
|
419
655
|
throw new Error('DB client is required');
|
|
420
656
|
if (!ids || ids.length === 0)
|
|
421
657
|
throw new Error('IDs are required and cannot be empty');
|
|
422
658
|
if (!field)
|
|
423
659
|
throw new Error('Field is required');
|
|
660
|
+
(0, utils_1.assertValidIdentifier)(field, 'field');
|
|
661
|
+
(0, utils_1.assertWithinBindParamLimit)(ids.length, 'deleteMany');
|
|
424
662
|
const placeholders = dbClient.clientType === 'pg'
|
|
425
663
|
? ids.map((_, index) => `$${index + 1}`).join(', ')
|
|
426
664
|
: ids.map(() => '?').join(', ');
|
|
@@ -451,7 +689,7 @@ exports.deleteMany = deleteMany;
|
|
|
451
689
|
* dbClient: dbClient,
|
|
452
690
|
* select: ['id', 'name', 'email'],
|
|
453
691
|
* joins: [{ type: 'INNER', table: 'orders', on: 'users.id = orders.user_id' }],
|
|
454
|
-
* where: { status: 'active' },
|
|
692
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
455
693
|
* groupBy: ['status'],
|
|
456
694
|
* orderBy: [{ field: 'created_at', direction: 'DESC' }],
|
|
457
695
|
* limit: 10,
|
|
@@ -462,8 +700,18 @@ exports.deleteMany = deleteMany;
|
|
|
462
700
|
const joins = async ({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, unaccent, }) => {
|
|
463
701
|
if (!tableName)
|
|
464
702
|
throw new Error('Table name is required');
|
|
703
|
+
(0, utils_1.assertValidIdentifier)(tableName, 'table name');
|
|
465
704
|
if (!dbClient)
|
|
466
705
|
throw new Error('DB client is required');
|
|
706
|
+
if (joins) {
|
|
707
|
+
joins.forEach((join) => {
|
|
708
|
+
if (!JOIN_TYPES.has(join.type)) {
|
|
709
|
+
throw new Error(`Invalid join type: "${join.type}". Only INNER, LEFT, RIGHT or FULL are allowed.`);
|
|
710
|
+
}
|
|
711
|
+
(0, utils_1.assertValidIdentifier)(join.table, 'join table');
|
|
712
|
+
(0, utils_1.assertSafeSqlFragment)(join.on, 'join on condition');
|
|
713
|
+
});
|
|
714
|
+
}
|
|
467
715
|
const fields = Array.isArray(select) ? select : [];
|
|
468
716
|
const selectFields = (0, utils_1.createSelectFields)(fields, dbClient.clientType);
|
|
469
717
|
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType, unaccent);
|
|
@@ -548,7 +796,7 @@ exports.rawQuery = rawQuery;
|
|
|
548
796
|
* select: ['id', 'name', 'email'],
|
|
549
797
|
* from: 'users',
|
|
550
798
|
* joins: [{ type: 'INNER', table: 'orders', on: 'users.id = orders.user_id' }],
|
|
551
|
-
* where: { status: 'active' },
|
|
799
|
+
* where: { status: { operator: '=', value: 'active' } },
|
|
552
800
|
* groupBy: ['status'],
|
|
553
801
|
* orderBy: [{ field: 'created_at', direction: 'DESC' }],
|
|
554
802
|
* limit: 10,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/core/repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/core/repository.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/types.d.ts
CHANGED
|
@@ -20,7 +20,13 @@ export type Condition<T> = OperatorCondition | LogicalCondition<T>;
|
|
|
20
20
|
interface LogicalCondition<T> {
|
|
21
21
|
OR?: Conditions<T>[];
|
|
22
22
|
AND?: Conditions<T>[];
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* A nested AND-group of conditions rendered as its own parenthesized clause,
|
|
25
|
+
* e.g. `(a = $1 AND b = $2)`. Despite the name this has nothing to do with
|
|
26
|
+
* SQL JOINs (see the `joins()` query function for that) — it exists
|
|
27
|
+
* alongside sibling top-level conditions rather than replacing them.
|
|
28
|
+
*/
|
|
29
|
+
JOINS?: Conditions<object>[];
|
|
24
30
|
notExists?: OperatorCondition;
|
|
25
31
|
}
|
|
26
32
|
export type Conditions<T> = {
|
|
@@ -59,6 +65,15 @@ export interface QueryBuilder {
|
|
|
59
65
|
limit?: string;
|
|
60
66
|
offset?: string;
|
|
61
67
|
}
|
|
68
|
+
export interface CursorPageResult<T> {
|
|
69
|
+
data: T[];
|
|
70
|
+
/**
|
|
71
|
+
* Value of `cursorField` on the last row of `data`, to pass back in as
|
|
72
|
+
* `cursor` for the next page. `null` when this page reached the end of
|
|
73
|
+
* the result set (no more rows past it).
|
|
74
|
+
*/
|
|
75
|
+
nextCursor: string | number | null;
|
|
76
|
+
}
|
|
62
77
|
export interface RawQueryParams {
|
|
63
78
|
dbClient: IDatabaseClient;
|
|
64
79
|
sql: string;
|