From 5dab3a5e7400b2a4d5960469def34676908fc13f Mon Sep 17 00:00:00 2001 From: Lorefnon Date: Sun, 19 May 2019 21:08:45 +0530 Subject: [PATCH] Expose some utility types Ref: https://github.com/tgriesser/knex/pull/3036#issuecomment-493751631 Co-authored-by: Sagar Chamling --- types/index.d.ts | 96 +++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index 1902a282de..e6681e593d 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -249,42 +249,16 @@ type ResolveResult = DeferredKeySelection.Resolve; type Callback = Function; type Client = Function; -interface Identifier { - [alias: string]: string; -} - -type Value = - | string - | number - | boolean - | Date - | Array - | Array - | Array - | Array - | Buffer - | Knex.Raw; - interface Dict { [k: string]: T; } -interface ValueDict extends Dict {} - -type ColumnDescriptor = - | string - | Knex.Raw - | Knex.QueryBuilder - | { [key: string]: string }; - -type TableName = string | Knex.Raw | Knex.QueryBuilder; - type SafePick = T extends {} ? Pick : any; interface Knex extends Knex.QueryInterface { []>( - tableName?: TableName | Identifier + tableName?: Knex.TableDescriptor | Knex.AliasDict ): Knex.QueryBuilder; VERSION: string; __knex__: string; @@ -296,7 +270,7 @@ interface Knex destroy(callback: Function): void; destroy(): Bluebird; batchInsert( - tableName: TableName, + tableName: Knex.TableDescriptor, data: any[], chunkSize?: number ): Knex.QueryBuilder; @@ -321,6 +295,33 @@ declare function Knex( ): Knex; declare namespace Knex { + // + // Utility Types + // + + type Value = + | string + | number + | boolean + | Date + | Array + | Array + | Array + | Array + | Buffer + | Knex.Raw; + + interface ValueDict extends Dict {} + interface AliasDict extends Dict {} + + type ColumnDescriptor = + | string + | Knex.Raw + | Knex.QueryBuilder + | Dict; + + type TableDescriptor = string | Knex.Raw | Knex.QueryBuilder; + // // QueryInterface // @@ -823,7 +824,7 @@ declare namespace Knex { TRecord2 = any, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier + tableName: TableDescriptor | AliasDict ): QueryBuilder; < TRecord2 = any, @@ -859,7 +860,7 @@ declare namespace Knex { TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier | QueryCallback, + tableName: TableDescriptor | AliasDict | QueryCallback, clause: JoinCallback ): QueryBuilder; < @@ -867,7 +868,7 @@ declare namespace Knex { TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier | QueryCallback, + tableName: TableDescriptor | AliasDict | QueryCallback, columns: { [key: string]: string | number | boolean | Raw } ): QueryBuilder; < @@ -875,7 +876,7 @@ declare namespace Knex { TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier | QueryCallback, + tableName: TableDescriptor | AliasDict | QueryCallback, raw: Raw ): QueryBuilder; < @@ -883,7 +884,7 @@ declare namespace Knex { TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier | QueryCallback, + tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, column2: string ): QueryBuilder; @@ -892,7 +893,7 @@ declare namespace Knex { TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier | QueryCallback, + tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, raw: Raw ): QueryBuilder; @@ -901,7 +902,7 @@ declare namespace Knex { TRecord2 extends {} = TRecord & TJoinTargetRecord, TResult2 = DeferredKeySelection.ReplaceBase >( - tableName: TableName | Identifier | QueryCallback, + tableName: TableDescriptor | AliasDict | QueryCallback, column1: string, operator: string, column2: string @@ -969,15 +970,11 @@ declare namespace Knex { WithWrapped {} interface WithRaw { - ( - alias: string, - raw: Raw | QueryBuilder - ): QueryBuilder; - ( - alias: string, - sql: string, - bindings?: Value[] | Object - ): QueryBuilder; + (alias: string, raw: Raw | QueryBuilder): QueryBuilder; + (alias: string, sql: string, bindings?: Value[] | Object): QueryBuilder< + TRecord, + TResult + >; } interface WithSchema { @@ -985,10 +982,7 @@ declare namespace Knex { } interface WithWrapped { - ( - alias: string, - queryBuilder: QueryBuilder - ): QueryBuilder; + (alias: string, queryBuilder: QueryBuilder): QueryBuilder; ( alias: string, callback: (queryBuilder: QueryBuilder) => any @@ -1220,14 +1214,16 @@ declare namespace Knex { ): QueryBuilder; } + type RawBinding = Value | QueryBuilder; + interface RawQueryBuilder { []>( sql: string, - ...bindings: (Value | QueryBuilder)[] + ...bindings: RawBinding[] ): QueryBuilder; []>( sql: string, - bindings: (Value | QueryBuilder)[] | ValueDict + bindings: RawBinding[] | ValueDict ): QueryBuilder; []>(raw: Raw): QueryBuilder< TRecord,