pqb 0.10.4 → 0.10.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.d.ts CHANGED
@@ -460,17 +460,17 @@ declare class QueryGet {
460
460
  }
461
461
 
462
462
  declare type SelectArg<T extends QueryBase> = StringKey<keyof T['selectable']> | (T['relations'] extends Record<string, Relation> ? StringKey<keyof T['relations']> : never) | SelectAsArg<T>;
463
- declare type SelectAsArg<T extends QueryBase> = Record<string, StringKey<keyof T['selectable']> | RawExpression | ((q: T) => Query)>;
463
+ declare type SelectAsArg<T extends QueryBase> = Record<string, StringKey<keyof T['selectable']> | RawExpression | ((q: T) => Query | RawExpression)>;
464
464
  declare type SelectResult<T extends Query, Args extends SelectArg<T>[], SelectAsArgs = SimpleSpread<FilterTuple<Args, SelectAsArg<T>>>> = AddQuerySelect<T, {
465
465
  [Arg in Args[number] as Arg extends keyof T['selectable'] ? T['selectable'][Arg]['as'] : Arg extends keyof T['relations'] ? Arg : never]: Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['returns'] extends 'many' ? ArrayOfColumnsObjects<T['relations'][Arg]['table']['result']> : T['relations'][Arg]['options']['required'] extends true ? ColumnsObject<T['relations'][Arg]['table']['result']> : NullableColumn<ColumnsObject<T['relations'][Arg]['table']['result']>> : never : never;
466
466
  } & {
467
- [K in keyof SelectAsArgs]: SelectAsArgs[K] extends keyof T['selectable'] ? T['selectable'][SelectAsArgs[K]]['column'] : SelectAsArgs[K] extends RawExpression ? SelectAsArgs[K]['__column'] : SelectAsArgs[K] extends (q: T) => Query ? SelectSubQueryResult<ReturnType<SelectAsArgs[K]>> : SelectAsArgs[K] extends ((q: T) => Query) | RawExpression ? SelectSubQueryResult<ReturnType<Exclude<SelectAsArgs[K], RawExpression>>> | Exclude<SelectAsArgs[K], (q: T) => Query>['__column'] : never;
467
+ [K in keyof SelectAsArgs]: SelectAsArgs[K] extends keyof T['selectable'] ? T['selectable'][SelectAsArgs[K]]['column'] : SelectAsArgs[K] extends RawExpression ? SelectAsArgs[K]['__column'] : SelectAsArgs[K] extends (q: T) => RawExpression ? ReturnType<SelectAsArgs[K]>['__column'] : SelectAsArgs[K] extends (q: T) => Query ? SelectSubQueryResult<ReturnType<SelectAsArgs[K]>> : SelectAsArgs[K] extends ((q: T) => Query) | RawExpression ? SelectSubQueryResult<ReturnType<Exclude<SelectAsArgs[K], RawExpression>>> | Exclude<SelectAsArgs[K], (q: T) => Query>['__column'] : never;
468
468
  }>;
469
469
  declare type SelectSubQueryResult<Arg extends Query & {
470
470
  [isRequiredRelationKey]?: boolean;
471
471
  }> = QueryReturnsAll<Arg['returnType']> extends true ? ArrayOfColumnsObjects<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? PluckResultColumnType<Arg['result']['pluck']> : Arg[isRequiredRelationKey] extends true ? ColumnsObject<Arg['result']> : NullableColumn<ColumnsObject<Arg['result']>>;
472
472
  declare const addParserForRawExpression: (q: Query, key: string | getValueKey, raw: RawExpression) => void;
473
- declare const addParserForSelectItem: <T extends Query>(q: T, as: string | getValueKey | undefined, key: string, arg: RawExpression<ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>> | Exclude<keyof T["selectable"], number | symbol> | ((q: T) => Query)) => string | RawExpression | Query;
473
+ declare const addParserForSelectItem: <T extends Query>(q: T, as: string | getValueKey | undefined, key: string, arg: RawExpression<ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>> | Exclude<keyof T["selectable"], number | symbol> | ((q: T) => Query | RawExpression)) => string | RawExpression | Query;
474
474
  declare const addParserToQuery: (query: QueryData, key: string | getValueKey, parser: ColumnParser) => void;
475
475
  declare const processSelectArg: <T extends Query>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem;
476
476
  declare const getShapeFromSelect: (q: Query, isSubQuery?: boolean) => ColumnsShapeBase;
package/dist/index.js CHANGED
@@ -714,34 +714,31 @@ const columnIndexesToCode = (indexes) => {
714
714
  const code = [];
715
715
  for (const index of indexes) {
716
716
  orchidCore.addCode(code, `.${index.unique ? "unique" : "index"}(`);
717
- for (const key in index) {
718
- if (key === "unique")
719
- continue;
720
- const arr = [];
721
- if (index.collate)
722
- arr.push(`collate: ${orchidCore.singleQuote(index.collate)},`);
723
- if (index.opclass)
724
- arr.push(`opclass: ${orchidCore.singleQuote(index.opclass)},`);
725
- if (index.order)
726
- arr.push(`order: ${orchidCore.singleQuote(index.order)},`);
727
- if (index.name)
728
- arr.push(`name: ${orchidCore.singleQuote(index.name)},`);
729
- if (index.using)
730
- arr.push(`using: ${orchidCore.singleQuote(index.using)},`);
731
- if (index.include)
732
- arr.push(
733
- `include: ${typeof index.include === "string" ? orchidCore.singleQuote(index.include) : `[${index.include.map(orchidCore.singleQuote).join(", ")}]`},`
734
- );
735
- if (index.with)
736
- arr.push(`with: ${orchidCore.singleQuote(index.with)},`);
737
- if (index.tablespace)
738
- arr.push(`tablespace: ${orchidCore.singleQuote(index.tablespace)},`);
739
- if (index.where)
740
- arr.push(`where: ${orchidCore.singleQuote(index.where)},`);
717
+ const arr = [];
718
+ if (index.collate)
719
+ arr.push(`collate: ${orchidCore.singleQuote(index.collate)},`);
720
+ if (index.opclass)
721
+ arr.push(`opclass: ${orchidCore.singleQuote(index.opclass)},`);
722
+ if (index.order)
723
+ arr.push(`order: ${orchidCore.singleQuote(index.order)},`);
724
+ if (index.name)
725
+ arr.push(`name: ${orchidCore.singleQuote(index.name)},`);
726
+ if (index.using)
727
+ arr.push(`using: ${orchidCore.singleQuote(index.using)},`);
728
+ if (index.include)
729
+ arr.push(
730
+ `include: ${typeof index.include === "string" ? orchidCore.singleQuote(index.include) : `[${index.include.map(orchidCore.singleQuote).join(", ")}]`},`
731
+ );
732
+ if (index.with)
733
+ arr.push(`with: ${orchidCore.singleQuote(index.with)},`);
734
+ if (index.tablespace)
735
+ arr.push(`tablespace: ${orchidCore.singleQuote(index.tablespace)},`);
736
+ if (index.where)
737
+ arr.push(`where: ${orchidCore.singleQuote(index.where)},`);
738
+ if (arr.length) {
741
739
  orchidCore.addCode(code, "{");
742
740
  orchidCore.addCode(code, arr);
743
741
  orchidCore.addCode(code, "}");
744
- break;
745
742
  }
746
743
  orchidCore.addCode(code, ")");
747
744
  }
@@ -3724,13 +3721,17 @@ const addParserForSelectItem = (q, as, key, arg) => {
3724
3721
  q.isSubQuery = true;
3725
3722
  const rel = arg(q);
3726
3723
  q.isSubQuery = false;
3727
- const { parsers } = rel.query;
3728
- if (parsers) {
3729
- addParserToQuery(q.query, key, (item) => {
3730
- const t = rel.query.returnType || "all";
3731
- subQueryResult.rows = t === "all" || t === "rows" || t === "pluck" ? item : [item];
3732
- return parseResult(rel, t, subQueryResult, true);
3733
- });
3724
+ if (orchidCore.isRaw(rel)) {
3725
+ addParserForRawExpression(q, key, rel);
3726
+ } else {
3727
+ const { parsers } = rel.query;
3728
+ if (parsers) {
3729
+ addParserToQuery(q.query, key, (item) => {
3730
+ const t = rel.query.returnType || "all";
3731
+ subQueryResult.rows = t === "all" || t === "rows" || t === "pluck" ? item : [item];
3732
+ return parseResult(rel, t, subQueryResult, true);
3733
+ });
3734
+ }
3734
3735
  }
3735
3736
  return rel;
3736
3737
  } else {