Skip to content

Commit

Permalink
Fix #4228 Improved columnInfo type (#4868)
Browse files Browse the repository at this point in the history
  • Loading branch information
Kuirak committed Dec 9, 2021
1 parent 2bd1811 commit 786c95f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
23 changes: 23 additions & 0 deletions test-tsd/tables.test-d.ts
Expand Up @@ -66,6 +66,29 @@ const main = async () => {
await knexInstance.first('id').from('users_composite')
);

expectType<Record<keyof User, Knex.ColumnInfo>>(
await knexInstance<User>('users').columnInfo()
);
expectType<Record<string | number | symbol, Knex.ColumnInfo>>(
await knexInstance('users').columnInfo()
);
expectType<Record<keyof User, Knex.ColumnInfo>>(
await knexInstance('users_inferred').columnInfo()
);
expectType<Record<keyof User, Knex.ColumnInfo>>(
await knexInstance('users_composite').columnInfo()
);
expectType<Knex.ColumnInfo>(
await knexInstance('users_inferred').columnInfo('id')
);
expectType<Knex.ColumnInfo>(
await knexInstance('users_composite').columnInfo('id')
);
expectType<Knex.ColumnInfo>(await knexInstance('users').columnInfo('id'));
expectType<Knex.ColumnInfo>(
await knexInstance<User>('users').columnInfo('id')
);

//These tests simply check if type work by showing that it does not throw syntax error

knexInstance.schema.createTable('testTable',(table) => {
Expand Down
3 changes: 2 additions & 1 deletion types/index.d.ts
Expand Up @@ -1812,7 +1812,8 @@ export declare namespace Knex {
and: QueryBuilder<TRecord, TResult>;

// TODO: Promise?
columnInfo(column?: keyof TRecord): Promise<ColumnInfo>;
columnInfo(column: keyof DeferredKeySelection.Resolve<TRecord>): Promise<ColumnInfo>;
columnInfo(): Promise<Record<keyof DeferredKeySelection.Resolve<TRecord>, ColumnInfo>>;

forUpdate(...tableNames: string[]): QueryBuilder<TRecord, TResult>;
forUpdate(tableNames: readonly string[]): QueryBuilder<TRecord, TResult>;
Expand Down
8 changes: 4 additions & 4 deletions types/test.ts
Expand Up @@ -2691,16 +2691,16 @@ const main = async () => {
// # Column Info:

// $ExpectType ColumnInfo
await knexInstance('users').columnInfo();
await knexInstance('users').columnInfo('id');

// $ExpectType ColumnInfo
await knexInstance<User>('users').columnInfo();
await knexInstance<User>('users').columnInfo('id');

// $ExpectType ColumnInfo
await knexInstance('users_inferred').columnInfo();
await knexInstance('users_inferred').columnInfo('id');

// $ExpectType ColumnInfo
await knexInstance('users_composite').columnInfo();
await knexInstance('users_composite').columnInfo('id');

// # Modify:

Expand Down

0 comments on commit 786c95f

Please sign in to comment.