Skip to content

Commit

Permalink
Merge 9333dfa into bd63288
Browse files Browse the repository at this point in the history
  • Loading branch information
lorefnon committed May 31, 2019
2 parents bd63288 + 9333dfa commit 54c7200
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 29 deletions.
46 changes: 23 additions & 23 deletions types/index.d.ts
Expand Up @@ -452,76 +452,76 @@ declare namespace Knex {
limit(limit: number): QueryBuilder<TRecord, TResult>;

// Aggregation
count(...columnNames: (keyof TRecord)[]): CountQueryBuilder<TRecord>;
count(...columnNames: string[]): CountQueryBuilder<TRecord>;
count(...columnNames: (keyof TRecord)[]): CountQueryBuilder<TRecord, TResult>;
count(...columnNames: string[]): CountQueryBuilder<TRecord, TResult>;
count(
columnName: Record<string, string | string[] | Knex.Raw> | Knex.Raw
): CountQueryBuilder<TRecord>;
): CountQueryBuilder<TRecord, TResult>;

countDistinct(columnName: keyof TRecord): CountQueryBuilder<TRecord>;
countDistinct(columnName: keyof TRecord): CountQueryBuilder<TRecord, TResult>;
countDistinct(
columnName: string | Record<string, string | Knex.Raw> | Knex.Raw
): CountQueryBuilder<TRecord>;
): CountQueryBuilder<TRecord, TResult>;

min<TResult2 extends {}[] = ValueDict[]>(
min<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: keyof TRecord,
...columnNames: (keyof TRecord)[]
): QueryBuilder<TRecord, TResult2>;
min<TResult2 extends {}[] = ValueDict[]>(
min<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: string,
...columnNames: string[]
): QueryBuilder<TRecord, TResult2>;
min<TResult2 extends {}[] = ValueDict[]>(
min<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: Record<string, string | string[] | Knex.Raw> | Knex.Raw
): QueryBuilder<TRecord, TResult2>;

max<TResult2 extends {}[] = ValueDict[]>(
max<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: keyof TRecord,
...columnNames: (keyof TRecord)[]
): QueryBuilder<TRecord, TResult2>;
max<TResult2 extends {}[] = ValueDict[]>(
max<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: string,
...columnNames: string[]
): QueryBuilder<TRecord, TResult2>;
max<TResult2 extends {}[] = ValueDict[]>(
max<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: Record<string, string | string[] | Knex.Raw> | Knex.Raw
): QueryBuilder<TRecord, TResult2>;

sum<TResult2 extends {}[] = ValueDict[]>(
sum<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: keyof TRecord,
...columnNames: (keyof TRecord)[]
): QueryBuilder<TRecord, TResult2>;
sum<TResult2 extends {}[] = ValueDict[]>(
sum<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: string,
...columnNames: string[]
): QueryBuilder<TRecord, TResult2>;
sum<TResult2 extends {}[] = ValueDict[]>(
sum<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: Record<string, string | string[] | Knex.Raw> | Knex.Raw
): QueryBuilder<TRecord, TResult2>;

sumDistinct<TResult2 extends {}[] = ValueDict[]>(
sumDistinct<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: keyof TRecord
): QueryBuilder<TRecord, TResult2>;
sumDistinct<TResult2 extends {}[] = ValueDict[]>(
sumDistinct<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: string | Record<string, string | Knex.Raw> | Knex.Raw
): QueryBuilder<TRecord, TResult2>;

avg<TResult2 extends {}[] = ValueDict[]>(
avg<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: keyof TRecord,
...columnNames: (keyof TRecord)[]
): QueryBuilder<TRecord, TResult2>;
avg<TResult2 extends {}[] = ValueDict[]>(
avg<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: string,
...columnNames: string[]
): QueryBuilder<TRecord, TResult2>;
avg<TResult2 extends {}[] = ValueDict[]>(
avg<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: Record<string, string | string[] | Knex.Raw> | Knex.Raw
): QueryBuilder<TRecord, TResult2>;

avgDistinct<TResult2 extends {}[] = ValueDict[]>(
avgDistinct<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: keyof TRecord
): QueryBuilder<TRecord, TResult2>;
avgDistinct<TResult2 extends {}[] = ValueDict[]>(
avgDistinct<TResult2 = ArrayIfAlready<TResult, ValueDict>>(
columnName: string | Record<string, string | Knex.Raw> | Knex.Raw
): QueryBuilder<TRecord, TResult2>;

Expand Down Expand Up @@ -1327,9 +1327,9 @@ declare namespace Knex {
queryContext(context: any): QueryBuilder<TRecord, TResult>;
}

type CountQueryBuilder<TRecord> = QueryBuilder<
type CountQueryBuilder<TRecord, TResult> = QueryBuilder<
TRecord,
{ [key: string]: number | string }[]
ArrayIfAlready<TResult, Dict<number|string>>
>;

interface Sql {
Expand Down
27 changes: 21 additions & 6 deletions types/test.ts
Expand Up @@ -452,23 +452,38 @@ const main = async () => {
.orderBy('name', 'desc')
.havingRaw('age > ?', [10]);

// $ExpectType { [key: string]: string | number; }[]
// $ExpectType Dict<string | number>[]
await knex<User>('users').count();

// $ExpectType Dict<string | number>[]
await knex<User>('users').count('age');

// $ExpectType Dict<string | number>[]
await knex('users').count('age');

// $ExpectType Dict<string | number>
await knex<User>('users').first().count('age');

// $ExpectType Dict<string | number>
await knex('users').first().count('age', 'id');

// $ExpectType Dict<string | number>
await knex<User>('users').first().count();

// $ExpectType ValueDict[]
await knex<User>('users').max('age');

// $ExpectType ValueDict
await knex<User>('users').first().max('age');

// $ExpectType ValueDict[]
await knex('users').max('age');

// $ExpectType ValueDict[]
await knex<User>('users').min('age');

// $ExpectType { [key: string]: string | number; }[]
await knex<User>('users').count('age');

// $ExpectType { [key: string]: string | number; }[]
await knex('users').count('age');
// $ExpectType ValueDict
await knex<User>('users').first().min('age');

// ## With inner query:

Expand Down

0 comments on commit 54c7200

Please sign in to comment.