pqb 0.18.28 → 0.18.30

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
@@ -82,7 +82,7 @@ type RelationConfigBase = {
82
82
  dataForUpdate: unknown;
83
83
  dataForUpdateOne: unknown;
84
84
  params: Record<string, unknown>;
85
- populate: string;
85
+ populate: Record<string, true>;
86
86
  chainedCreate: boolean;
87
87
  chainedDelete: boolean;
88
88
  };
@@ -97,7 +97,7 @@ type RelationQueryBase = Query & {
97
97
  type RelationQuery<Name extends PropertyKey = PropertyKey, Config extends RelationConfigBase = RelationConfigBase, T extends Query = Query, Q extends Query = {
98
98
  [K in keyof T | 'relationConfig']: K extends 'meta' ? Omit<T['meta'], 'as' | 'defaults'> & {
99
99
  as: StringKey<Name>;
100
- defaults: T['meta']['defaults'] | Config['populate'];
100
+ defaults: T['meta']['defaults'] & Config['populate'];
101
101
  hasWhere: true;
102
102
  } : K extends 'join' ? <T extends Query>(this: T) => T : K extends CreateMethodsNames ? Config['chainedCreate'] extends true ? T[K] : never : K extends DeleteMethodsNames ? Config['chainedDelete'] extends true ? T[K] : never : K extends keyof T ? T[K] : K extends 'relationConfig' ? Config : never;
103
103
  }> = ((params: Config['params']) => Config['one'] extends true ? Config['required'] extends true ? SetQueryReturnsOne<Q> : SetQueryReturnsOneOptional<Q> : Q) & Q;
@@ -516,8 +516,8 @@ interface Db<Table extends string | undefined = undefined, Shape extends Columns
516
516
  meta: {
517
517
  kind: 'select';
518
518
  defaults: {
519
- [K in keyof Shape]: undefined | unknown extends Shape[K]['data']['default'] ? never : K;
520
- }[keyof Shape];
519
+ [K in keyof Shape as unknown extends Shape[K]['data']['default'] ? never : K]: true;
520
+ };
521
521
  };
522
522
  }
523
523
  declare class Db<Table extends string | undefined = undefined, Shape extends ColumnsShapeBase = Record<string, never>, Relations extends RelationsBase = EmptyObject, ColumnTypes = DefaultColumnTypes, ShapeWithComputed extends ColumnsShapeBase = Shape> implements Query {
@@ -1258,13 +1258,13 @@ declare class CopyMethods {
1258
1258
 
1259
1259
  type CreateData<T extends Query, Data = SetOptional<{
1260
1260
  [K in keyof T['inputType']]: CreateColumn<T, K>;
1261
- }, T['meta']['defaults']>> = [keyof T['relations']] extends [never] ? Data : CreateRelationsData<T, T['relations'], Data>;
1261
+ }, keyof T['meta']['defaults']>> = [keyof T['relations']] extends [never] ? Data : CreateRelationsData<T, T['relations'], Data>;
1262
1262
  type CreateColumn<T extends Query, Key extends keyof T['inputType']> = Expression | T['inputType'][Key] | {
1263
1263
  [K in keyof Query]: K extends 'then' ? QueryThen<T['inputType'][Key]> : Query[K];
1264
1264
  };
1265
1265
  type CreateRelationsData<T extends Query, Relations extends RelationsBase, Data> = Omit<Data, Relations[keyof Relations]['relationConfig']['omitForeignKeyInCreate']> & CreateRelationsDataOmittingFKeys<T, Relations> & Relations[keyof Relations]['relationConfig']['optionalDataForCreate'];
1266
1266
  type CreateRelationsDataOmittingFKeys<T extends Query, Relations extends RelationsBase, Union extends [Record<string, unknown>] = {
1267
- [K in keyof Relations]: CreateRelationDataOmittingFKeys<Relations[K]['relationConfig'], T['meta']['defaults']>;
1267
+ [K in keyof Relations]: CreateRelationDataOmittingFKeys<Relations[K]['relationConfig'], keyof T['meta']['defaults']>;
1268
1268
  }[keyof Relations]> = (Union extends any ? (u: Union) => void : never) extends (u: [infer Obj]) => void ? Obj : never;
1269
1269
  type CreateRelationDataOmittingFKeys<RelationConfig extends RelationConfigBase, Defaults extends PropertyKey, Data extends RelationConfigDataForCreate | undefined = RelationConfig['dataForCreate']> = Data extends RelationConfigDataForCreate ? [
1270
1270
  keyof Data['columns'] extends Defaults ? Omit<Data['columns'], Defaults> & {
@@ -1289,7 +1289,7 @@ type CreateManyRawData<T extends Query> = {
1289
1289
  values: Expression[];
1290
1290
  };
1291
1291
  type RawRequiredColumns<T extends Query> = {
1292
- [K in keyof T['inputType'] as K extends T['meta']['defaults'] ? never : null extends T['inputType'][K] ? never : undefined extends T['inputType'][K] ? never : K]: true;
1292
+ [K in keyof T['inputType'] as K extends keyof T['meta']['defaults'] ? never : null extends T['inputType'][K] ? never : undefined extends T['inputType'][K] ? never : K]: true;
1293
1293
  };
1294
1294
  type CreateRawArgs<T extends Query, Arg extends {
1295
1295
  columns: (keyof T['shape'])[];
@@ -1297,9 +1297,9 @@ type CreateRawArgs<T extends Query, Arg extends {
1297
1297
  `Missing required columns: ${Exclude<StringKey<keyof RawRequiredColumns<T>>, Arg['columns'][number]>}`
1298
1298
  ];
1299
1299
  type OnConflictArg<T extends Query> = keyof T['shape'] | (keyof T['shape'])[] | Expression;
1300
- type AddQueryDefaults<T extends Query, Defaults extends PropertyKey> = {
1300
+ type AddQueryDefaults<T extends Query, Defaults extends Record<string, true>> = {
1301
1301
  [K in keyof T]: K extends 'meta' ? {
1302
- [K in keyof T['meta']]: K extends 'defaults' ? T['meta']['defaults'] | Defaults : T['meta'][K];
1302
+ [K in keyof T['meta']]: K extends 'defaults' ? T['meta']['defaults'] & Defaults : T['meta'][K];
1303
1303
  } : T[K];
1304
1304
  };
1305
1305
  /**
@@ -1537,8 +1537,8 @@ declare class Create {
1537
1537
  *
1538
1538
  * @param data - default values for `create` and `createMany` which will follow `defaults`
1539
1539
  */
1540
- defaults<T extends Query, Data extends Partial<CreateData<T>>>(this: T, data: Data): AddQueryDefaults<T, keyof Data>;
1541
- _defaults<T extends Query, Data extends Partial<CreateData<T>>>(this: T, data: Data): AddQueryDefaults<T, keyof Data>;
1540
+ defaults<T extends Query, Data extends Partial<CreateData<T>>>(this: T, data: Data): AddQueryDefaults<T, Record<keyof Data, true>>;
1541
+ _defaults<T extends Query, Data extends Partial<CreateData<T>>>(this: T, data: Data): AddQueryDefaults<T, Record<keyof Data, true>>;
1542
1542
  /**
1543
1543
  * A modifier for creating queries that specify alternative behavior in the case of a conflict.
1544
1544
  * A conflict occurs when a table has a `PRIMARY KEY` or a `UNIQUE` index on a column
@@ -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
  *
@@ -7124,4 +7143,4 @@ declare module 'orchid-core' {
7124
7143
  }
7125
7144
  declare function addComputedColumns<T extends Query, Computed extends ComputedColumnsBase<T>>(q: T, computed: Computed): QueryWithComputed<T, Computed>;
7126
7145
 
7127
- 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
@@ -9593,11 +9593,27 @@ class QueryMethods {
9593
9593
  *
9594
9594
  * ```ts
9595
9595
  * // Select the category and sum of prices grouped by the category
9596
- * const results = Product.select('category')
9596
+ * const results = db.product
9597
+ * .select('category')
9597
9598
  * .selectSum('price', { as: 'sumPrice' })
9598
9599
  * .group('category');
9599
9600
  * ```
9600
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
+ *
9601
9617
  * @param columns - column names or a raw SQL
9602
9618
  */
9603
9619
  group(...columns) {