mirror of
https://github.com/knex/knex.git
synced 2025-09-24 23:54:55 +00:00
Update signature of orderBy to support QueryBuilder inside array (#3757)
Fixes #3738
This commit is contained in:
parent
2fbe91da1a
commit
c35a66d31b
17
types/index.d.ts
vendored
17
types/index.d.ts
vendored
@ -1215,21 +1215,24 @@ declare namespace Knex {
|
||||
ColumnNameQueryBuilder<TRecord, TResult> {}
|
||||
|
||||
interface OrderBy<TRecord = any, TResult = unknown[]> {
|
||||
(columnName: keyof TRecord, order?: 'asc' | 'desc'): QueryBuilder<
|
||||
(columnName: keyof TRecord | QueryBuilder, order?: 'asc' | 'desc'): QueryBuilder<
|
||||
TRecord,
|
||||
TResult
|
||||
>;
|
||||
(columnName: string, order?: string): QueryBuilder<TRecord, TResult>;
|
||||
(columnName: string | QueryBuilder, order?: string): QueryBuilder<TRecord, TResult>;
|
||||
(
|
||||
columnDefs: Array<
|
||||
keyof TRecord | Readonly<{ column: keyof TRecord; order?: 'asc' | 'desc' }>
|
||||
keyof TRecord | Readonly<{
|
||||
column: keyof TRecord | QueryBuilder;
|
||||
order?: 'asc' | 'desc'
|
||||
}>
|
||||
>
|
||||
): QueryBuilder<TRecord, TResult>;
|
||||
(
|
||||
columnDefs: Array<string | Readonly<{ column: string; order?: string }>>
|
||||
): QueryBuilder<TRecord, TResult>;
|
||||
<TRecordInner, TResultInner>(
|
||||
subQueryBuilder: QueryBuilder<TRecordInner, TResultInner>
|
||||
columnDefs: Array<string | Readonly<{
|
||||
column: string | QueryBuilder;
|
||||
order?: string;
|
||||
}>>
|
||||
): QueryBuilder<TRecord, TResult>;
|
||||
}
|
||||
|
||||
|
@ -541,6 +541,33 @@ const main = async () => {
|
||||
.where('users.id', 'u.id')
|
||||
);
|
||||
|
||||
await knex<User>('users')
|
||||
.select()
|
||||
.orderBy([{
|
||||
column: knex<User>('users')
|
||||
.select('u.id')
|
||||
.from('users as u')
|
||||
.where('users.id', 'u.id'),
|
||||
order: 'desc'
|
||||
}]);
|
||||
|
||||
await knex<User>('users')
|
||||
.select()
|
||||
.orderBy([{
|
||||
column: 'id',
|
||||
order: 'desc'
|
||||
}, {
|
||||
column: 'name',
|
||||
order: 'desc'
|
||||
}]);
|
||||
|
||||
await knex<User>('users')
|
||||
.select()
|
||||
.orderBy([{
|
||||
column: 'id',
|
||||
order: 'desc'
|
||||
}, 'name']);
|
||||
|
||||
// $ExpectType Dict<string | number>[]
|
||||
await knex<User>('users').count();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user