@crane-technologies/database 3.0.3 → 3.1.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/README.md +51 -23
- package/dist/components/Database.d.ts +19 -3
- package/dist/components/Database.d.ts.map +1 -1
- package/dist/components/Database.js +35 -6
- package/dist/components/Database.js.map +1 -1
- package/dist/utils/createQueries.d.ts +9 -10
- package/dist/utils/createQueries.d.ts.map +1 -1
- package/dist/utils/createQueries.js +18 -22
- package/dist/utils/createQueries.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
# @crane-technologies/database
|
|
2
2
|
|
|
3
|
-
PostgreSQL database component with connection pooling, transactions, dependency management, and
|
|
3
|
+
PostgreSQL database component with connection pooling, transactions, dependency management, and TypeScript query autocomplete.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Features
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
7
|
+
- Full autocomplete with `createQueries()`
|
|
8
|
+
- Automatic connection pooling
|
|
9
|
+
- ACID transactions with query dependencies
|
|
10
|
+
- Support for flat, nested, and mixed queries
|
|
11
|
+
- Raw SQL when you need it
|
|
12
|
+
- Backward compatible with existing code
|
|
13
|
+
- Configurable logs (4 levels)
|
|
14
|
+
- 100% TypeScript with complete types
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Installation
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npm install @crane-technologies/database
|
|
@@ -23,9 +23,9 @@ npm install @crane-technologies/database
|
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Quick Start
|
|
27
27
|
|
|
28
|
-
###
|
|
28
|
+
### With `createQueries()` (Recommended)
|
|
29
29
|
|
|
30
30
|
```typescript
|
|
31
31
|
import Database, {
|
|
@@ -58,7 +58,7 @@ const config: DatabaseConfig = {
|
|
|
58
58
|
// 3. Initialize
|
|
59
59
|
const db = Database.getInstance(config, queries);
|
|
60
60
|
|
|
61
|
-
// 4. Use with autocomplete!
|
|
61
|
+
// 4. Use with autocomplete!
|
|
62
62
|
const user = await db.query(queries.users.getById, [123]);
|
|
63
63
|
const newUser = await db.query(queries.users.create, [
|
|
64
64
|
"John",
|
|
@@ -69,7 +69,7 @@ const products = await db.query(queries.products.getAll);
|
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
72
|
-
##
|
|
72
|
+
## Use Cases
|
|
73
73
|
|
|
74
74
|
### **1. Flat Queries (no nesting)**
|
|
75
75
|
|
|
@@ -165,7 +165,7 @@ const results = await db.transaction(
|
|
|
165
165
|
[
|
|
166
166
|
["Alice", "alice@email.com"],
|
|
167
167
|
["Bob", "bob@email.com"],
|
|
168
|
-
]
|
|
168
|
+
],
|
|
169
169
|
);
|
|
170
170
|
|
|
171
171
|
console.log("Users created:", results.length);
|
|
@@ -200,7 +200,7 @@ const results = await db.transaction(
|
|
|
200
200
|
["John", "john@email.com"],
|
|
201
201
|
[null, "John's bio"], // null will be replaced by user.id
|
|
202
202
|
],
|
|
203
|
-
dependencies
|
|
203
|
+
dependencies,
|
|
204
204
|
);
|
|
205
205
|
|
|
206
206
|
console.log("User created:", results[0].rows[0]);
|
|
@@ -209,7 +209,7 @@ console.log("Profile created:", results[1].rows[0]);
|
|
|
209
209
|
|
|
210
210
|
---
|
|
211
211
|
|
|
212
|
-
##
|
|
212
|
+
## Log Levels
|
|
213
213
|
|
|
214
214
|
```typescript
|
|
215
215
|
export type LogLevel = 0 | 1 | 2 | 3;
|
|
@@ -230,7 +230,7 @@ db.setLogLevel(1); // Only errors
|
|
|
230
230
|
|
|
231
231
|
---
|
|
232
232
|
|
|
233
|
-
##
|
|
233
|
+
## Backward Compatibility
|
|
234
234
|
|
|
235
235
|
The package is 100% compatible with existing code:
|
|
236
236
|
|
|
@@ -253,7 +253,7 @@ await db.query(queries.users.getById, [123]);
|
|
|
253
253
|
|
|
254
254
|
---
|
|
255
255
|
|
|
256
|
-
##
|
|
256
|
+
## TypeScript
|
|
257
257
|
|
|
258
258
|
The package includes complete type definitions:
|
|
259
259
|
|
|
@@ -272,7 +272,35 @@ import {
|
|
|
272
272
|
|
|
273
273
|
---
|
|
274
274
|
|
|
275
|
-
##
|
|
275
|
+
## API Reference
|
|
276
|
+
|
|
277
|
+
### `db.bulkInsert(table, columns, rows, options?)`
|
|
278
|
+
|
|
279
|
+
Performs a bulk insert using PostgreSQL's COPY ... FROM STDIN. Optionally returns specified fields from inserted rows.
|
|
280
|
+
|
|
281
|
+
**Parameters:**
|
|
282
|
+
|
|
283
|
+
- `table: string` - Target table name
|
|
284
|
+
- `columns: string[]` - Columns to insert
|
|
285
|
+
- `rows: any[][]` - Array of row values
|
|
286
|
+
- `options?: BulkInsertOptions & { returnFields?: string[] }` - CSV formatting and fields to return
|
|
287
|
+
|
|
288
|
+
**Returns:** `{ inserted: number, fields?: any[] }`
|
|
289
|
+
|
|
290
|
+
**Example:**
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
const result = await db.bulkInsert(
|
|
294
|
+
"users",
|
|
295
|
+
["name", "email"],
|
|
296
|
+
[
|
|
297
|
+
["Alice", "alice@email.com"],
|
|
298
|
+
["Bob", "bob@email.com"],
|
|
299
|
+
],
|
|
300
|
+
{ header: false, returnFields: ["id", "email"] },
|
|
301
|
+
);
|
|
302
|
+
// result.fields will be an array of objects with the requested fields
|
|
303
|
+
```
|
|
276
304
|
|
|
277
305
|
### `createQueries(queries)`
|
|
278
306
|
|
|
@@ -362,7 +390,7 @@ await db.transaction(
|
|
|
362
390
|
["John", "john@email.com"],
|
|
363
391
|
[null, "Bio"],
|
|
364
392
|
],
|
|
365
|
-
[{ sourceIndex: 0, targetIndex: 1, targetParamIndex: 0 }]
|
|
393
|
+
[{ sourceIndex: 0, targetIndex: 1, targetParamIndex: 0 }],
|
|
366
394
|
);
|
|
367
395
|
```
|
|
368
396
|
|
|
@@ -419,7 +447,7 @@ await db.bulkInsert(
|
|
|
419
447
|
["Bulk 1", "bulk1@example.com"],
|
|
420
448
|
["Bulk 2", "bulk2@example.com"],
|
|
421
449
|
],
|
|
422
|
-
{ header: false }
|
|
450
|
+
{ header: false },
|
|
423
451
|
);
|
|
424
452
|
```
|
|
425
453
|
|
|
@@ -148,12 +148,13 @@ declare class Database {
|
|
|
148
148
|
* @param {string} table - The target table name.
|
|
149
149
|
* @param {string[]} columns - Array of column names to insert into (order matters).
|
|
150
150
|
* @param {(string | number | boolean | Date | null | undefined)[][]} rows - Array of row arrays, each representing a record.
|
|
151
|
-
* @param {BulkInsertOptions} [options] - Optional CSV formatting options
|
|
152
|
-
* @returns {Promise<{ inserted: number }>} Number of rows
|
|
151
|
+
* @param {BulkInsertOptions & { returnFields?: string[] }} [options] - Optional CSV formatting options and fields to return.
|
|
152
|
+
* @returns {Promise<{ inserted: number; fields?: any[] }>} Number of rows inserted and optionally returned fields.
|
|
153
153
|
* @throws {Error} If the operation fails or the pool is not active.
|
|
154
154
|
*
|
|
155
155
|
* @example
|
|
156
156
|
* ```typescript
|
|
157
|
+
* // Basic bulk insert
|
|
157
158
|
* await db.bulkInsert(
|
|
158
159
|
* "users",
|
|
159
160
|
* ["name", "email"],
|
|
@@ -163,10 +164,25 @@ declare class Database {
|
|
|
163
164
|
* ],
|
|
164
165
|
* { header: false }
|
|
165
166
|
* );
|
|
167
|
+
*
|
|
168
|
+
* // Bulk insert returning specified fields
|
|
169
|
+
* const result = await db.bulkInsert(
|
|
170
|
+
* "users",
|
|
171
|
+
* ["name", "email"],
|
|
172
|
+
* [
|
|
173
|
+
* ["Alice", "alice@email.com"],
|
|
174
|
+
* ["Bob", "bob@email.com"]
|
|
175
|
+
* ],
|
|
176
|
+
* { header: false, returnFields: ["id", "email"] }
|
|
177
|
+
* );
|
|
178
|
+
* // result.fields will be an array of objects with the requested fields
|
|
166
179
|
* ```
|
|
167
180
|
*/
|
|
168
|
-
bulkInsert(table: string, columns: string[], rows: (string | number | boolean | Date | null | undefined)[][], options?: BulkInsertOptions
|
|
181
|
+
bulkInsert(table: string, columns: string[], rows: (string | number | boolean | Date | null | undefined)[][], options?: BulkInsertOptions & {
|
|
182
|
+
returnFields?: string[];
|
|
183
|
+
}): Promise<{
|
|
169
184
|
inserted: number;
|
|
185
|
+
fields?: any[];
|
|
170
186
|
}>;
|
|
171
187
|
/**
|
|
172
188
|
* Generator that yields CSV lines for bulk insert operations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../components/Database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,MAAM,IAAI,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,cAAM,QAAQ;IACZ,gCAAgC;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,iCAAiC;IACjC,OAAO,CAAC,IAAI,CAAQ;IAEpB,sDAAsD;IACtD,OAAO,CAAC,OAAO,CAAY;IAE3B,sBAAsB;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,6BAA6B;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;;;;OAOG;IACH,OAAO;IAOP;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;WACW,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,QAAQ;IA6B1E;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAgChB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;;;;;;;;;;;OAiBG;IACG,SAAS,CACb,KAAK,EAAE,MAAM,GAAG,cAAc,EAC9B,MAAM,CAAC,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,WAAW,CAAC;IA6BvB;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BrE
|
|
1
|
+
{"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../components/Database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,MAAM,IAAI,CAAC;AAMnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,cAAM,QAAQ;IACZ,gCAAgC;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,iCAAiC;IACjC,OAAO,CAAC,IAAI,CAAQ;IAEpB,sDAAsD;IACtD,OAAO,CAAC,OAAO,CAAY;IAE3B,sBAAsB;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,6BAA6B;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;;;;OAOG;IACH,OAAO;IAOP;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;WACW,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,QAAQ;IA6B1E;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAgChB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;;;;;;;;;;;OAiBG;IACG,SAAS,CACb,KAAK,EAAE,MAAM,GAAG,cAAc,EAC9B,MAAM,CAAC,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,WAAW,CAAC;IA6BvB;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,EAC/D,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACxD,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IA8DhD;;;;;;;;;;;OAWG;IACH,OAAO,CAAE,gBAAgB;IAkBzB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,cAAc,EAC9B,MAAM,CAAC,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,WAAW,CAAC;IAoBvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,WAAW,CACf,UAAU,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,EACvC,WAAW,EAAE,GAAG,EAAE,EAAE,EACpB,YAAY,GAAE,UAAU,EAAO,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC;IAwEzB;;;;;;;;;;;;;;;;OAgBG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;CAI/C;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -272,12 +272,13 @@ class Database {
|
|
|
272
272
|
* @param {string} table - The target table name.
|
|
273
273
|
* @param {string[]} columns - Array of column names to insert into (order matters).
|
|
274
274
|
* @param {(string | number | boolean | Date | null | undefined)[][]} rows - Array of row arrays, each representing a record.
|
|
275
|
-
* @param {BulkInsertOptions} [options] - Optional CSV formatting options
|
|
276
|
-
* @returns {Promise<{ inserted: number }>} Number of rows
|
|
275
|
+
* @param {BulkInsertOptions & { returnFields?: string[] }} [options] - Optional CSV formatting options and fields to return.
|
|
276
|
+
* @returns {Promise<{ inserted: number; fields?: any[] }>} Number of rows inserted and optionally returned fields.
|
|
277
277
|
* @throws {Error} If the operation fails or the pool is not active.
|
|
278
278
|
*
|
|
279
279
|
* @example
|
|
280
280
|
* ```typescript
|
|
281
|
+
* // Basic bulk insert
|
|
281
282
|
* await db.bulkInsert(
|
|
282
283
|
* "users",
|
|
283
284
|
* ["name", "email"],
|
|
@@ -287,14 +288,29 @@ class Database {
|
|
|
287
288
|
* ],
|
|
288
289
|
* { header: false }
|
|
289
290
|
* );
|
|
291
|
+
*
|
|
292
|
+
* // Bulk insert returning specified fields
|
|
293
|
+
* const result = await db.bulkInsert(
|
|
294
|
+
* "users",
|
|
295
|
+
* ["name", "email"],
|
|
296
|
+
* [
|
|
297
|
+
* ["Alice", "alice@email.com"],
|
|
298
|
+
* ["Bob", "bob@email.com"]
|
|
299
|
+
* ],
|
|
300
|
+
* { header: false, returnFields: ["id", "email"] }
|
|
301
|
+
* );
|
|
302
|
+
* // result.fields will be an array of objects with the requested fields
|
|
290
303
|
* ```
|
|
291
304
|
*/
|
|
292
305
|
async bulkInsert(table, columns, rows, options) {
|
|
293
306
|
this.ensurePoolActive();
|
|
294
307
|
const delimiter = options?.delimiter ?? ",";
|
|
295
308
|
const includeHeader = options?.header ?? false;
|
|
309
|
+
const returnFields = options?.returnFields;
|
|
296
310
|
// Use quoteIdentifier for table and columns
|
|
297
|
-
const quotedTable = (
|
|
311
|
+
const quotedTable = table.includes(".")
|
|
312
|
+
? table.split(".").map(quoteIdentifier_1.quoteIdentifier).join(".")
|
|
313
|
+
: (0, quoteIdentifier_1.quoteIdentifier)(table);
|
|
298
314
|
const quotedColumns = columns.map((col) => (0, quoteIdentifier_1.quoteIdentifier)(col)).join(", ");
|
|
299
315
|
const copySql = `COPY ${quotedTable} (${quotedColumns}) FROM STDIN WITH (FORMAT csv, DELIMITER '${delimiter}', HEADER ${includeHeader ? "true" : "false"})`;
|
|
300
316
|
const client = await this.pool.connect();
|
|
@@ -307,19 +323,32 @@ class Database {
|
|
|
307
323
|
copyStream.on("finish", resolve);
|
|
308
324
|
csvStream.pipe(copyStream);
|
|
309
325
|
});
|
|
310
|
-
this.logger.info("Bulk insert
|
|
326
|
+
this.logger.info("Bulk insert executed", {
|
|
311
327
|
table,
|
|
312
328
|
rows: rows.length,
|
|
313
329
|
});
|
|
330
|
+
if (returnFields &&
|
|
331
|
+
Array.isArray(returnFields) &&
|
|
332
|
+
returnFields.length > 0) {
|
|
333
|
+
// NOTE: This approach assumes no concurrent inserts from other clients.
|
|
334
|
+
// It is recommended to use a unique field (e.g., serial id or timestamp) for reliability.
|
|
335
|
+
const fieldsSql = returnFields.map(quoteIdentifier_1.quoteIdentifier).join(", ");
|
|
336
|
+
const orderBy = returnFields.map(quoteIdentifier_1.quoteIdentifier).join(", ");
|
|
337
|
+
const selectSql = `SELECT ${fieldsSql} FROM ${quotedTable} ORDER BY ${orderBy} DESC LIMIT ${rows.length}`;
|
|
338
|
+
const res = await client.query(selectSql);
|
|
339
|
+
// Return in insertion order (ascending)
|
|
340
|
+
const fields = res.rows.reverse();
|
|
341
|
+
return { inserted: rows.length, fields };
|
|
342
|
+
}
|
|
314
343
|
return { inserted: rows.length };
|
|
315
344
|
}
|
|
316
345
|
catch (error) {
|
|
317
|
-
this.logger.error("Error
|
|
346
|
+
this.logger.error("Error in bulk insert", error);
|
|
318
347
|
throw error;
|
|
319
348
|
}
|
|
320
349
|
finally {
|
|
321
350
|
client.release();
|
|
322
|
-
this.logger.debug("Client
|
|
351
|
+
this.logger.debug("Client released after bulk insert");
|
|
323
352
|
}
|
|
324
353
|
}
|
|
325
354
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../components/Database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../components/Database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Type representing a query reference with autocomplete.
|
|
3
|
+
* Contains the internal path so Database can find the SQL.
|
|
4
4
|
*/
|
|
5
5
|
export type QueryReference = {
|
|
6
6
|
__queryKey: string;
|
|
@@ -9,15 +9,15 @@ export type QueryReference = {
|
|
|
9
9
|
valueOf: () => string;
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Main function that converts queries (flat or nested) into objects with autocomplete.
|
|
13
|
+
* No manual destructuring required. The returned object already contains everything.
|
|
14
14
|
*
|
|
15
|
-
* @param queries -
|
|
16
|
-
* @returns
|
|
15
|
+
* @param queries - Object with queries (supports flat, nested, or mixed)
|
|
16
|
+
* @returns Object with queries directly accessible and internal __flatMap
|
|
17
17
|
*
|
|
18
18
|
* @example
|
|
19
19
|
* ```typescript
|
|
20
|
-
* //
|
|
20
|
+
* // Case 1: Plain queries
|
|
21
21
|
* const queries = createQueries({
|
|
22
22
|
* getUser: "SELECT * FROM users WHERE id = $1",
|
|
23
23
|
* createUser: "INSERT INTO users (name) VALUES ($1) RETURNING *"
|
|
@@ -27,7 +27,7 @@ export type QueryReference = {
|
|
|
27
27
|
* await db.query(queries.getUser, [123]);
|
|
28
28
|
* await db.query(queries.createUser, ["John"]);
|
|
29
29
|
*
|
|
30
|
-
* //
|
|
30
|
+
* // Case 2: Nested queries
|
|
31
31
|
* const queries = createQueries({
|
|
32
32
|
* users: {
|
|
33
33
|
* getById: "SELECT * FROM users WHERE id = $1",
|
|
@@ -42,7 +42,7 @@ export type QueryReference = {
|
|
|
42
42
|
* await db.query(queries.users.getById, [123]);
|
|
43
43
|
* await db.query(queries.products.getAll);
|
|
44
44
|
*
|
|
45
|
-
* //
|
|
45
|
+
* // Case 3: Mixed queries
|
|
46
46
|
* const queries = createQueries({
|
|
47
47
|
* connection: "SELECT NOW()",
|
|
48
48
|
* users: {
|
|
@@ -54,7 +54,6 @@ export type QueryReference = {
|
|
|
54
54
|
* await db.query(queries.connection);
|
|
55
55
|
* await db.query(queries.users.getById, [123]);
|
|
56
56
|
*
|
|
57
|
-
* // ✅ OPCIONAL: Desestructurar solo si quieres
|
|
58
57
|
* const { users, products } = queries;
|
|
59
58
|
* await db.query(users.getById, [123]);
|
|
60
59
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueries.d.ts","sourceRoot":"","sources":["../../utils/createQueries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"createQueries.d.ts","sourceRoot":"","sources":["../../utils/createQueries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,GAwE5C,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CACnE"}
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createQueries = createQueries;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Main function that converts queries (flat or nested) into objects with autocomplete.
|
|
6
|
+
* No manual destructuring required. The returned object already contains everything.
|
|
7
7
|
*
|
|
8
|
-
* @param queries -
|
|
9
|
-
* @returns
|
|
8
|
+
* @param queries - Object with queries (supports flat, nested, or mixed)
|
|
9
|
+
* @returns Object with queries directly accessible and internal __flatMap
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```typescript
|
|
13
|
-
* //
|
|
13
|
+
* // Case 1: Plain queries
|
|
14
14
|
* const queries = createQueries({
|
|
15
15
|
* getUser: "SELECT * FROM users WHERE id = $1",
|
|
16
16
|
* createUser: "INSERT INTO users (name) VALUES ($1) RETURNING *"
|
|
@@ -20,7 +20,7 @@ exports.createQueries = createQueries;
|
|
|
20
20
|
* await db.query(queries.getUser, [123]);
|
|
21
21
|
* await db.query(queries.createUser, ["John"]);
|
|
22
22
|
*
|
|
23
|
-
* //
|
|
23
|
+
* // Case 2: Nested queries
|
|
24
24
|
* const queries = createQueries({
|
|
25
25
|
* users: {
|
|
26
26
|
* getById: "SELECT * FROM users WHERE id = $1",
|
|
@@ -35,7 +35,7 @@ exports.createQueries = createQueries;
|
|
|
35
35
|
* await db.query(queries.users.getById, [123]);
|
|
36
36
|
* await db.query(queries.products.getAll);
|
|
37
37
|
*
|
|
38
|
-
* //
|
|
38
|
+
* // Case 3: Mixed queries
|
|
39
39
|
* const queries = createQueries({
|
|
40
40
|
* connection: "SELECT NOW()",
|
|
41
41
|
* users: {
|
|
@@ -47,20 +47,19 @@ exports.createQueries = createQueries;
|
|
|
47
47
|
* await db.query(queries.connection);
|
|
48
48
|
* await db.query(queries.users.getById, [123]);
|
|
49
49
|
*
|
|
50
|
-
* // ✅ OPCIONAL: Desestructurar solo si quieres
|
|
51
50
|
* const { users, products } = queries;
|
|
52
51
|
* await db.query(users.getById, [123]);
|
|
53
52
|
* ```
|
|
54
53
|
*/
|
|
55
54
|
function createQueries(queries) {
|
|
56
|
-
// flatMap:
|
|
55
|
+
// flatMap: flat dictionary for Database
|
|
57
56
|
// "users.getById" -> "SELECT * FROM users WHERE id = $1"
|
|
58
57
|
// "getUser" -> "SELECT * FROM users WHERE id = $1"
|
|
59
58
|
const flatMap = {};
|
|
60
59
|
/**
|
|
61
|
-
*
|
|
60
|
+
* Recursive function that flattens queries (flat or nested)
|
|
62
61
|
*
|
|
63
|
-
*
|
|
62
|
+
* Examples:
|
|
64
63
|
* - getUser: "SELECT..." -> "getUser": "SELECT..."
|
|
65
64
|
* - users: { getById: "SELECT..." } -> "users.getById": "SELECT..."
|
|
66
65
|
*/
|
|
@@ -68,34 +67,31 @@ function createQueries(queries) {
|
|
|
68
67
|
for (const [key, value] of Object.entries(obj)) {
|
|
69
68
|
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
70
69
|
if (typeof value === "string") {
|
|
71
|
-
// Es un SQL string, guardarlo en flatMap
|
|
72
70
|
flatMap[fullKey] = value;
|
|
73
71
|
}
|
|
74
72
|
else if (typeof value === "object" && value !== null) {
|
|
75
|
-
// Es un objeto anidado, continuar recursivamente
|
|
76
73
|
flatten(value, fullKey);
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
|
-
// Aplanar todas las queries (planas y anidadas)
|
|
81
77
|
flatten(queries);
|
|
82
78
|
/**
|
|
83
|
-
* Proxy
|
|
84
|
-
*
|
|
79
|
+
* Proxy that intercepts property access
|
|
80
|
+
* Handles both flat and nested queries
|
|
85
81
|
*/
|
|
86
82
|
function createProxy(target, path = []) {
|
|
87
83
|
return new Proxy(target, {
|
|
88
84
|
get(obj, prop) {
|
|
89
|
-
//
|
|
85
|
+
// Allow access to __flatMap
|
|
90
86
|
if (prop === "__flatMap") {
|
|
91
87
|
return flatMap;
|
|
92
88
|
}
|
|
93
|
-
//
|
|
89
|
+
// Ignore internal Node.js symbols
|
|
94
90
|
if (typeof prop === "symbol") {
|
|
95
91
|
return undefined;
|
|
96
92
|
}
|
|
97
93
|
const value = obj[prop];
|
|
98
|
-
//
|
|
94
|
+
// CASE 1: It's a string (SQL) - flat query or leaf of nesting
|
|
99
95
|
if (typeof value === "string") {
|
|
100
96
|
const fullPath = [...path, prop].join(".");
|
|
101
97
|
return {
|
|
@@ -105,7 +101,7 @@ function createQueries(queries) {
|
|
|
105
101
|
valueOf: () => fullPath,
|
|
106
102
|
};
|
|
107
103
|
}
|
|
108
|
-
//
|
|
104
|
+
// CASE 2: It's an object - nested query
|
|
109
105
|
if (typeof value === "object" && value !== null) {
|
|
110
106
|
return createProxy(value, [...path, prop]);
|
|
111
107
|
}
|
|
@@ -113,9 +109,9 @@ function createQueries(queries) {
|
|
|
113
109
|
},
|
|
114
110
|
});
|
|
115
111
|
}
|
|
116
|
-
//
|
|
112
|
+
// Create the proxy with the queries
|
|
117
113
|
const proxiedQueries = createProxy(queries);
|
|
118
|
-
//
|
|
114
|
+
// Return the proxy directly with __flatMap accessible
|
|
119
115
|
return proxiedQueries;
|
|
120
116
|
}
|
|
121
117
|
//# sourceMappingURL=createQueries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueries.js","sourceRoot":"","sources":["../../utils/createQueries.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createQueries.js","sourceRoot":"","sources":["../../utils/createQueries.ts"],"names":[],"mappings":";;AA6DA,sCAyEC;AA3HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,SAAgB,aAAa,CAAgC,OAAU;IACrE,wCAAwC;IACxC,yDAAyD;IACzD,mDAAmD;IACnD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C;;;;;;OAMG;IACH,SAAS,OAAO,CAAC,GAAQ,EAAE,SAAiB,EAAE;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAElD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACvD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjB;;;OAGG;IACH,SAAS,WAAW,CAAC,MAAW,EAAE,OAAiB,EAAE;QACnD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,GAAG,CAAC,GAAG,EAAE,IAAY;gBACnB,4BAA4B;gBAC5B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAED,kCAAkC;gBAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBAExB,8DAA8D;gBAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAE3C,OAAO;wBACL,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,KAAK;wBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;wBACxB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ;qBACN,CAAC;gBACtB,CAAC;gBAED,wCAAwC;gBACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChD,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5C,sDAAsD;IACtD,OAAO,cAA2D,CAAC;AACrE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crane-technologies/database",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "PostgreSQL database component with connection pooling, transactions, dependency management and TypeScript autocomplete",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|