pqb 0.35.7 → 0.36.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/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { ExpressionTypeMethod, Expression, RawSQLBase, emptyObject, isTemplateLiteralArgs, ColumnTypeBase, setColumnData, pushColumnData, quoteObjectKey, toArray, singleQuote, addCode, singleQuoteArray, objectHasValues, columnDefaultArgumentToCode, columnErrorMessagesToCode, getValueKey, addValue, isExpression, joinTruthy, numberDataToCode, stringDataToCode, getDefaultLanguage, dateDataToCode, pushOrNewArrayToObject, returnArg as returnArg$1, noop, arrayDataToCode, emptyArray, applyTransforms, callWithThis, setParserToQuery, isRawSQL, pushOrNewArray, setDefaultNowFn, setDefaultLanguage, makeTimestampsHelpers, setCurrentColumnName, setAdapterConnectRetry, isObjectEmpty, ValExpression, applyMixins, toSnakeCase, snakeCaseKey } from 'orchid-core';
1
+ import { ExpressionTypeMethod, Expression, RawSQLBase, emptyObject, isTemplateLiteralArgs, ColumnTypeBase, setColumnData, pushColumnData, quoteObjectKey, toArray, singleQuote, addCode, singleQuoteArray, objectHasValues, columnDefaultArgumentToCode, columnErrorMessagesToCode, getValueKey, addValue, isExpression, joinTruthy, numberDataToCode, stringDataToCode, getDefaultLanguage, toSnakeCase, dateDataToCode, pushOrNewArrayToObject, returnArg as returnArg$1, noop, arrayDataToCode, emptyArray, applyTransforms, callWithThis, setParserToQuery, isRawSQL, pushOrNewArray, setDefaultNowFn, setDefaultLanguage, makeTimestampsHelpers, setCurrentColumnName, setAdapterConnectRetry, isObjectEmpty, ValExpression, applyMixins, snakeCaseKey } from 'orchid-core';
2
2
  import pg from 'pg';
3
3
  import { inspect } from 'node:util';
4
4
  import { AsyncLocalStorage } from 'node:async_hooks';
@@ -378,7 +378,8 @@ class ColumnType extends ColumnTypeBase {
378
378
  * @param args - raw SQL
379
379
  */
380
380
  generated(...args) {
381
- return setColumnData(this, "generated", raw(...args));
381
+ const sql = raw(...args);
382
+ return setColumnData(this, "generated", (...args2) => sql.toSQL(...args2));
382
383
  }
383
384
  }
384
385
 
@@ -459,6 +460,10 @@ const columnsShapeToCode = (shape, t) => {
459
460
  for (const key in shape) {
460
461
  if (hasTimestamps && (key === "createdAt" || key === "updatedAt"))
461
462
  continue;
463
+ const column = shape[key];
464
+ const name = column.data.name;
465
+ if (name === key)
466
+ column.data.name = void 0;
462
467
  code.push(
463
468
  ...combineCodeElements([
464
469
  `${quoteObjectKey(key)}: `,
@@ -466,6 +471,8 @@ const columnsShapeToCode = (shape, t) => {
466
471
  ","
467
472
  ])
468
473
  );
474
+ if (name === key)
475
+ column.data.name = name;
469
476
  }
470
477
  if (hasTimestamps) {
471
478
  code.push(`...${t}.timestamps(),`);
@@ -1515,26 +1522,33 @@ class TsVectorColumn extends ColumnType {
1515
1522
  * @param args
1516
1523
  */
1517
1524
  generated(...args) {
1518
- const first = args[0];
1519
- if (typeof first === "string" || !("raw" in first)) {
1520
- const target = typeof first === "string" ? args[1] : first;
1521
- const language = typeof first === "string" ? first : this.defaultLanguage;
1522
- let sql;
1523
- if (Array.isArray(target)) {
1524
- const columns = target.length === 1 ? `"${target[0]}"` : target.map((column) => `coalesce("${column}", '')`).join(` || ' ' || `);
1525
- sql = `to_tsvector('${language}', ${columns})`;
1526
- } else {
1527
- for (const key in target) {
1528
- sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${key}", '')), '${target[key]}')`;
1525
+ return setColumnData(this, "generated", (ctx, quotedAs) => {
1526
+ const first = args[0];
1527
+ if (typeof first === "string" || !("raw" in first)) {
1528
+ const target = typeof first === "string" ? args[1] : first;
1529
+ const language = typeof first === "string" ? first : this.defaultLanguage;
1530
+ const { snakeCase } = ctx;
1531
+ let sql;
1532
+ if (Array.isArray(target)) {
1533
+ const columns = target.length === 1 ? `"${snakeCase ? toSnakeCase(target[0]) : target[0]}"` : target.map(
1534
+ (column) => `coalesce("${snakeCase ? toSnakeCase(column) : column}", '')`
1535
+ ).join(` || ' ' || `);
1536
+ sql = `to_tsvector('${language}', ${columns})`;
1537
+ } else {
1538
+ for (const key in target) {
1539
+ sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${snakeCase ? toSnakeCase(key) : key}", '')), '${target[key]}')`;
1540
+ }
1541
+ if (sql) {
1542
+ sql += ")";
1543
+ } else {
1544
+ throw new Error("Empty target in the text search generated column");
1545
+ }
1529
1546
  }
1530
- if (sql)
1531
- sql += ")";
1547
+ return sql;
1548
+ } else {
1549
+ return raw(...args).toSQL(ctx, quotedAs);
1532
1550
  }
1533
- const arr = [sql];
1534
- arr.raw = arr;
1535
- args = [arr];
1536
- }
1537
- return super.generated(...args);
1551
+ });
1538
1552
  }
1539
1553
  }
1540
1554
  class TsQueryColumn extends ColumnType {