kysely 0.7.9 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +47 -8
  2. package/dist/cjs/dialect/mysql/mysql-driver.js +5 -5
  3. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  4. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -29
  5. package/dist/cjs/dialect/postgres/postgres-driver.js +5 -5
  6. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
  7. package/dist/cjs/operation-node/create-schema-node.js +2 -2
  8. package/dist/cjs/operation-node/create-table-node.d.ts +1 -5
  9. package/dist/cjs/operation-node/create-table-node.js +1 -31
  10. package/dist/cjs/operation-node/operation-node-source.d.ts +1 -1
  11. package/dist/cjs/operation-node/operation-node-transformer.js +2 -1
  12. package/dist/cjs/operation-node/primitive-value-list-node.js +1 -1
  13. package/dist/cjs/parser/join-parser.d.ts +6 -3
  14. package/dist/cjs/parser/table-parser.d.ts +18 -7
  15. package/dist/cjs/query-builder/function-builder.d.ts +6 -6
  16. package/dist/cjs/query-builder/function-builder.js +7 -7
  17. package/dist/cjs/query-builder/query-builder.d.ts +7 -7
  18. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  19. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -2
  20. package/dist/cjs/query-compiler/default-query-compiler.js +22 -28
  21. package/dist/cjs/query-creator.d.ts +14 -11
  22. package/dist/cjs/query-creator.js +14 -11
  23. package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
  24. package/dist/cjs/raw-builder/raw-builder.js +6 -6
  25. package/dist/cjs/schema/alter-table-builder.d.ts +3 -0
  26. package/dist/cjs/schema/alter-table-builder.js +3 -0
  27. package/dist/cjs/schema/column-definition-builder.d.ts +14 -5
  28. package/dist/cjs/schema/create-schema-builder.js +1 -1
  29. package/dist/cjs/schema/create-table-builder.d.ts +55 -10
  30. package/dist/cjs/schema/create-table-builder.js +59 -17
  31. package/dist/cjs/schema/schema.d.ts +37 -2
  32. package/dist/cjs/schema/schema.js +36 -1
  33. package/dist/cjs/util/object-utils.d.ts +1 -0
  34. package/dist/cjs/util/object-utils.js +5 -1
  35. package/dist/cjs/util/type-utils.d.ts +3 -0
  36. package/dist/esm/dialect/mysql/mysql-driver.js +5 -5
  37. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  38. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -29
  39. package/dist/esm/dialect/postgres/postgres-driver.js +5 -5
  40. package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
  41. package/dist/esm/operation-node/create-schema-node.js +2 -2
  42. package/dist/esm/operation-node/create-table-node.d.ts +1 -5
  43. package/dist/esm/operation-node/create-table-node.js +1 -31
  44. package/dist/esm/operation-node/operation-node-source.d.ts +1 -1
  45. package/dist/esm/operation-node/operation-node-transformer.js +2 -1
  46. package/dist/esm/operation-node/primitive-value-list-node.js +1 -1
  47. package/dist/esm/parser/join-parser.d.ts +6 -3
  48. package/dist/esm/parser/table-parser.d.ts +18 -7
  49. package/dist/esm/query-builder/function-builder.d.ts +6 -6
  50. package/dist/esm/query-builder/function-builder.js +7 -7
  51. package/dist/esm/query-builder/query-builder.d.ts +7 -7
  52. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  53. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -2
  54. package/dist/esm/query-compiler/default-query-compiler.js +22 -28
  55. package/dist/esm/query-creator.d.ts +14 -11
  56. package/dist/esm/query-creator.js +14 -11
  57. package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
  58. package/dist/esm/raw-builder/raw-builder.js +6 -6
  59. package/dist/esm/schema/alter-table-builder.d.ts +3 -0
  60. package/dist/esm/schema/alter-table-builder.js +3 -0
  61. package/dist/esm/schema/column-definition-builder.d.ts +14 -5
  62. package/dist/esm/schema/create-schema-builder.js +1 -1
  63. package/dist/esm/schema/create-table-builder.d.ts +55 -10
  64. package/dist/esm/schema/create-table-builder.js +60 -18
  65. package/dist/esm/schema/schema.d.ts +37 -2
  66. package/dist/esm/schema/schema.js +36 -1
  67. package/dist/esm/util/object-utils.d.ts +1 -0
  68. package/dist/esm/util/object-utils.js +3 -0
  69. package/dist/esm/util/type-utils.d.ts +3 -0
  70. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isPrimitive = exports.isBigInt = exports.isBuffer = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isEmpty = void 0;
3
+ exports.noop = exports.isReadonlyArray = exports.asReadonlyArray = exports.asArray = exports.freeze = exports.getLast = exports.isObject = exports.isFunction = exports.isPrimitive = exports.isBigInt = exports.isBuffer = exports.isDate = exports.isNull = exports.isBoolean = exports.isNumber = exports.isString = exports.isEmpty = void 0;
4
4
  function isEmpty(obj) {
5
5
  if (Array.isArray(obj) || isString(obj) || Buffer.isBuffer(obj)) {
6
6
  return obj.length === 0;
@@ -87,3 +87,7 @@ function isReadonlyArray(arg) {
87
87
  return Array.isArray(arg);
88
88
  }
89
89
  exports.isReadonlyArray = isReadonlyArray;
90
+ function noop(obj) {
91
+ return obj;
92
+ }
93
+ exports.noop = noop;
@@ -154,4 +154,7 @@ export declare type ManyResultRowType<O> = O extends InsertResultTypeTag ? numbe
154
154
  export declare type SingleResultRowType<O> = O extends InsertResultTypeTag ? number | undefined : O extends DeleteResultTypeTag ? number : O extends UpdateResultTypeTag ? number : O | undefined;
155
155
  export declare type NonEmptySingleResultRowType<O> = O extends InsertResultTypeTag ? number : O extends DeleteResultTypeTag ? number : O extends UpdateResultTypeTag ? number : O;
156
156
  export declare type UnknownRow = Record<string, unknown>;
157
+ export declare type Nullable<T> = {
158
+ [P in keyof T]: T[P] | null;
159
+ };
157
160
  export {};
@@ -50,16 +50,16 @@ export class MysqlDriver {
50
50
  // On mysql this sets the isolation level of the next transaction.
51
51
  await connection.executeQuery({
52
52
  sql: `set transaction isolation level ${settings.isolationLevel}`,
53
- bindings: [],
53
+ parameters: [],
54
54
  });
55
55
  }
56
- await connection.executeQuery({ sql: 'begin', bindings: [] });
56
+ await connection.executeQuery({ sql: 'begin', parameters: [] });
57
57
  }
58
58
  async commitTransaction(connection) {
59
- await connection.executeQuery({ sql: 'commit', bindings: [] });
59
+ await connection.executeQuery({ sql: 'commit', parameters: [] });
60
60
  }
61
61
  async rollbackTransaction(connection) {
62
- await connection.executeQuery({ sql: 'rollback', bindings: [] });
62
+ await connection.executeQuery({ sql: 'rollback', parameters: [] });
63
63
  }
64
64
  async releaseConnection(connection) {
65
65
  const mysqlConnection = connection;
@@ -127,7 +127,7 @@ class MysqlConnection {
127
127
  }
128
128
  #executeQuery(compiledQuery) {
129
129
  return new Promise((resolve, reject) => {
130
- this.#rawConnection.query(compiledQuery.sql, compiledQuery.bindings, (err, result) => {
130
+ this.#rawConnection.query(compiledQuery.sql, compiledQuery.parameters, (err, result) => {
131
131
  if (err) {
132
132
  reject(err);
133
133
  }
@@ -1,7 +1,5 @@
1
- import { ColumnDefinitionNode } from '../../operation-node/column-definition-node.js';
2
1
  import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
3
2
  export declare class MysqlQueryCompiler extends DefaultQueryCompiler {
4
- protected visitColumnDefinition(node: ColumnDefinitionNode): void;
5
3
  protected visitReturning(): void;
6
4
  protected getSql(): string;
7
5
  protected getCurrentParameterPlaceholder(): string;
@@ -1,34 +1,5 @@
1
1
  import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
2
2
  export class MysqlQueryCompiler extends DefaultQueryCompiler {
3
- visitColumnDefinition(node) {
4
- this.visitNode(node.column);
5
- this.append(' ');
6
- this.visitNode(node.dataType);
7
- if (node.defaultTo) {
8
- this.append(' default ');
9
- this.visitNode(node.defaultTo);
10
- }
11
- if (!node.isNullable || node.isAutoIncrementing) {
12
- this.append(' not null');
13
- }
14
- if (node.isAutoIncrementing) {
15
- this.append(' auto_increment');
16
- }
17
- if (node.isUnique) {
18
- this.append(' unique');
19
- }
20
- if (node.isPrimaryKey) {
21
- this.append(' primary key');
22
- }
23
- if (node.references) {
24
- this.append(' ');
25
- this.visitNode(node.references);
26
- }
27
- if (node.check) {
28
- this.append(' ');
29
- this.visitNode(node.check);
30
- }
31
- }
32
3
  visitReturning() {
33
4
  // Do nothing.
34
5
  }
@@ -37,18 +37,18 @@ export class PostgresDriver {
37
37
  if (settings.isolationLevel) {
38
38
  await connection.executeQuery({
39
39
  sql: `start transaction isolation level ${settings.isolationLevel}`,
40
- bindings: [],
40
+ parameters: [],
41
41
  });
42
42
  }
43
43
  else {
44
- await connection.executeQuery({ sql: 'begin', bindings: [] });
44
+ await connection.executeQuery({ sql: 'begin', parameters: [] });
45
45
  }
46
46
  }
47
47
  async commitTransaction(connection) {
48
- await connection.executeQuery({ sql: 'commit', bindings: [] });
48
+ await connection.executeQuery({ sql: 'commit', parameters: [] });
49
49
  }
50
50
  async rollbackTransaction(connection) {
51
- await connection.executeQuery({ sql: 'rollback', bindings: [] });
51
+ await connection.executeQuery({ sql: 'rollback', parameters: [] });
52
52
  }
53
53
  async releaseConnection(connection) {
54
54
  const pgConnection = connection;
@@ -86,7 +86,7 @@ class PostgresConnection {
86
86
  }
87
87
  async executeQuery(compiledQuery) {
88
88
  const result = await this.#client.query(compiledQuery.sql, [
89
- ...compiledQuery.bindings,
89
+ ...compiledQuery.parameters,
90
90
  ]);
91
91
  if (result.command === 'UPDATE' || result.command === 'DELETE') {
92
92
  return {
@@ -13,5 +13,5 @@ export interface CreateSchemaNode extends OperationNode {
13
13
  export declare const CreateSchemaNode: Readonly<{
14
14
  is(node: OperationNode): node is CreateSchemaNode;
15
15
  create(schema: string, params?: CreateSchemaNodeParams | undefined): CreateSchemaNode;
16
- cloneWithModifier(createSchema: CreateSchemaNode, modifier: CreateSchemaNodeModifier): CreateSchemaNode;
16
+ cloneWith(createSchema: CreateSchemaNode, params: CreateSchemaNodeParams): CreateSchemaNode;
17
17
  }>;
@@ -14,10 +14,10 @@ export const CreateSchemaNode = freeze({
14
14
  ...params,
15
15
  });
16
16
  },
17
- cloneWithModifier(createSchema, modifier) {
17
+ cloneWith(createSchema, params) {
18
18
  return freeze({
19
19
  ...createSchema,
20
- modifier,
20
+ ...params,
21
21
  });
22
22
  },
23
23
  });
@@ -1,6 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
- import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
4
3
  import { ConstraintNode } from './constraint-node.js';
5
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
6
5
  export declare type CreateTableNodeModifier = 'IfNotExists';
@@ -19,8 +18,5 @@ export declare const CreateTableNode: Readonly<{
19
18
  create(table: TableNode): CreateTableNode;
20
19
  cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
21
20
  cloneWithModifier(createTable: CreateTableNode, modifier: CreateTableNodeModifier): CreateTableNode;
22
- cloneWithPrimaryKeyConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
23
- cloneWithUniqueConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
24
- cloneWithCheckConstraint(createTable: CreateTableNode, constraintName: string, sql: string): CreateTableNode;
25
- cloneWithForeignKeyConstraint(createTable: CreateTableNode, constraint: ForeignKeyConstraintNode): CreateTableNode;
21
+ cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
26
22
  }>;
@@ -1,7 +1,4 @@
1
1
  import { freeze } from '../util/object-utils.js';
2
- import { CheckConstraintNode } from './check-constraint-node.js';
3
- import { PrimaryConstraintNode } from './primary-constraint-node.js';
4
- import { UniqueConstraintNode } from './unique-constraint-node.js';
5
2
  /**
6
3
  * @internal
7
4
  */
@@ -28,34 +25,7 @@ export const CreateTableNode = freeze({
28
25
  modifier,
29
26
  });
30
27
  },
31
- cloneWithPrimaryKeyConstraint(createTable, constraintName, columns) {
32
- const constraint = PrimaryConstraintNode.create(columns, constraintName);
33
- return freeze({
34
- ...createTable,
35
- constraints: createTable.constraints
36
- ? freeze([...createTable.constraints, constraint])
37
- : freeze([constraint]),
38
- });
39
- },
40
- cloneWithUniqueConstraint(createTable, constraintName, columns) {
41
- const constraint = UniqueConstraintNode.create(columns, constraintName);
42
- return freeze({
43
- ...createTable,
44
- constraints: createTable.constraints
45
- ? freeze([...createTable.constraints, constraint])
46
- : freeze([constraint]),
47
- });
48
- },
49
- cloneWithCheckConstraint(createTable, constraintName, sql) {
50
- const constraint = CheckConstraintNode.create(sql, constraintName);
51
- return freeze({
52
- ...createTable,
53
- constraints: createTable.constraints
54
- ? freeze([...createTable.constraints, constraint])
55
- : freeze([constraint]),
56
- });
57
- },
58
- cloneWithForeignKeyConstraint(createTable, constraint) {
28
+ cloneWithConstraint(createTable, constraint) {
59
29
  return freeze({
60
30
  ...createTable,
61
31
  constraints: createTable.constraints
@@ -2,4 +2,4 @@ import { OperationNode } from './operation-node.js';
2
2
  export interface OperationNodeSource {
3
3
  toOperationNode(): OperationNode;
4
4
  }
5
- export declare function isOperationNodeSource(obj: any): obj is OperationNodeSource;
5
+ export declare function isOperationNodeSource(obj: unknown): obj is OperationNodeSource;
@@ -453,11 +453,12 @@ export class OperationNodeTransformer {
453
453
  kind: 'AlterTableNode',
454
454
  table: this.transformNode(node.table),
455
455
  renameTo: this.transformNode(node.renameTo),
456
- renameColumn: this.transformNode(node.renameColumn),
457
456
  setSchema: this.transformNode(node.setSchema),
457
+ renameColumn: this.transformNode(node.renameColumn),
458
458
  addColumn: this.transformNode(node.addColumn),
459
459
  dropColumn: this.transformNode(node.dropColumn),
460
460
  alterColumn: this.transformNode(node.alterColumn),
461
+ modifyColumn: this.transformNode(node.modifyColumn),
461
462
  addConstraint: this.transformNode(node.addConstraint),
462
463
  dropConstraint: this.transformNode(node.dropConstraint),
463
464
  };
@@ -9,7 +9,7 @@ export const PrimitiveValueListNode = freeze({
9
9
  create(values) {
10
10
  return freeze({
11
11
  kind: 'PrimitiveValueListNode',
12
- values: freeze(values),
12
+ values: freeze([...values]),
13
13
  });
14
14
  },
15
15
  });
@@ -1,8 +1,11 @@
1
1
  import { JoinNode, JoinType } from '../operation-node/join-node.js';
2
2
  import { AnyColumn, AnyColumnWithTable } from '../util/type-utils.js';
3
- import { ExtractAliasFromTableExpression, TableExpressionDatabaseType } from './table-parser.js';
3
+ import { ExtractAliasFromTableExpression, TableExpressionDatabase } from './table-parser.js';
4
4
  import { JoinBuilder } from '../query-builder/join-builder.js';
5
5
  import { ParseContext } from './parse-context.js';
6
- export declare type JoinReferenceExpression<DB, TB extends keyof DB, F> = AnyColumn<TableExpressionDatabaseType<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>> | AnyColumnWithTable<TableExpressionDatabaseType<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>;
7
- export declare type JoinCallbackExpression<DB, TB extends keyof DB, F> = (join: JoinBuilder<TableExpressionDatabaseType<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>) => JoinBuilder<any, any>;
6
+ export declare type JoinReferenceExpression<DB, TB extends keyof DB, F> = AnyJoinColumn<DB, TB, F> | AnyJoinColumnWithTable<DB, TB, F>;
7
+ export declare type JoinCallbackExpression<DB, TB extends keyof DB, F> = (join: JoinBuilder<TableExpressionDatabase<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>) => JoinBuilder<any, any>;
8
+ declare type AnyJoinColumn<DB, TB extends keyof DB, F> = AnyColumn<TableExpressionDatabase<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>;
9
+ declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, F> = AnyColumnWithTable<TableExpressionDatabase<DB, F>, TB | ExtractAliasFromTableExpression<DB, F>>;
8
10
  export declare function parseJoin(ctx: ParseContext, joinType: JoinType, args: any[]): JoinNode;
11
+ export {};
@@ -1,21 +1,32 @@
1
1
  import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
2
2
  import { TableNode } from '../operation-node/table-node.js';
3
- import { AliasedQueryBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder } from '../util/type-utils.js';
3
+ import { AliasedQueryBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, Nullable } from '../util/type-utils.js';
4
4
  import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
5
5
  import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
6
6
  import { ParseContext } from './parse-context.js';
7
7
  export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB>;
8
8
  export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
9
9
  export declare type TableReference<DB> = AnyAliasedTable<DB, any, any> | AnyTable<DB> | AnyAliasedRawBuilder;
10
- export declare type QueryBuilderWithTable<DB, TB extends keyof DB, O, TE> = QueryBuilder<TableExpressionDatabaseType<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
11
- export declare type TableExpressionDatabaseType<DB, TE> = DB extends ExtractDatabaseTypeFromTableExpression<DB, TE> ? DB : DB & ExtractDatabaseTypeFromTableExpression<DB, TE>;
10
+ export declare type QueryBuilderWithTable<DB, TB extends keyof DB, O, TE> = QueryBuilder<TableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
11
+ export declare type TableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
12
+ [C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
13
+ };
14
+ export declare type QueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
15
+ export declare type LeftJoinTableExpressionDatabase<DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
16
+ [C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? DB[C] : never;
17
+ };
18
+ export declare type QueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
19
+ export declare type RightJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
20
+ [C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
21
+ };
22
+ export declare type QueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE> = QueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>, O>;
23
+ export declare type FullJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
24
+ [C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
25
+ };
12
26
  export declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
27
+ declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
13
28
  declare type AnyAliasedTable<DB, TB extends keyof DB, A extends string> = TB extends string ? `${TB} as ${A}` : never;
14
29
  declare type AnyTable<DB> = keyof DB;
15
- declare type ExtractDatabaseTypeFromTableExpression<DB, TE> = {
16
- [A in ExtractAliasFromTableExpression<DB, TE>]: ExtractRowTypeFromTableExpression<DB, TE, A>;
17
- };
18
- declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
19
30
  export declare function parseTableExpressionOrList(ctx: ParseContext, table: TableExpressionOrList<any, any>): TableExpressionNode[];
20
31
  export declare function parseTableExpression(ctx: ParseContext, table: TableExpression<any, any>): TableExpressionNode;
21
32
  export declare function parseAliasedTable(from: string): TableExpressionNode;
@@ -66,9 +66,9 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
66
66
  * Calls the `sum` function for the column given as the argument.
67
67
  *
68
68
  * If this is used in a `select` statement the type of the selected expression
69
- * will be `number | string` by default. This is because Kysely can't know the
70
- * type the db driver outputs. Sometimes the output can be larger than the
71
- * largest javascript number and a string is returned instead. Most drivers
69
+ * will be `number | string | BigInt` by default. This is because Kysely can't
70
+ * know the type the db driver outputs. Sometimes the output can be larger than
71
+ * the largest javascript number and a string is returned instead. Most drivers
72
72
  * allow you to configure the output type of large numbers and Kysely can't
73
73
  * know if you've done so.
74
74
  *
@@ -88,9 +88,9 @@ export declare class FunctionBuilder<DB, TB extends keyof DB> {
88
88
  * Calls the `count` function for the column given as the argument.
89
89
  *
90
90
  * If this is used in a `select` statement the type of the selected expression
91
- * will be `number | string` by default. This is because Kysely can't know the
92
- * type the db driver outputs. Sometimes the output can be larger than the
93
- * largest javascript number and a string is returned instead. Most drivers
91
+ * will be `number | string | BigInt` by default. This is because Kysely can't
92
+ * know the type the db driver outputs. Sometimes the output can be larger than
93
+ * the largest javascript number and a string is returned instead. Most drivers
94
94
  * allow you to configure the output type of large numbers and Kysely can't
95
95
  * know if you've done so.
96
96
  *
@@ -79,9 +79,9 @@ export class FunctionBuilder {
79
79
  * Calls the `sum` function for the column given as the argument.
80
80
  *
81
81
  * If this is used in a `select` statement the type of the selected expression
82
- * will be `number | string` by default. This is because Kysely can't know the
83
- * type the db driver outputs. Sometimes the output can be larger than the
84
- * largest javascript number and a string is returned instead. Most drivers
82
+ * will be `number | string | BigInt` by default. This is because Kysely can't
83
+ * know the type the db driver outputs. Sometimes the output can be larger than
84
+ * the largest javascript number and a string is returned instead. Most drivers
85
85
  * allow you to configure the output type of large numbers and Kysely can't
86
86
  * know if you've done so.
87
87
  *
@@ -103,9 +103,9 @@ export class FunctionBuilder {
103
103
  * Calls the `count` function for the column given as the argument.
104
104
  *
105
105
  * If this is used in a `select` statement the type of the selected expression
106
- * will be `number | string` by default. This is because Kysely can't know the
107
- * type the db driver outputs. Sometimes the output can be larger than the
108
- * largest javascript number and a string is returned instead. Most drivers
106
+ * will be `number | string | BigInt` by default. This is because Kysely can't
107
+ * know the type the db driver outputs. Sometimes the output can be larger than
108
+ * the largest javascript number and a string is returned instead. Most drivers
109
109
  * allow you to configure the output type of large numbers and Kysely can't
110
110
  * know if you've done so.
111
111
  *
@@ -128,7 +128,7 @@ export class FunctionBuilder {
128
128
  queryId: createQueryId(),
129
129
  executor: this.#props.executor,
130
130
  sql: `${fn}(??)`,
131
- params: [column],
131
+ parameters: [column],
132
132
  });
133
133
  }
134
134
  }
@@ -2,7 +2,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
5
- import { TableExpression, QueryBuilderWithTable } from '../parser/table-parser.js';
5
+ import { TableExpression, QueryBuilderWithTable, QueryBuilderWithLeftJoin, QueryBuilderWithRightJoin, QueryBuilderWithFullJoin } from '../parser/table-parser.js';
6
6
  import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
7
7
  import { ExistsExpression, FilterOperator } from '../parser/filter-parser.js';
8
8
  import { InsertObject } from '../parser/insert-values-parser.js';
@@ -869,20 +869,20 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
869
869
  * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a left join
870
870
  * instead of an inner join.
871
871
  */
872
- leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
873
- leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
872
+ leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithLeftJoin<DB, TB, O, TE>;
873
+ leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithLeftJoin<DB, TB, O, TE>;
874
874
  /**
875
875
  * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a right join
876
876
  * instead of an inner join.
877
877
  */
878
- rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
879
- rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
878
+ rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithRightJoin<DB, TB, O, TE>;
879
+ rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithRightJoin<DB, TB, O, TE>;
880
880
  /**
881
881
  * Just like {@link QueryBuilder.innerJoin | innerJoin} but adds a full join
882
882
  * instead of an inner join.
883
883
  */
884
- fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithTable<DB, TB, O, TE>;
885
- fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithTable<DB, TB, O, TE>;
884
+ fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): QueryBuilderWithFullJoin<DB, TB, O, TE>;
885
+ fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): QueryBuilderWithFullJoin<DB, TB, O, TE>;
886
886
  /**
887
887
  * Sets the values to insert for an {@link Kysely.insertInto | insert} query.
888
888
  *
@@ -1,4 +1,4 @@
1
1
  export interface CompiledQuery {
2
2
  readonly sql: string;
3
- readonly bindings: ReadonlyArray<any>;
3
+ readonly parameters: ReadonlyArray<any>;
4
4
  }
@@ -62,7 +62,7 @@ import { ModifyColumnNode } from '../operation-node/modify-column-node.js';
62
62
  import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
63
63
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
64
64
  #private;
65
- protected get numBindings(): number;
65
+ protected get numParameters(): number;
66
66
  compileQuery(node: RootOperationNode): CompiledQuery;
67
67
  protected getSql(): string;
68
68
  protected visitSelectQuery(node: SelectQueryNode): void;
@@ -92,6 +92,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
92
92
  protected visitTable(node: TableNode): void;
93
93
  protected visitCreateTable(node: CreateTableNode): void;
94
94
  protected visitColumnDefinition(node: ColumnDefinitionNode): void;
95
+ protected getAutoIncrement(): string;
95
96
  protected visitReferences(node: ReferencesNode): void;
96
97
  protected visitDropTable(node: DropTableNode): void;
97
98
  protected visitDataType(node: DataTypeNode): void;
@@ -129,6 +130,6 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
129
130
  protected getLeftIdentifierWrapper(): string;
130
131
  protected getRightIdentifierWrapper(): string;
131
132
  protected getCurrentParameterPlaceholder(): string;
132
- protected addBinding(binding: any): void;
133
+ protected addParameter(parameter: any): void;
133
134
  protected appendImmediateValue(value: PrimitiveValue): void;
134
135
  }
@@ -1,25 +1,24 @@
1
- import { DataTypeNode } from '../operation-node/data-type-node.js';
2
1
  import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
3
2
  import { QueryNode } from '../operation-node/query-node.js';
4
3
  import { RawNode } from '../operation-node/raw-node.js';
5
4
  import { getLast, freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
6
5
  export class DefaultQueryCompiler extends OperationNodeVisitor {
7
- #sqlFragments = [];
8
- #bindings = [];
9
- get numBindings() {
10
- return this.#bindings.length;
6
+ #sql = '';
7
+ #parameters = [];
8
+ get numParameters() {
9
+ return this.#parameters.length;
11
10
  }
12
11
  compileQuery(node) {
13
- this.#sqlFragments = [];
14
- this.#bindings = [];
12
+ this.#sql = '';
13
+ this.#parameters = [];
15
14
  this.visitNode(node);
16
15
  return freeze({
17
16
  sql: this.getSql(),
18
- bindings: this.#bindings,
17
+ parameters: this.#parameters,
19
18
  });
20
19
  }
21
20
  getSql() {
22
- return this.#sqlFragments.join('');
21
+ return this.#sql;
23
22
  }
24
23
  visitSelectQuery(node) {
25
24
  // This is a sub query if this is not the root node.
@@ -289,19 +288,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
289
288
  visitColumnDefinition(node) {
290
289
  this.visitNode(node.column);
291
290
  this.append(' ');
292
- if (node.isAutoIncrementing) {
293
- // Postgres overrides the data type for autoincrementing columns.
294
- if (DataTypeNode.is(node.dataType) &&
295
- node.dataType.dataType === 'bigint') {
296
- this.append('bigserial');
297
- }
298
- else {
299
- this.append('serial');
300
- }
301
- }
302
- else {
303
- this.visitNode(node.dataType);
304
- }
291
+ this.visitNode(node.dataType);
305
292
  if (node.defaultTo) {
306
293
  this.append(' default ');
307
294
  this.visitNode(node.defaultTo);
@@ -309,6 +296,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
309
296
  if (!node.isNullable) {
310
297
  this.append(' not null');
311
298
  }
299
+ if (node.isAutoIncrementing) {
300
+ this.append(' ');
301
+ this.append(this.getAutoIncrement());
302
+ }
312
303
  if (node.isUnique) {
313
304
  this.append(' unique');
314
305
  }
@@ -324,6 +315,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
324
315
  this.visitNode(node.check);
325
316
  }
326
317
  }
318
+ getAutoIncrement() {
319
+ return 'auto_increment';
320
+ }
327
321
  visitReferences(node) {
328
322
  this.append('references ');
329
323
  this.visitNode(node.table);
@@ -634,10 +628,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
634
628
  this.visitNode(node.constraintName);
635
629
  }
636
630
  append(str) {
637
- this.#sqlFragments.push(str);
631
+ this.#sql += str;
638
632
  }
639
633
  appendValue(value) {
640
- this.addBinding(value);
634
+ this.addParameter(value);
641
635
  this.append(this.getCurrentParameterPlaceholder());
642
636
  }
643
637
  getLeftIdentifierWrapper() {
@@ -647,10 +641,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
647
641
  return '"';
648
642
  }
649
643
  getCurrentParameterPlaceholder() {
650
- return '$' + this.numBindings;
644
+ return '$' + this.numParameters;
651
645
  }
652
- addBinding(binding) {
653
- this.#bindings.push(binding);
646
+ addParameter(parameter) {
647
+ this.#parameters.push(parameter);
654
648
  }
655
649
  appendImmediateValue(value) {
656
650
  if (isString(value)) {
@@ -678,7 +672,7 @@ const SELECT_MODIFIER_SQL = {
678
672
  ForNoKeyUpdate: 'for no key update',
679
673
  ForUpdate: 'for update',
680
674
  ForShare: 'for share',
681
- NoWait: 'no wait',
675
+ NoWait: 'nowait',
682
676
  SkipLocked: 'skip locked',
683
677
  };
684
678
  const JOIN_TYPE_SQL = {
@@ -10,7 +10,7 @@ export declare class QueryCreator<DB> {
10
10
  #private;
11
11
  constructor(props: QueryCreatorProps);
12
12
  /**
13
- * Creates a `select` query builder against the given table/tables.
13
+ * Creates a `select` query builder for the given table or tables.
14
14
  *
15
15
  * The tables passed to this method are built as the query's `from` clause.
16
16
  *
@@ -221,6 +221,9 @@ export declare class QueryCreator<DB> {
221
221
  * Sets the schema to be used for all table references that don't explicitly
222
222
  * specify a schema.
223
223
  *
224
+ * This only affects the query created through the builder returned from
225
+ * this method and doesn't modify the `db` instance.
226
+ *
224
227
  * @example
225
228
  * ```
226
229
  * await db.withSchema('mammals')
@@ -261,10 +264,10 @@ export declare class QueryCreator<DB> {
261
264
  * Provides a way to pass arbitrary SQL into your query and executing completely
262
265
  * raw queries.
263
266
  *
264
- * You can use strings `?` and `??` in the `sql` to bind parameters such as
267
+ * You can use the strings `?` and `??` in the `sql` to bind parameters such as
265
268
  * user input to the SQL. You should never EVER concatenate untrusted user
266
269
  * input to the SQL string to avoid injection vulnerabilities. Instead use `?`
267
- * in place of the value and pass the actual value in the `params` list. See
270
+ * in place of a value and pass the actual value in the `parameters` list. See
268
271
  * the examples below.
269
272
  *
270
273
  * You should only use `raw` when there is no other way to get the job done. This is
@@ -276,11 +279,11 @@ export declare class QueryCreator<DB> {
276
279
  * Raw builder instances can be passed to pretty much anywhere: `select`, `where`,
277
280
  * `*Join`, `groupBy`, `orderBy` etc. Just try it. If the method accepts it, it works.
278
281
  *
279
- * @param sql - The raw SQL. Special strings `?` and `??` can be used to provide
280
- * parameter bindings. `?` for values and `??` for identifiers such as column names
282
+ * @param sql - The raw SQL. Special strings `?` and `??` can be used as parameter
283
+ * placeholders. `?` for values and `??` for identifiers such as column names
281
284
  * or `column.table` references.
282
285
  *
283
- * @param params - The parameters that will be bound to the `?` and `??` bindings in
286
+ * @param params - The parameters that will be bound to the `?` and `??` placeholders in
284
287
  * the sql string.
285
288
  *
286
289
  * @example
@@ -318,7 +321,7 @@ export declare class QueryCreator<DB> {
318
321
  * the output type. In this case you need to use the `castTo` method on the query
319
322
  * to specify a return type for the query.
320
323
  *
321
- * We could've also used `??` bindings to provide `first_name` and `last_name` like
324
+ * We could've also used a `??` placeholder to provide `first_name` and `last_name` like
322
325
  * this:
323
326
  *
324
327
  * ```ts
@@ -333,9 +336,9 @@ export declare class QueryCreator<DB> {
333
336
  *
334
337
  * But it's often cleaner to just write the column names in the SQL. Again remember to
335
338
  * never concatenate column names or any other untrusted user input to the SQL string or you
336
- * are going to create an injection vulnerability. All user input should go to the bindings
339
+ * are going to create an injection vulnerability. All user input should go to the parameters
337
340
  * array, never to the SQL string directly. But if the column names or values are trusted
338
- * and known at compile time, there is no reason to use bindings.
341
+ * and known at compile time, there is no reason to use parameters.
339
342
  *
340
343
  * @example
341
344
  * Example of using `raw` in `where`:
@@ -361,7 +364,7 @@ export declare class QueryCreator<DB> {
361
364
  *
362
365
  * The function in the above example returns people that are older than the given number of
363
366
  * years. The number of years in this example is an untrusted user input, and therefore we use
364
- * a `?` binding for it.
367
+ * a `?` placeholder for it.
365
368
  *
366
369
  * @example
367
370
  * Example of creating a completely raw query from scratch:
@@ -375,7 +378,7 @@ export declare class QueryCreator<DB> {
375
378
  * The result of `execute()` method is always an array. In this case the type of
376
379
  * the `persons` variable is `Person[]`.
377
380
  */
378
- raw<T = unknown>(sql: string, params?: any[]): RawBuilder<T>;
381
+ raw<T = unknown>(sql: string, parameters?: any[]): RawBuilder<T>;
379
382
  }
380
383
  export interface QueryCreatorProps {
381
384
  readonly executor: QueryExecutor;