@starbemtech/star-db-query-builder 1.3.0 → 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.
Files changed (75) hide show
  1. package/.claude/skills/star-db-query-builder/SKILL.md +104 -0
  2. package/CHANGELOG.md +81 -46
  3. package/LICENSE +21 -0
  4. package/README.md +194 -94
  5. package/bin/install-skill.js +53 -0
  6. package/dist/src/core/repository.d.ts +92 -9
  7. package/dist/src/core/repository.js +275 -27
  8. package/dist/src/core/repository.js.map +1 -1
  9. package/dist/src/core/types.d.ts +17 -2
  10. package/dist/src/core/utils.d.ts +102 -0
  11. package/dist/src/core/utils.js +287 -70
  12. package/dist/src/core/utils.js.map +1 -1
  13. package/dist/src/db/initDb.d.ts +60 -50
  14. package/dist/src/db/initDb.js +96 -64
  15. package/dist/src/db/initDb.js.map +1 -1
  16. package/dist/src/db/mysqlClient.d.ts +3 -8
  17. package/dist/src/db/mysqlClient.js +9 -11
  18. package/dist/src/db/mysqlClient.js.map +1 -1
  19. package/dist/src/db/pgClient.js +0 -2
  20. package/dist/src/db/pgClient.js.map +1 -1
  21. package/dist/src/monitor/monitor.js +7 -0
  22. package/dist/src/monitor/monitor.js.map +1 -1
  23. package/package.json +28 -20
  24. package/.github/workflows/publish.yml +0 -118
  25. package/.prettierignore +0 -3
  26. package/.prettierrc +0 -5
  27. package/ARCHITECTURE.md +0 -313
  28. package/coverage/base.css +0 -224
  29. package/coverage/block-navigation.js +0 -87
  30. package/coverage/favicon.png +0 -0
  31. package/coverage/index.html +0 -131
  32. package/coverage/lcov-report/base.css +0 -224
  33. package/coverage/lcov-report/block-navigation.js +0 -87
  34. package/coverage/lcov-report/favicon.png +0 -0
  35. package/coverage/lcov-report/index.html +0 -131
  36. package/coverage/lcov-report/mysqlClient.ts.html +0 -685
  37. package/coverage/lcov-report/pgClient.ts.html +0 -823
  38. package/coverage/lcov-report/prettify.css +0 -1
  39. package/coverage/lcov-report/prettify.js +0 -2
  40. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  41. package/coverage/lcov-report/sorter.js +0 -210
  42. package/coverage/lcov.info +0 -533
  43. package/coverage/mysqlClient.ts.html +0 -685
  44. package/coverage/pgClient.ts.html +0 -823
  45. package/coverage/prettify.css +0 -1
  46. package/coverage/prettify.js +0 -2
  47. package/coverage/sort-arrow-sprite.png +0 -0
  48. package/coverage/sorter.js +0 -210
  49. package/dist/src/setupTests.d.ts +0 -26
  50. package/dist/src/setupTests.js +0 -43
  51. package/dist/src/setupTests.js.map +0 -1
  52. package/docs/INDEX.md +0 -145
  53. package/docs/methods/findFirst.md +0 -394
  54. package/docs/methods/findMany.md +0 -587
  55. package/docs/methods/insert.md +0 -536
  56. package/docs/methods/insertMany.md +0 -627
  57. package/docs/methods/joins.md +0 -781
  58. package/docs/methods/rawQuery.md +0 -284
  59. package/docs/methods/transactions.md +0 -737
  60. package/eslint.config.mjs +0 -77
  61. package/index.ts +0 -16
  62. package/jest.config.ts +0 -194
  63. package/scripts/release.sh +0 -123
  64. package/src/core/repository.ts +0 -865
  65. package/src/core/types.ts +0 -97
  66. package/src/core/utils.ts +0 -357
  67. package/src/db/IDatabaseClient.ts +0 -16
  68. package/src/db/__tests__/mysqlClient.test.ts +0 -262
  69. package/src/db/__tests__/pgClient.test.ts +0 -260
  70. package/src/db/initDb.ts +0 -181
  71. package/src/db/mysqlClient.ts +0 -200
  72. package/src/db/pgClient.ts +0 -246
  73. package/src/monitor/monitor.ts +0 -16
  74. package/src/setupTests.ts +0 -45
  75. 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.length > 7 ? 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.length > 7 ? 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 keys = dbClient.clientType === 'pg'
134
- ? Object.keys(data).map((key) => key === 'authorization' ? `"${key}"` : key)
135
- : Object.keys(data);
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 keys = dbClient.clientType === 'pg'
194
- ? Object.keys(firstItem).map((key) => key === 'authorization' ? `"${key}"` : key)
195
- : Object.keys(firstItem);
196
- const allKeys = ['id', ...keys, 'updated_at'];
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 values = Object.values(item);
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('ID is required');
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 setClause = (0, utils_1.generateSetClause)(keys, dbClient.clientType);
276
- let query = `UPDATE ${tableName} SET ${setClause} WHERE id = '${id}'`;
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 setClause = keys
333
- .map((key, index) => dbClient.clientType === 'pg' ? `${key} = $${index + 1}` : `${key} = ?`)
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
- let query = `UPDATE ${tableName} SET ${setClause} ${whereClause}`;
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('ID is required');
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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"}
@@ -10,7 +10,7 @@ export interface QueryExec {
10
10
  text: string;
11
11
  values?: any[];
12
12
  }
13
- type SimpleValue = string | number | boolean | Date;
13
+ type SimpleValue = string | number | boolean | Date | null;
14
14
  export interface OperatorCondition {
15
15
  operator: 'ILIKE' | 'LIKE' | '=' | '>' | '<' | 'IN' | 'BETWEEN' | '!=' | '<=' | '>=' | 'NOT IN' | 'LIKE' | 'NOT LIKE' | 'IS NULL' | 'IS NOT NULL' | 'NOT EXISTS';
16
16
  value: SimpleValue | SimpleValue[];
@@ -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
- JOINS?: Conditions<object>;
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;