pqb 0.35.7 → 0.36.1

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.d.ts CHANGED
@@ -5095,9 +5095,9 @@ type SelectResultColumnsAndObj<T extends SelectSelf, Columns extends PropertyKey
5095
5095
  selectable: SelectAsSelectable<Obj>;
5096
5096
  } : K extends 'result' ? // Combine previously selected items, all columns if * was provided,
5097
5097
  {
5098
- [K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | keyof T['shape'] : Columns[number]) | keyof Obj as K extends Columns[number] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends Columns[number] ? T['meta']['selectable'][K]['column'] : never;
5098
+ [K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | keyof T['shape'] : Columns[number]) | keyof Obj as K extends Columns[number] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : T['meta']['selectable'][K]['column'];
5099
5099
  } & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown) : K extends 'then' ? QueryThen<GetQueryResult<T, {
5100
- [K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | keyof T['shape'] : Columns[number]) | keyof Obj as K extends Columns[number] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : K extends Columns[number] ? T['meta']['selectable'][K]['column'] : never;
5100
+ [K in ('*' extends Columns[number] ? Exclude<Columns[number], '*'> | keyof T['shape'] : Columns[number]) | keyof Obj as K extends Columns[number] ? T['meta']['selectable'][K]['as'] : K]: K extends keyof Obj ? SelectAsValueResult<T, Obj[K]> : T['meta']['selectable'][K]['column'];
5101
5101
  } & (T['meta']['hasSelect'] extends true ? Omit<T['result'], Columns[number]> : unknown)>> : T[K];
5102
5102
  };
5103
5103
  type SelectAsSelectable<Arg> = {
@@ -7362,7 +7362,10 @@ interface ColumnData extends ColumnDataBase {
7362
7362
  compression?: string;
7363
7363
  foreignKeys?: TableData.ColumnReferences[];
7364
7364
  identity?: TableData.Identity;
7365
- generated?: RawSQLBase;
7365
+ generated?(ctx: {
7366
+ values: unknown[];
7367
+ snakeCase: boolean | undefined;
7368
+ }, quotedAs?: string): string;
7366
7369
  }
7367
7370
  interface ColumnFromDbParams {
7368
7371
  isNullable?: boolean;
package/dist/index.js CHANGED
@@ -380,7 +380,8 @@ class ColumnType extends orchidCore.ColumnTypeBase {
380
380
  * @param args - raw SQL
381
381
  */
382
382
  generated(...args) {
383
- return orchidCore.setColumnData(this, "generated", raw(...args));
383
+ const sql = raw(...args);
384
+ return orchidCore.setColumnData(this, "generated", (...args2) => sql.toSQL(...args2));
384
385
  }
385
386
  }
386
387
 
@@ -461,6 +462,10 @@ const columnsShapeToCode = (shape, t) => {
461
462
  for (const key in shape) {
462
463
  if (hasTimestamps && (key === "createdAt" || key === "updatedAt"))
463
464
  continue;
465
+ const column = shape[key];
466
+ const name = column.data.name;
467
+ if (name === key)
468
+ column.data.name = void 0;
464
469
  code.push(
465
470
  ...combineCodeElements([
466
471
  `${orchidCore.quoteObjectKey(key)}: `,
@@ -468,6 +473,8 @@ const columnsShapeToCode = (shape, t) => {
468
473
  ","
469
474
  ])
470
475
  );
476
+ if (name === key)
477
+ column.data.name = name;
471
478
  }
472
479
  if (hasTimestamps) {
473
480
  code.push(`...${t}.timestamps(),`);
@@ -1517,26 +1524,33 @@ class TsVectorColumn extends ColumnType {
1517
1524
  * @param args
1518
1525
  */
1519
1526
  generated(...args) {
1520
- const first = args[0];
1521
- if (typeof first === "string" || !("raw" in first)) {
1522
- const target = typeof first === "string" ? args[1] : first;
1523
- const language = typeof first === "string" ? first : this.defaultLanguage;
1524
- let sql;
1525
- if (Array.isArray(target)) {
1526
- const columns = target.length === 1 ? `"${target[0]}"` : target.map((column) => `coalesce("${column}", '')`).join(` || ' ' || `);
1527
- sql = `to_tsvector('${language}', ${columns})`;
1528
- } else {
1529
- for (const key in target) {
1530
- sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${key}", '')), '${target[key]}')`;
1527
+ return orchidCore.setColumnData(this, "generated", (ctx, quotedAs) => {
1528
+ const first = args[0];
1529
+ if (typeof first === "string" || !("raw" in first)) {
1530
+ const target = typeof first === "string" ? args[1] : first;
1531
+ const language = typeof first === "string" ? first : this.defaultLanguage;
1532
+ const { snakeCase } = ctx;
1533
+ let sql;
1534
+ if (Array.isArray(target)) {
1535
+ const columns = target.length === 1 ? `"${snakeCase ? orchidCore.toSnakeCase(target[0]) : target[0]}"` : target.map(
1536
+ (column) => `coalesce("${snakeCase ? orchidCore.toSnakeCase(column) : column}", '')`
1537
+ ).join(` || ' ' || `);
1538
+ sql = `to_tsvector('${language}', ${columns})`;
1539
+ } else {
1540
+ for (const key in target) {
1541
+ sql = (sql ? sql + " || " : "(") + `setweight(to_tsvector('${language}', coalesce("${snakeCase ? orchidCore.toSnakeCase(key) : key}", '')), '${target[key]}')`;
1542
+ }
1543
+ if (sql) {
1544
+ sql += ")";
1545
+ } else {
1546
+ throw new Error("Empty target in the text search generated column");
1547
+ }
1531
1548
  }
1532
- if (sql)
1533
- sql += ")";
1549
+ return sql;
1550
+ } else {
1551
+ return raw(...args).toSQL(ctx, quotedAs);
1534
1552
  }
1535
- const arr = [sql];
1536
- arr.raw = arr;
1537
- args = [arr];
1538
- }
1539
- return super.generated(...args);
1553
+ });
1540
1554
  }
1541
1555
  }
1542
1556
  class TsQueryColumn extends ColumnType {