@crane-technologies/database 3.0.4 → 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 CHANGED
@@ -1,21 +1,21 @@
1
1
  # @crane-technologies/database
2
2
 
3
- PostgreSQL database component with connection pooling, transactions, dependency management, and **TypeScript query autocomplete**.
3
+ PostgreSQL database component with connection pooling, transactions, dependency management, and TypeScript query autocomplete.
4
4
 
5
- ## Features
5
+ ## Features
6
6
 
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
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
- ## 📦 Installation
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
- ## 🚀 Quick Start
26
+ ## Quick Start
27
27
 
28
- ### **With `createQueries()` (Recommended)**
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
- ## 📚 Use Cases
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
- ## 📊 Log Levels
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
- ## 🔄 Backward Compatibility
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
- ## 🛡️ TypeScript
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
- ## 📚 API Reference
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 (delimiter, header).
152
- * @returns {Promise<{ inserted: number }>} Number of rows successfully inserted.
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): Promise<{
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;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;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,GAC1B,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IA6ChC;;;;;;;;;;;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"}
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 (delimiter, header).
276
- * @returns {Promise<{ inserted: number }>} Number of rows successfully inserted.
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,12 +288,25 @@ 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
311
  const quotedTable = table.includes(".")
298
312
  ? table.split(".").map(quoteIdentifier_1.quoteIdentifier).join(".")
@@ -309,19 +323,32 @@ class Database {
309
323
  copyStream.on("finish", resolve);
310
324
  csvStream.pipe(copyStream);
311
325
  });
312
- this.logger.info("Bulk insert ejecutado", {
326
+ this.logger.info("Bulk insert executed", {
313
327
  table,
314
328
  rows: rows.length,
315
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
+ }
316
343
  return { inserted: rows.length };
317
344
  }
318
345
  catch (error) {
319
- this.logger.error("Error en bulk insert", error);
346
+ this.logger.error("Error in bulk insert", error);
320
347
  throw error;
321
348
  }
322
349
  finally {
323
350
  client.release();
324
- this.logger.debug("Client release tras bulk insert");
351
+ this.logger.debug("Client released after bulk insert");
325
352
  }
326
353
  }
327
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
- * Tipo que representa una referencia a una query con autocompletado.
3
- * Contiene el path interno para que Database pueda encontrar el SQL.
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
- * Función principal que convierte queries (planas o anidadas) en objetos con autocompletado.
13
- * NO requiere desestructuración manual. El objeto retornado ya contiene todo.
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 - Objeto con queries (soporta planas, anidadas o mixtas)
16
- * @returns Objeto con queries accesibles directamente y __flatMap interno
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
- * // Caso 1: Queries planas (SIN desestructurar)
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
- * // Caso 2: Queries anidadas (SIN desestructurar)
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
- * // Caso 3: Queries mixtas (SIN desestructurar)
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,GA2E5C,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CACnE"}
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
- * Función principal que convierte queries (planas o anidadas) en objetos con autocompletado.
6
- * NO requiere desestructuración manual. El objeto retornado ya contiene todo.
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 - Objeto con queries (soporta planas, anidadas o mixtas)
9
- * @returns Objeto con queries accesibles directamente y __flatMap interno
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
- * // Caso 1: Queries planas (SIN desestructurar)
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
- * // Caso 2: Queries anidadas (SIN desestructurar)
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
- * // Caso 3: Queries mixtas (SIN desestructurar)
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: diccionario plano para Database
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
- * Función recursiva que aplana queries (planas o anidadas)
60
+ * Recursive function that flattens queries (flat or nested)
62
61
  *
63
- * Ejemplos:
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 que intercepta el acceso a las propiedades
84
- * Maneja tanto queries planas como anidadas
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
- // Permitir acceso a __flatMap
85
+ // Allow access to __flatMap
90
86
  if (prop === "__flatMap") {
91
87
  return flatMap;
92
88
  }
93
- // Ignorar símbolos internos de Node.js
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
- // CASO 1: Es un string (SQL) - Query plana o hoja de anidación
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
- // CASO 2: Es un objeto - Query anidada
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
- // Crear el proxy con las queries
112
+ // Create the proxy with the queries
117
113
  const proxiedQueries = createProxy(queries);
118
- // Retornar el proxy directamente con __flatMap accesible
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":";;AA8DA,sCA4EC;AA/HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,SAAgB,aAAa,CAAgC,OAAU;IACrE,2CAA2C;IAC3C,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,yCAAyC;gBACzC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACvD,iDAAiD;gBACjD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,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,8BAA8B;gBAC9B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACzB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAED,uCAAuC;gBACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBAExB,+DAA+D;gBAC/D,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,uCAAuC;gBACvC,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,iCAAiC;IACjC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5C,yDAAyD;IACzD,OAAO,cAA2D,CAAC;AACrE,CAAC"}
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.4",
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",