pqb 0.18.27 → 0.18.29

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
@@ -5162,6 +5162,9 @@ type OrderArg<T extends Query, TsQuery extends PropertyKey = string | undefined
5162
5162
  [K in Key]?: K extends TsQuery ? OrderTsQueryConfig : SortDir;
5163
5163
  } | Expression;
5164
5164
  type OrderArgs<T extends Query> = OrderArg<T>[] | TemplateLiteralArgs;
5165
+ type GroupArg<T extends Query> = {
5166
+ [K in keyof T['result']]: T['result'][K]['dataType'] extends 'array' | 'object' ? never : K;
5167
+ }[keyof T['result']] | Expression;
5165
5168
  type FindArgs<T extends Query> = [T['shape'][T['singlePrimaryKey']]['queryType'] | Expression] | TemplateLiteralArgs;
5166
5169
  type QueryHelper<T extends Query, Args extends unknown[], Result> = <Q extends {
5167
5170
  [K in keyof T]: K extends 'then' ? QueryThen<unknown> : K extends 'result' ? ColumnsShapeBase : T[K];
@@ -5379,15 +5382,31 @@ declare class QueryMethods<ColumnTypes> {
5379
5382
  *
5380
5383
  * ```ts
5381
5384
  * // Select the category and sum of prices grouped by the category
5382
- * const results = Product.select('category')
5385
+ * const results = db.product
5386
+ * .select('category')
5383
5387
  * .selectSum('price', { as: 'sumPrice' })
5384
5388
  * .group('category');
5385
5389
  * ```
5386
5390
  *
5391
+ * Also, it's possible to group by a selected value:
5392
+ *
5393
+ * ```ts
5394
+ * const results = db.product
5395
+ * .select({
5396
+ * month: db.product.sql`extract(month from "createdAt")`.type((t) =>
5397
+ * // month is returned as string, parse it to int
5398
+ * t.string().parse(parseInt),
5399
+ * ),
5400
+ * })
5401
+ * .selectSum('price', { as: 'sumPrice' })
5402
+ * // group by month extracted from "createdAt"
5403
+ * .group('month');
5404
+ * ```
5405
+ *
5387
5406
  * @param columns - column names or a raw SQL
5388
5407
  */
5389
- group<T extends Query>(this: T, ...columns: SelectableOrExpression<T>[]): T;
5390
- _group<T extends Query>(this: T, ...columns: SelectableOrExpression<T>[]): T;
5408
+ group<T extends Query>(this: T, ...columns: GroupArg<T>[]): T;
5409
+ _group<T extends Query>(this: T, ...columns: GroupArg<T>[]): T;
5391
5410
  /**
5392
5411
  * Add a window with `window` and use it later by its name for aggregate or window functions:
5393
5412
  *
@@ -5824,7 +5843,7 @@ declare const Operators: {
5824
5843
  boolean: Bool;
5825
5844
  number: Numeric;
5826
5845
  date: Ord<Date | string>;
5827
- time: Numeric;
5846
+ time: Ord<string>;
5828
5847
  text: Text;
5829
5848
  json: Json;
5830
5849
  array: Base<any>;
@@ -6376,7 +6395,7 @@ declare abstract class DateBaseColumn extends ColumnType<string, typeof Operator
6376
6395
  gte: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Date | Query, BooleanColumn>;
6377
6396
  between: Operator<[string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Date | Query, string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Date | Query], BooleanColumn>;
6378
6397
  };
6379
- encodeFn: (input: string | number | Date) => Date;
6398
+ encodeFn: (input: string | number | Date) => string | Date;
6380
6399
  asNumber(): EncodeColumn<IntegerColumn, string | number | Date>;
6381
6400
  asDate<T extends ColumnType>(this: T): ParseColumn<T, Date>;
6382
6401
  }
@@ -6404,8 +6423,26 @@ declare class TimestampTZColumn<Precision extends number | undefined> extends Da
6404
6423
  baseDataType: "timestamp";
6405
6424
  toCode(t: string): Code;
6406
6425
  }
6407
- declare class TimeColumn<Precision extends number | undefined = undefined> extends DateTimeBaseClass<Precision> {
6426
+ interface TimeColumn extends ColumnType<string, typeof Operators.time>, DateTypeMethods {
6427
+ }
6428
+ declare class TimeColumn<Precision extends number | undefined = undefined> extends ColumnType<string, typeof Operators.time> {
6429
+ data: DateColumnData & {
6430
+ dateTimePrecision: Precision;
6431
+ };
6408
6432
  dataType: "time";
6433
+ operators: {
6434
+ equals: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6435
+ not: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6436
+ in: Operator<string[] | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6437
+ notIn: Operator<string[] | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6438
+ } & {
6439
+ lt: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6440
+ lte: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6441
+ gt: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6442
+ gte: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, BooleanColumn>;
6443
+ between: Operator<[string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query, string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Query], BooleanColumn>;
6444
+ };
6445
+ constructor(dateTimePrecision?: Precision);
6409
6446
  toCode(t: string): Code;
6410
6447
  }
6411
6448
  type TimeInterval = {
@@ -6417,11 +6454,11 @@ type TimeInterval = {
6417
6454
  seconds?: number;
6418
6455
  };
6419
6456
  declare class IntervalColumn<Fields extends string | undefined = undefined, Precision extends number | undefined = undefined> extends ColumnType<TimeInterval, typeof Operators.date> {
6420
- dataType: "interval";
6421
6457
  data: ColumnData & {
6422
6458
  fields: Fields;
6423
6459
  precision: Precision;
6424
6460
  };
6461
+ dataType: "interval";
6425
6462
  operators: {
6426
6463
  equals: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Date | Query, BooleanColumn>;
6427
6464
  not: Operator<string | orchid_core.Expression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>> | Date | Query, BooleanColumn>;
@@ -7106,4 +7143,4 @@ declare module 'orchid-core' {
7106
7143
  }
7107
7144
  declare function addComputedColumns<T extends Query, Computed extends ComputedColumnsBase<T>>(q: T, computed: Computed): QueryWithComputed<T, Computed>;
7108
7145
 
7109
- export { Adapter, AdapterConfig, AdapterOptions, AddQueryDefaults, AddQuerySelect, AddQueryWith, AfterHook, AggregateMethods, AggregateOptions, AliasOrTable, ArrayColumn, ArrayData, ArrayOfColumnsObjects, AsMethods, BaseOperators, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanNullable, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, ColumnData, ColumnExpression, ColumnFromDbParams, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnOperators, ColumnRefExpression, ColumnType, ColumnsObject, ColumnsShape, CommonQueryData, ComputedColumnsBase, CopyMethods, CopyOptions, CopyQueryData, Create, CreateColumn, CreateCtx, CreateData, CreateKind, CreateMethodsNames, CreateRelationDataOmittingFKeys, CreateRelationsData, CreateRelationsDataOmittingFKeys, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeTzBaseClass, Db, DbOptions, DbResult, DbTableOptions, DecimalBaseColumn, DecimalColumn, DefaultColumnTypes, Delete, DeleteMethodsNames, DeleteQueryData, DomainColumn, DoublePrecisionColumn, DropMode, DynamicRawSQL, EnumColumn, ExpressionOutput, FnExpression, FnExpressionArgs, For, ForeignKey, ForeignKeyAction, ForeignKeyMatch, ForeignKeyOptions, From, FromArgs, FromResult, GetArg, GetQueryResult, GetStringArg, Having, HavingItem, HookAction, HookSelect, IdentityColumn, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsolationLevel, JSONColumn, JSONTextColumn, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinLateralCallback, JoinLateralItem, JoinLateralResult, JoinOverrides, JoinResult, JoinedParsers, JoinedShapes, JsonItem, JsonMethods, JsonModifiers, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OrCreateArg, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgs, OrderItem, OrderTsQueryConfig, Over, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, Query, QueryAfterHook, QueryArraysResult, QueryBase, QueryBeforeHook, QueryData, QueryDefaultReturnData, QueryError, QueryErrorName, QueryGet, QueryHookSelect, QueryHooks, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QuerySourceItem, QueryTransform, QueryTransformFn, QueryUpsertOrCreate, QueryWithComputed, QueryWithTable, RawSQL, RawSqlMethods, RealColumn, RelationConfigBase, RelationConfigDataForCreate, RelationQuery, RelationQueryBase, RelationsBase, SearchArg, SearchMethods, SearchWeight, Select, SelectArg, SelectAs, SelectItem, SelectQueryData, SelectSubQueryResult, SelectableBase, SelectableFromShape, SelectableOfType, SelectableOrExpression, SelectableOrExpressionOfType, SerialColumn, SerialColumnData, SetQueryKind, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumn, SetQueryReturnsColumnInfo, SetQueryReturnsColumnOptional, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsPluckColumn, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWith, SimpleJoinItem, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, StringColumn, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimeInterval, TimestampColumn, TimestampTZColumn, ToSQLCtx, ToSQLOptions, Transaction, TransactionAdapter, TransactionOptions, TransformMethods, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnknownColumn, Update, UpdateCtx, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertArg, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, Where, WhereArg, WhereArgs, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereOnJoinItem, WhereQueryBase, WhereQueryBuilder, WhereResult, WhereSearchItem, WhereSearchResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addComputedColumns, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addQueryOn, addWhere, addWhereIn, addWhereNot, anyShape, checkIfASimpleQuery, cloneQueryArrays, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnTypes, columnsByType, columnsShapeToCode, constraintPropsToCode, constraintToCode, countSelect, createDb, extendQuery, foreignKeyArgumentToCode, getClonedQueryData, getColumnTypes, getConstraintKind, getQueryAs, getShapeFromSelect, getTableData, handleResult, identityToCode, indexToCode, instantiateColumn, isQueryReturnsAll, isSelectingCount, joinSubQuery, logColors, logParamToLogObject, makeExpression, makeFnExpression, makeRegexToFindInSql, makeSQL, newTableData, parseRecord, parseResult, primaryKeyToCode, processSelectArg, pushLimitSQL, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, quoteString, raw, referencesArgsToCode, resetTableData, resolveSubQueryCallback, saveSearchAlias, setParserForSelectedString, setQueryObjectValue, setQueryOperators, simplifyColumnDefault, templateLiteralToSQL, testTransaction, throwIfNoWhere, toSQL, toSQLCacheKey };
7146
+ export { Adapter, AdapterConfig, AdapterOptions, AddQueryDefaults, AddQuerySelect, AddQueryWith, AfterHook, AggregateMethods, AggregateOptions, AliasOrTable, ArrayColumn, ArrayData, ArrayOfColumnsObjects, AsMethods, BaseOperators, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanNullable, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, ColumnData, ColumnExpression, ColumnFromDbParams, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnOperators, ColumnRefExpression, ColumnType, ColumnsObject, ColumnsShape, CommonQueryData, ComputedColumnsBase, CopyMethods, CopyOptions, CopyQueryData, Create, CreateColumn, CreateCtx, CreateData, CreateKind, CreateMethodsNames, CreateRelationDataOmittingFKeys, CreateRelationsData, CreateRelationsDataOmittingFKeys, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeTzBaseClass, Db, DbOptions, DbResult, DbTableOptions, DecimalBaseColumn, DecimalColumn, DefaultColumnTypes, Delete, DeleteMethodsNames, DeleteQueryData, DomainColumn, DoublePrecisionColumn, DropMode, DynamicRawSQL, EnumColumn, ExpressionOutput, FnExpression, FnExpressionArgs, For, ForeignKey, ForeignKeyAction, ForeignKeyMatch, ForeignKeyOptions, From, FromArgs, FromResult, GetArg, GetQueryResult, GetStringArg, GroupArg, Having, HavingItem, HookAction, HookSelect, IdentityColumn, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsolationLevel, JSONColumn, JSONTextColumn, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinLateralCallback, JoinLateralItem, JoinLateralResult, JoinOverrides, JoinResult, JoinedParsers, JoinedShapes, JsonItem, JsonMethods, JsonModifiers, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OrCreateArg, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderArgs, OrderItem, OrderTsQueryConfig, Over, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, Query, QueryAfterHook, QueryArraysResult, QueryBase, QueryBeforeHook, QueryData, QueryDefaultReturnData, QueryError, QueryErrorName, QueryGet, QueryHookSelect, QueryHooks, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QuerySourceItem, QueryTransform, QueryTransformFn, QueryUpsertOrCreate, QueryWithComputed, QueryWithTable, RawSQL, RawSqlMethods, RealColumn, RelationConfigBase, RelationConfigDataForCreate, RelationQuery, RelationQueryBase, RelationsBase, SearchArg, SearchMethods, SearchWeight, Select, SelectArg, SelectAs, SelectItem, SelectQueryData, SelectSubQueryResult, SelectableBase, SelectableFromShape, SelectableOfType, SelectableOrExpression, SelectableOrExpressionOfType, SerialColumn, SerialColumnData, SetQueryKind, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumn, SetQueryReturnsColumnInfo, SetQueryReturnsColumnOptional, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsPluckColumn, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWith, SimpleJoinItem, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, StringColumn, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimeInterval, TimestampColumn, TimestampTZColumn, ToSQLCtx, ToSQLOptions, Transaction, TransactionAdapter, TransactionOptions, TransformMethods, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnknownColumn, Update, UpdateCtx, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertArg, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, Where, WhereArg, WhereArgs, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereOnJoinItem, WhereQueryBase, WhereQueryBuilder, WhereResult, WhereSearchItem, WhereSearchResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addComputedColumns, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addQueryOn, addWhere, addWhereIn, addWhereNot, anyShape, checkIfASimpleQuery, cloneQueryArrays, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnTypes, columnsByType, columnsShapeToCode, constraintPropsToCode, constraintToCode, countSelect, createDb, extendQuery, foreignKeyArgumentToCode, getClonedQueryData, getColumnTypes, getConstraintKind, getQueryAs, getShapeFromSelect, getTableData, handleResult, identityToCode, indexToCode, instantiateColumn, isQueryReturnsAll, isSelectingCount, joinSubQuery, logColors, logParamToLogObject, makeExpression, makeFnExpression, makeRegexToFindInSql, makeSQL, newTableData, parseRecord, parseResult, primaryKeyToCode, processSelectArg, pushLimitSQL, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, quoteString, raw, referencesArgsToCode, resetTableData, resolveSubQueryCallback, saveSearchAlias, setParserForSelectedString, setQueryObjectValue, setQueryOperators, simplifyColumnDefault, templateLiteralToSQL, testTransaction, throwIfNoWhere, toSQL, toSQLCacheKey };
package/dist/index.js CHANGED
@@ -3194,7 +3194,7 @@ class CitextColumn extends TextBaseColumn {
3194
3194
  }
3195
3195
 
3196
3196
  const dateTimeEncode = (input) => {
3197
- return typeof input === "object" ? input : new Date(input);
3197
+ return typeof input === "number" ? new Date(input) : input;
3198
3198
  };
3199
3199
  const skipDateMethodsFromToCode = { encodeFn: dateTimeEncode };
3200
3200
  const parseToNumber = (value) => value ? Date.parse(value) : value;
@@ -3280,10 +3280,12 @@ class TimestampTZColumn extends DateTimeTzBaseClass {
3280
3280
  return timestampToCode(this, t);
3281
3281
  }
3282
3282
  }
3283
- class TimeColumn extends DateTimeBaseClass {
3284
- constructor() {
3285
- super(...arguments);
3283
+ class TimeColumn extends ColumnType {
3284
+ constructor(dateTimePrecision) {
3285
+ super();
3286
3286
  this.dataType = "time";
3287
+ this.operators = Operators.time;
3288
+ this.data.dateTimePrecision = dateTimePrecision;
3287
3289
  }
3288
3290
  toCode(t) {
3289
3291
  const { dateTimePrecision } = this.data;
@@ -3296,6 +3298,7 @@ class TimeColumn extends DateTimeBaseClass {
3296
3298
  );
3297
3299
  }
3298
3300
  }
3301
+ orchidCore.assignMethodsToClass(TimeColumn, orchidCore.dateTypeMethods);
3299
3302
  class IntervalColumn extends ColumnType {
3300
3303
  constructor(fields, precision) {
3301
3304
  super();
@@ -9590,11 +9593,27 @@ class QueryMethods {
9590
9593
  *
9591
9594
  * ```ts
9592
9595
  * // Select the category and sum of prices grouped by the category
9593
- * const results = Product.select('category')
9596
+ * const results = db.product
9597
+ * .select('category')
9594
9598
  * .selectSum('price', { as: 'sumPrice' })
9595
9599
  * .group('category');
9596
9600
  * ```
9597
9601
  *
9602
+ * Also, it's possible to group by a selected value:
9603
+ *
9604
+ * ```ts
9605
+ * const results = db.product
9606
+ * .select({
9607
+ * month: db.product.sql`extract(month from "createdAt")`.type((t) =>
9608
+ * // month is returned as string, parse it to int
9609
+ * t.string().parse(parseInt),
9610
+ * ),
9611
+ * })
9612
+ * .selectSum('price', { as: 'sumPrice' })
9613
+ * // group by month extracted from "createdAt"
9614
+ * .group('month');
9615
+ * ```
9616
+ *
9598
9617
  * @param columns - column names or a raw SQL
9599
9618
  */
9600
9619
  group(...columns) {