pqb 0.48.4 → 0.48.6

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
@@ -4335,14 +4335,14 @@ function queryFrom(self, arg) {
4335
4335
  data.batchParsers = q.q.batchParsers;
4336
4336
  }
4337
4337
  data.from = arg;
4338
- data.selectAllColumns = data.selectAllKeys = data.scopes = void 0;
4338
+ data.selectAllColumns = data.scopes = void 0;
4339
4339
  return self;
4340
4340
  }
4341
4341
  function queryFromSql(self, args) {
4342
4342
  const data = self.q;
4343
4343
  data.as || (data.as = "t");
4344
4344
  data.from = sqlQueryArgsToExpression(args);
4345
- data.selectAllColumns = data.selectAllKeys = void 0;
4345
+ data.selectAllColumns = void 0;
4346
4346
  return self;
4347
4347
  }
4348
4348
  class FromMethods {
@@ -4814,7 +4814,7 @@ const selectToSql = (ctx, table, query, quotedAs, hookSelect = query.hookSelect,
4814
4814
  if (item === "*") {
4815
4815
  if (hookSelect) {
4816
4816
  selected ?? (selected = {});
4817
- for (const key in query.selectAllKeys || query.shape) {
4817
+ for (const key in query.selectableShape) {
4818
4818
  selected[key] = quotedAs;
4819
4819
  }
4820
4820
  }
@@ -4940,10 +4940,7 @@ function selectedObjectToSQL(ctx, quotedAs, item) {
4940
4940
  }
4941
4941
  const selectAllSql = (query, quotedAs, jsonList) => {
4942
4942
  if (jsonList) {
4943
- Object.assign(
4944
- jsonList,
4945
- query.selectAllKeys || query.shape
4946
- );
4943
+ Object.assign(jsonList, query.selectableShape);
4947
4944
  }
4948
4945
  return query.join?.length ? query.selectAllColumns?.map((item) => `${quotedAs}.${item}`).join(", ") || `${quotedAs}.*` : query.selectAllColumns?.join(", ") || "*";
4949
4946
  };
@@ -6980,30 +6977,39 @@ const _chain = (fromQuery, toQuery, rel) => {
6980
6977
  const self = fromQuery;
6981
6978
  const toTable = toQuery;
6982
6979
  let query;
6980
+ let q;
6983
6981
  if (self.q.subQuery) {
6984
6982
  query = toTable;
6985
6983
  query.q.subQuery = 2;
6984
+ q = query.q;
6985
+ if (
6986
+ // `select({ q => q.rel })`: on the first relation it doesn't matter if the parent has chainMultiple
6987
+ self.q.subQuery > 1 && self.q.chainMultiple
6988
+ ) ; else if (!rel.query.q.returnsOne) {
6989
+ q.chainMultiple = true;
6990
+ }
6986
6991
  } else {
6987
6992
  query = _queryWhere(_queryAll(toTable), [
6988
6993
  {
6989
6994
  EXISTS: { q: rel.reverseJoin(self, toTable) }
6990
6995
  }
6991
6996
  ]);
6997
+ q = query.q;
6998
+ q.returnType = q.returnsOne = q.limit = void 0;
6992
6999
  }
6993
7000
  if (self.q.relChain) {
6994
- query.q.relChain = [...self.q.relChain, self];
6995
- query.q.returnType = "all";
7001
+ q.relChain = [...self.q.relChain, self];
6996
7002
  } else {
6997
- query.q.relChain = [self];
7003
+ q.relChain = [self];
6998
7004
  }
6999
7005
  const aliases = self.q.as ? { ...self.q.aliases } : { ...self.q.aliases, [self.table]: self.table };
7000
- const relAliases = query.q.aliases;
7006
+ const relAliases = q.aliases;
7001
7007
  for (const as in relAliases) {
7002
7008
  aliases[as] = _queryResolveAlias(aliases, as);
7003
7009
  }
7004
- query.q.as = aliases[query.q.as];
7005
- query.q.aliases = aliases;
7006
- query.q.joinedShapes = {
7010
+ q.as = aliases[q.as];
7011
+ q.aliases = aliases;
7012
+ q.joinedShapes = {
7007
7013
  [getQueryAs(self)]: self.q.shape,
7008
7014
  ...self.q.joinedShapes
7009
7015
  };
@@ -10238,7 +10244,7 @@ const mergableObjects = /* @__PURE__ */ new Set([
10238
10244
  "joinedBatchParsers",
10239
10245
  "selectedComputeds"
10240
10246
  ]);
10241
- const dontMergeArrays = /* @__PURE__ */ new Set(["selectAllColumns", "selectAllKeys"]);
10247
+ const dontMergeArrays = /* @__PURE__ */ new Set(["selectAllColumns"]);
10242
10248
  class MergeQueryMethods {
10243
10249
  merge(q) {
10244
10250
  const query = _clone(this);
@@ -12740,20 +12746,26 @@ class Db extends QueryMethods {
12740
12746
  );
12741
12747
  this.columns = columns;
12742
12748
  if (options.computed) applyComputedColumns(this, options.computed);
12749
+ const selectableShape = this.q.selectableShape = {};
12743
12750
  if (prepareSelectAll) {
12744
12751
  const list = [];
12745
- const keys = {};
12746
12752
  for (const key in shape) {
12747
12753
  const column = shape[key];
12748
- if (!column.data.explicitSelect) {
12754
+ if (!column.data.explicitSelect && !(column instanceof VirtualColumn)) {
12749
12755
  list.push(
12750
12756
  column.data.name ? `"${column.data.name}" "${key}"` : `"${key}"`
12751
12757
  );
12752
- keys[key] = column;
12758
+ selectableShape[key] = column;
12753
12759
  }
12754
12760
  }
12755
12761
  this.q.selectAllColumns = list;
12756
- this.q.selectAllKeys = keys;
12762
+ } else {
12763
+ for (const key in shape) {
12764
+ const column = shape[key];
12765
+ if (column instanceof VirtualColumn) {
12766
+ selectableShape[key] = column;
12767
+ }
12768
+ }
12757
12769
  }
12758
12770
  if (modifyQuery) {
12759
12771
  for (const cb of modifyQuery) {