pqb 0.42.6 → 0.42.7

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, toSnakeCase, columnDefaultArgumentToCode, columnErrorMessagesToCode, getValueKey, emptyArray, addValue, isExpression, joinTruthy, stringDataToCode, getDefaultLanguage, dateDataToCode, returnArg as returnArg$1, noop, pushOrNewArrayToObject, arrayDataToCode, numberDataToCode, logColors, applyTransforms, callWithThis, setParserToQuery, isRawSQL, pushOrNewArray, setDefaultNowFn, setDefaultLanguage, setCurrentColumnName, makeTimestampsHelpers, setAdapterConnectRetry, isObjectEmpty, ValExpression, applyMixins, snakeCaseKey } from 'orchid-core';
1
+ import { ExpressionTypeMethod, Expression, RawSQLBase, emptyObject, isTemplateLiteralArgs, ColumnTypeBase, setColumnData, pushColumnData, templateLiteralToSQL as templateLiteralToSQL$1, quoteObjectKey, toArray, singleQuote, addCode, singleQuoteArray, objectHasValues, toSnakeCase, columnDefaultArgumentToCode, columnErrorMessagesToCode, getValueKey, emptyArray, addValue, isExpression, joinTruthy, stringDataToCode, getDefaultLanguage, dateDataToCode, returnArg as returnArg$1, noop, pushOrNewArrayToObject, arrayDataToCode, numberDataToCode, logColors, applyTransforms, callWithThis, setParserToQuery, isRawSQL, pushOrNewArray, setDefaultNowFn, setDefaultLanguage, setCurrentColumnName, makeTimestampsHelpers, 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';
@@ -362,7 +362,21 @@ class ColumnType extends ColumnTypeBase {
362
362
  */
363
363
  generated(...args) {
364
364
  const sql = raw(...args);
365
- return setColumnData(this, "generated", (...args2) => sql.toSQL(...args2));
365
+ return setColumnData(this, "generated", {
366
+ toSQL(ctx, quoted) {
367
+ return sql.toSQL(ctx, quoted);
368
+ },
369
+ toCode() {
370
+ let sql2 = ".generated";
371
+ if (Array.isArray(args[0])) {
372
+ sql2 += templateLiteralToSQL$1(args);
373
+ } else {
374
+ const { raw: raw2, values } = args[0];
375
+ sql2 += `({ raw: '${raw2.replace(/'/g, "\\'")}'${values ? `, values: ${JSON.stringify(values)}` : ""} })`;
376
+ }
377
+ return sql2;
378
+ }
379
+ });
366
380
  }
367
381
  }
368
382
 
@@ -726,6 +740,9 @@ const columnCode = (type, ctx, key, code) => {
726
740
  } else {
727
741
  code[0].unshift(prepend);
728
742
  }
743
+ if (data.generated) {
744
+ addCode(code, data.generated.toCode());
745
+ }
729
746
  if (data.primaryKey) {
730
747
  addCode(
731
748
  code,
@@ -1320,32 +1337,59 @@ class TsVectorColumn extends ColumnType {
1320
1337
  * @param args
1321
1338
  */
1322
1339
  generated(...args) {
1323
- return setColumnData(this, "generated", (ctx, quotedAs) => {
1340
+ const arg = args[0];
1341
+ if (typeof arg === "object" && "raw" in arg) {
1342
+ return super.generated(...args);
1343
+ }
1344
+ const toSQL = (ctx) => {
1324
1345
  const first = args[0];
1325
- if (typeof first === "string" || !("raw" in first)) {
1326
- const target = typeof first === "string" ? args[1] : first;
1327
- const language = typeof first === "string" ? first : this.defaultLanguage;
1328
- const { snakeCase } = ctx;
1329
- let sql;
1330
- if (Array.isArray(target)) {
1331
- const columns = target.length === 1 ? `"${snakeCase ? toSnakeCase(target[0]) : target[0]}"` : target.map(
1332
- (column) => `coalesce("${snakeCase ? toSnakeCase(column) : column}", '')`
1333
- ).join(` || ' ' || `);
1334
- sql = `to_tsvector('${language}', ${columns})`;
1346
+ const target = typeof first === "string" ? args[1] : first;
1347
+ const language = typeof first === "string" ? first : this.defaultLanguage;
1348
+ const { snakeCase } = ctx;
1349
+ let sql;
1350
+ if (Array.isArray(target)) {
1351
+ const columns = target.length === 1 ? `"${snakeCase ? toSnakeCase(target[0]) : target[0]}"` : target.map(
1352
+ (column) => `coalesce("${snakeCase ? toSnakeCase(column) : column}", '')`
1353
+ ).join(` || ' ' || `);
1354
+ sql = `to_tsvector('${language}', ${columns})`;
1355
+ } else {
1356
+ for (const key in target) {
1357
+ sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${snakeCase ? toSnakeCase(key) : key}", '')), '${target[key]}')`;
1358
+ }
1359
+ if (sql) {
1360
+ sql += ")";
1335
1361
  } else {
1336
- for (const key in target) {
1337
- sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${snakeCase ? toSnakeCase(key) : key}", '')), '${target[key]}')`;
1338
- }
1339
- if (sql) {
1340
- sql += ")";
1341
- } else {
1342
- throw new Error("Empty target in the text search generated column");
1343
- }
1362
+ throw new Error("Empty target in the text search generated column");
1344
1363
  }
1345
- return sql;
1364
+ }
1365
+ return sql;
1366
+ };
1367
+ const toCode = () => {
1368
+ let code = ".generated(";
1369
+ const first = args[0];
1370
+ let target;
1371
+ if (typeof first === "string") {
1372
+ code += `'${first}', `;
1373
+ target = args[1];
1346
1374
  } else {
1347
- return raw(...args).toSQL(ctx, quotedAs);
1375
+ target = args[0];
1348
1376
  }
1377
+ if (Array.isArray(target)) {
1378
+ code += `[${target.map((x) => `'${x}'`).join(", ")}]`;
1379
+ } else {
1380
+ const pairs = [];
1381
+ for (const key in target) {
1382
+ pairs.push(
1383
+ `${quoteObjectKey(key)}: '${target[key]}'`
1384
+ );
1385
+ }
1386
+ code += `{ ${pairs.join(", ")} }`;
1387
+ }
1388
+ return code + ")";
1389
+ };
1390
+ return setColumnData(this, "generated", {
1391
+ toSQL,
1392
+ toCode
1349
1393
  });
1350
1394
  }
1351
1395
  }