1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | import * as events from "events";
|
10 |
|
11 | type Callback = Function;
|
12 | type Client = Function;
|
13 | type Value = string | number | boolean | Date | Array<string> | Array<number> | Array<Date> | Array<boolean>;
|
14 | type ColumnName = string | Knex.Raw | Knex.QueryBuilder;
|
15 | type TableName = string | Knex.Raw | Knex.QueryBuilder;
|
16 |
|
17 | interface Knex extends Knex.QueryInterface {
|
18 | (tableName?: string): Knex.QueryBuilder;
|
19 | VERSION: string;
|
20 | __knex__: string;
|
21 |
|
22 | raw: Knex.RawBuilder;
|
23 | transaction: <R>(transactionScope: ((trx: Knex.Transaction) => void)) => Promise<any>;
|
24 | destroy(callback: Function): void;
|
25 | destroy(): Promise<void>;
|
26 |
|
27 | schema: Knex.SchemaBuilder;
|
28 |
|
29 | client: any;
|
30 | migrate: Knex.Migrator;
|
31 | seed: any;
|
32 | fn: any;
|
33 | on(eventName: string, callback: Function): Knex.QueryBuilder;
|
34 | }
|
35 |
|
36 | declare function Knex(config: Knex.Config): Knex;
|
37 |
|
38 | declare namespace Knex {
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | interface QueryInterface {
|
44 | select: Select;
|
45 | as: As;
|
46 | columns: Select;
|
47 | column: Select;
|
48 | from: Table;
|
49 | into: Table;
|
50 | table: Table;
|
51 | distinct: Distinct;
|
52 |
|
53 |
|
54 | join: Join;
|
55 | joinRaw: JoinRaw;
|
56 | innerJoin: Join;
|
57 | leftJoin: Join;
|
58 | leftOuterJoin: Join;
|
59 | rightJoin: Join;
|
60 | rightOuterJoin: Join;
|
61 | outerJoin: Join;
|
62 | fullOuterJoin: Join;
|
63 | crossJoin: Join;
|
64 |
|
65 |
|
66 | where: Where;
|
67 | andWhere: Where;
|
68 | orWhere: Where;
|
69 | whereNot: Where;
|
70 | andWhereNot: Where;
|
71 | orWhereNot: Where;
|
72 | whereRaw: WhereRaw;
|
73 | orWhereRaw: WhereRaw;
|
74 | andWhereRaw: WhereRaw;
|
75 | whereWrapped: WhereWrapped;
|
76 | havingWrapped: WhereWrapped;
|
77 | whereExists: WhereExists;
|
78 | orWhereExists: WhereExists;
|
79 | whereNotExists: WhereExists;
|
80 | orWhereNotExists: WhereExists;
|
81 | whereIn: WhereIn;
|
82 | orWhereIn: WhereIn;
|
83 | whereNotIn: WhereIn;
|
84 | orWhereNotIn: WhereIn;
|
85 | whereNull: WhereNull;
|
86 | orWhereNull: WhereNull;
|
87 | whereNotNull: WhereNull;
|
88 | orWhereNotNull: WhereNull;
|
89 | whereBetween: WhereBetween;
|
90 | orWhereBetween: WhereBetween;
|
91 | andWhereBetween: WhereBetween;
|
92 | whereNotBetween: WhereBetween;
|
93 | orWhereNotBetween: WhereBetween;
|
94 | andWhereNotBetween: WhereBetween;
|
95 |
|
96 |
|
97 | groupBy: GroupBy;
|
98 | groupByRaw: RawQueryBuilder;
|
99 |
|
100 |
|
101 | orderBy: OrderBy;
|
102 | orderByRaw: RawQueryBuilder;
|
103 |
|
104 |
|
105 | union: Union;
|
106 | unionAll(callback: Function): QueryBuilder;
|
107 |
|
108 |
|
109 | having: Having;
|
110 | andHaving: Having;
|
111 | havingRaw: RawQueryBuilder;
|
112 | orHaving: Having;
|
113 | orHavingRaw: RawQueryBuilder;
|
114 |
|
115 |
|
116 | offset(offset: number): QueryBuilder;
|
117 | limit(limit: number): QueryBuilder;
|
118 |
|
119 |
|
120 | count(columnName?: string): QueryBuilder;
|
121 | min(columnName: string): QueryBuilder;
|
122 | max(columnName: string): QueryBuilder;
|
123 | sum(columnName: string): QueryBuilder;
|
124 | avg(columnName: string): QueryBuilder;
|
125 | increment(columnName: string, amount?: number): QueryBuilder;
|
126 | decrement(columnName: string, amount?: number): QueryBuilder;
|
127 |
|
128 |
|
129 | first(...columns: string[]): QueryBuilder;
|
130 |
|
131 | debug(enabled?: boolean): QueryBuilder;
|
132 | pluck(column: string): QueryBuilder;
|
133 |
|
134 | insert(data: any, returning?: string | string[]): QueryBuilder;
|
135 | update(data: any, returning?: string | string[]): QueryBuilder;
|
136 | update(columnName: string, value: Value, returning?: string | string[]): QueryBuilder;
|
137 | returning(column: string | string[]): QueryBuilder;
|
138 |
|
139 | del(returning?: string | string[]): QueryBuilder;
|
140 | delete(returning?: string | string[]): QueryBuilder;
|
141 | truncate(): QueryBuilder;
|
142 |
|
143 | transacting(trx: Transaction): QueryBuilder;
|
144 | connection(connection: any): QueryBuilder;
|
145 |
|
146 | clone(): QueryBuilder;
|
147 | }
|
148 |
|
149 | interface As {
|
150 | (columnName: string): QueryBuilder;
|
151 | }
|
152 |
|
153 | interface Select extends ColumnNameQueryBuilder {
|
154 | }
|
155 |
|
156 | interface Table {
|
157 | (tableName: string): QueryBuilder;
|
158 | (callback: Function): QueryBuilder;
|
159 | }
|
160 |
|
161 | interface Distinct extends ColumnNameQueryBuilder {
|
162 | }
|
163 |
|
164 | interface Join {
|
165 | (raw: Raw): QueryBuilder;
|
166 | (tableName: string, columns: { [key: string]: string | Raw }): QueryBuilder;
|
167 | (tableName: string, callback: Function): QueryBuilder;
|
168 | (tableName: TableName, raw: Raw): QueryBuilder;
|
169 | (tableName: TableName, column1: string, column2: string): QueryBuilder;
|
170 | (tableName: TableName, column1: string, raw: Raw): QueryBuilder;
|
171 | (tableName: TableName, column1: string, operator: string, column2: string): QueryBuilder;
|
172 | }
|
173 |
|
174 | interface JoinClause {
|
175 | on(raw: Raw): JoinClause;
|
176 | on(callback: Function): JoinClause;
|
177 | on(columns: { [key: string]: string | Raw }): JoinClause;
|
178 | on(column1: string, column2: string): JoinClause;
|
179 | on(column1: string, raw: Raw): JoinClause;
|
180 | on(column1: string, operator: string, column2: string): JoinClause;
|
181 | andOn(raw: Raw): JoinClause;
|
182 | andOn(callback: Function): JoinClause;
|
183 | andOn(columns: { [key: string]: string | Raw }): JoinClause;
|
184 | andOn(column1: string, column2: string): JoinClause;
|
185 | andOn(column1: string, raw: Raw): JoinClause;
|
186 | andOn(column1: string, operator: string, column2: string): JoinClause;
|
187 | orOn(raw: Raw): JoinClause;
|
188 | orOn(callback: Function): JoinClause;
|
189 | orOn(columns: { [key: string]: string | Raw }): JoinClause;
|
190 | orOn(column1: string, column2: string): JoinClause;
|
191 | orOn(column1: string, raw: Raw): JoinClause;
|
192 | orOn(column1: string, operator: string, column2: string): JoinClause;
|
193 | using(column: string | string[] | Raw | { [key: string]: string | Raw }): JoinClause;
|
194 | type(type: string): JoinClause;
|
195 | }
|
196 |
|
197 | interface JoinRaw {
|
198 | (tableName: string, binding?: Value): QueryBuilder;
|
199 | }
|
200 |
|
201 | interface Where extends WhereRaw, WhereWrapped, WhereNull {
|
202 | (raw: Raw): QueryBuilder;
|
203 | (callback: (queryBuilder: QueryBuilder) => any): QueryBuilder;
|
204 | (object: Object): QueryBuilder;
|
205 | (columnName: string, value: Value): QueryBuilder;
|
206 | (columnName: string, operator: string, value: Value): QueryBuilder;
|
207 | (columnName: string, operator: string, query: QueryBuilder): QueryBuilder;
|
208 | }
|
209 |
|
210 | interface WhereRaw extends RawQueryBuilder {
|
211 | (condition: boolean): QueryBuilder;
|
212 | }
|
213 |
|
214 | interface WhereWrapped {
|
215 | (callback: Function): QueryBuilder;
|
216 | }
|
217 |
|
218 | interface WhereNull {
|
219 | (columnName: string): QueryBuilder;
|
220 | }
|
221 |
|
222 | interface WhereIn {
|
223 | (columnName: string, values: Value[]): QueryBuilder;
|
224 | (columnName: string, callback: Function): QueryBuilder;
|
225 | (columnName: string, query: QueryBuilder): QueryBuilder;
|
226 | }
|
227 |
|
228 | interface WhereBetween {
|
229 | (columnName: string, range: [Value, Value]): QueryBuilder;
|
230 | }
|
231 |
|
232 | interface WhereExists {
|
233 | (callback: Function): QueryBuilder;
|
234 | (query: QueryBuilder): QueryBuilder;
|
235 | }
|
236 |
|
237 | interface WhereNull {
|
238 | (columnName: string): QueryBuilder;
|
239 | }
|
240 |
|
241 | interface WhereIn {
|
242 | (columnName: string, values: Value[]): QueryBuilder;
|
243 | }
|
244 |
|
245 | interface GroupBy extends RawQueryBuilder, ColumnNameQueryBuilder {
|
246 | }
|
247 |
|
248 | interface OrderBy {
|
249 | (columnName: string, direction?: string): QueryBuilder;
|
250 | }
|
251 |
|
252 | interface Union {
|
253 | (callback: Function, wrap?: boolean): QueryBuilder;
|
254 | (callbacks: Function[], wrap?: boolean): QueryBuilder;
|
255 | (...callbacks: Function[]): QueryBuilder;
|
256 |
|
257 | }
|
258 |
|
259 | interface Having extends RawQueryBuilder, WhereWrapped {
|
260 | (tableName: string, column1: string, operator: string, column2: string): QueryBuilder;
|
261 | }
|
262 |
|
263 |
|
264 |
|
265 | interface ColumnNameQueryBuilder {
|
266 | (...columnNames: ColumnName[]): QueryBuilder;
|
267 | (columnNames: ColumnName[]): QueryBuilder;
|
268 | }
|
269 |
|
270 | interface RawQueryBuilder {
|
271 | (sql: string, ...bindings: Value[]): QueryBuilder;
|
272 | (sql: string, bindings: Value[]): QueryBuilder;
|
273 | (raw: Raw): QueryBuilder;
|
274 | }
|
275 |
|
276 |
|
277 |
|
278 | interface Raw extends events.EventEmitter, ChainableInterface {
|
279 | wrap(before: string, after: string): Raw;
|
280 | }
|
281 |
|
282 | interface RawBuilder {
|
283 | (value: Value): Raw;
|
284 | (sql: string, ...bindings: Value[]): Raw;
|
285 | (sql: string, bindings: Value[]): Raw;
|
286 | (sql: string, bindings: Object): Raw;
|
287 | }
|
288 |
|
289 |
|
290 |
|
291 |
|
292 |
|
293 | interface QueryBuilder extends QueryInterface, ChainableInterface {
|
294 | or: QueryBuilder;
|
295 | and: QueryBuilder;
|
296 |
|
297 |
|
298 | columnInfo(column?: string): Promise<ColumnInfo>;
|
299 |
|
300 | forUpdate(): QueryBuilder;
|
301 | forShare(): QueryBuilder;
|
302 |
|
303 | toSQL(): Sql;
|
304 |
|
305 | on(event: string, callback: Function): QueryBuilder;
|
306 | }
|
307 |
|
308 | interface Sql {
|
309 | method: string;
|
310 | options: any;
|
311 | bindings: Value[];
|
312 | sql: string;
|
313 | }
|
314 |
|
315 |
|
316 |
|
317 |
|
318 |
|
319 | interface ChainableInterface extends Promise<any> {
|
320 | toQuery(): string;
|
321 | options(options: any): QueryBuilder;
|
322 | stream(options?: any, callback?: (builder: QueryBuilder) => any): QueryBuilder;
|
323 | stream(callback?: (builder: QueryBuilder) => any): QueryBuilder;
|
324 | pipe(writable: any): QueryBuilder;
|
325 | exec(callback: Function): QueryBuilder;
|
326 | }
|
327 |
|
328 | interface Transaction extends QueryBuilder {
|
329 | commit: any;
|
330 | rollback: any;
|
331 | }
|
332 |
|
333 |
|
334 |
|
335 |
|
336 |
|
337 | interface SchemaBuilder extends Promise<any> {
|
338 | createTable(tableName: string, callback: (tableBuilder: CreateTableBuilder) => any): SchemaBuilder;
|
339 | createTableIfNotExists(tableName: string, callback: (tableBuilder: CreateTableBuilder) => any): SchemaBuilder;
|
340 | renameTable(oldTableName: string, newTableName: string): Promise<void>;
|
341 | dropTable(tableName: string): SchemaBuilder;
|
342 | hasTable(tableName: string): Promise<boolean>;
|
343 | hasColumn(tableName: string, columnName: string): Promise<boolean>;
|
344 | table(tableName: string, callback: (tableBuilder: AlterTableBuilder) => any): Promise<void>;
|
345 | dropTableIfExists(tableName: string): Promise<void>;
|
346 | raw(statement: string): SchemaBuilder;
|
347 | }
|
348 |
|
349 | interface TableBuilder {
|
350 | increments(columnName?: string): ColumnBuilder;
|
351 | bigIncrements(columnName?: string): ColumnBuilder;
|
352 | dropColumn(columnName: string): TableBuilder;
|
353 | dropColumns(...columnNames: string[]): TableBuilder;
|
354 | renameColumn(from: string, to: string): ColumnBuilder;
|
355 | integer(columnName: string): ColumnBuilder;
|
356 | bigInteger(columnName: string): ColumnBuilder;
|
357 | text(columnName: string, textType?: string): ColumnBuilder;
|
358 | string(columnName: string, length?: number): ColumnBuilder;
|
359 | float(columnName: string, precision?: number, scale?: number): ColumnBuilder;
|
360 | decimal(columnName: string, precision?: number, scale?: number): ColumnBuilder;
|
361 | boolean(columnName: string): ColumnBuilder;
|
362 | date(columnName: string): ColumnBuilder;
|
363 | dateTime(columnName: string): ColumnBuilder;
|
364 | time(columnName: string): ColumnBuilder;
|
365 | timestamp(columnName: string): ColumnBuilder;
|
366 | timestamps(): ColumnBuilder;
|
367 | binary(columnName: string): ColumnBuilder;
|
368 | enum(columnName: string, values: Value[]): ColumnBuilder;
|
369 | enu(columnName: string, values: Value[]): ColumnBuilder;
|
370 | json(columnName: string): ColumnBuilder;
|
371 | uuid(columnName: string): ColumnBuilder;
|
372 | comment(val: string): TableBuilder;
|
373 | specificType(columnName: string, type: string): ColumnBuilder;
|
374 | primary(columnNames: string[]): TableBuilder;
|
375 | index(columnNames: string[], indexName?: string, indexType?: string): TableBuilder;
|
376 | unique(columnNames: string[], indexName?: string): TableBuilder;
|
377 | foreign(column: string): ForeignConstraintBuilder;
|
378 | foreign(columns: string[]): MultikeyForeignConstraintBuilder;
|
379 | dropForeign(columnNames: string[], foreignKeyName?: string): TableBuilder;
|
380 | }
|
381 |
|
382 | interface CreateTableBuilder extends TableBuilder {
|
383 | }
|
384 |
|
385 | interface MySqlTableBuilder extends CreateTableBuilder {
|
386 | engine(val: string): CreateTableBuilder;
|
387 | charset(val: string): CreateTableBuilder;
|
388 | collate(val: string): CreateTableBuilder;
|
389 | }
|
390 |
|
391 | interface AlterTableBuilder extends TableBuilder {
|
392 | }
|
393 |
|
394 | interface MySqlAlterTableBuilder extends AlterTableBuilder {
|
395 | }
|
396 |
|
397 | interface ColumnBuilder {
|
398 | index(indexName?: string): ColumnBuilder;
|
399 | primary(): ColumnBuilder;
|
400 | unique(): ColumnBuilder;
|
401 | references(columnName: string): ReferencingColumnBuilder;
|
402 | onDelete(command: string): ColumnBuilder;
|
403 | onUpdate(command: string): ColumnBuilder;
|
404 | defaultTo(value: Value): ColumnBuilder;
|
405 | unsigned(): ColumnBuilder;
|
406 | notNullable(): ColumnBuilder;
|
407 | nullable(): ColumnBuilder;
|
408 | comment(value: string): ColumnBuilder;
|
409 | }
|
410 |
|
411 | interface ForeignConstraintBuilder {
|
412 | references(columnName: string): ReferencingColumnBuilder;
|
413 | }
|
414 |
|
415 | interface MultikeyForeignConstraintBuilder {
|
416 | references(columnNames: string[]): ReferencingColumnBuilder;
|
417 | }
|
418 |
|
419 | interface PostgreSqlColumnBuilder extends ColumnBuilder {
|
420 | index(indexName?: string, indexType?: string): ColumnBuilder;
|
421 | }
|
422 |
|
423 | interface ReferencingColumnBuilder {
|
424 | inTable(tableName: string): ColumnBuilder;
|
425 | }
|
426 |
|
427 | interface AlterColumnBuilder extends ColumnBuilder {
|
428 | }
|
429 |
|
430 | interface MySqlAlterColumnBuilder extends AlterColumnBuilder {
|
431 | first(): AlterColumnBuilder;
|
432 | after(columnName: string): AlterColumnBuilder;
|
433 | }
|
434 |
|
435 |
|
436 |
|
437 |
|
438 |
|
439 | interface ColumnInfo {
|
440 | defaultValue: Value;
|
441 | type: string;
|
442 | maxLength: number;
|
443 | nullable: boolean;
|
444 | }
|
445 |
|
446 | interface Config {
|
447 | debug?: boolean;
|
448 | client?: string;
|
449 | dialect?: string;
|
450 | connection?: string | ConnectionConfig | MariaSqlConnectionConfig |
|
451 | Sqlite3ConnectionConfig | SocketConnectionConfig;
|
452 | pool?: PoolConfig;
|
453 | migrations?: MigratorConfig;
|
454 | }
|
455 |
|
456 | interface ConnectionConfig {
|
457 | host: string;
|
458 | user: string;
|
459 | password: string;
|
460 | database: string;
|
461 | debug?: boolean;
|
462 | }
|
463 |
|
464 |
|
465 | interface MariaSqlConnectionConfig {
|
466 | user?: string;
|
467 | password?: string;
|
468 | host?: string;
|
469 | port?: number;
|
470 | unixSocket?: string;
|
471 | protocol?: string;
|
472 | db?: string;
|
473 | keepQueries?: boolean;
|
474 | multiStatements?: boolean;
|
475 | connTimeout?: number;
|
476 | pingInterval?: number;
|
477 | secureAuth?: boolean;
|
478 | compress?: boolean;
|
479 | ssl?: boolean | MariaSslConfiguration;
|
480 | local_infile?: boolean;
|
481 | read_default_file?: string;
|
482 | read_default_group?: string;
|
483 | charset?: string;
|
484 | streamHWM?: number;
|
485 | }
|
486 |
|
487 | interface MariaSslConfiguration {
|
488 | key?: string;
|
489 | cert?: string;
|
490 | ca?: string;
|
491 | capath?: string;
|
492 | cipher?: string;
|
493 | rejectUnauthorized?: boolean;
|
494 | }
|
495 |
|
496 |
|
497 | interface Sqlite3ConnectionConfig {
|
498 | filename: string;
|
499 | debug?: boolean;
|
500 | }
|
501 |
|
502 | interface SocketConnectionConfig {
|
503 | socketPath: string;
|
504 | user: string;
|
505 | password: string;
|
506 | database: string;
|
507 | debug?: boolean;
|
508 | }
|
509 |
|
510 | interface PoolConfig {
|
511 | name?: string;
|
512 | create?: Function;
|
513 | afterCreate?: Function;
|
514 | destroy?: Function;
|
515 | beforeDestroy?: Function;
|
516 | min?: number;
|
517 | max?: number;
|
518 | refreshIdle?: boolean;
|
519 | idleTimeoutMillis?: number;
|
520 | reapIntervalMillis?: number;
|
521 | returnToHead?: boolean;
|
522 | priorityRange?: number;
|
523 | validate?: Function;
|
524 | log?: boolean;
|
525 | }
|
526 |
|
527 | interface MigratorConfig {
|
528 | database?: string;
|
529 | directory?: string;
|
530 | extension?: string;
|
531 | tableName?: string;
|
532 | }
|
533 |
|
534 | interface Migrator {
|
535 | make(name: string, config?: MigratorConfig): Promise<string>;
|
536 | latest(config?: MigratorConfig): Promise<any>;
|
537 | rollback(config?: MigratorConfig): Promise<any>;
|
538 | status(config?: MigratorConfig): Promise<number>;
|
539 | currentVersion(config?: MigratorConfig): Promise<string>;
|
540 | }
|
541 | }
|
542 |
|
543 | export = Knex;
|