kysely 0.13.0 → 0.15.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 (140) hide show
  1. package/README.md +92 -32
  2. package/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
  3. package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
  4. package/dist/cjs/dialect/dialect.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +3 -3
  8. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -3
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  12. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +3 -3
  14. package/dist/cjs/index.d.ts +6 -3
  15. package/dist/cjs/index.js +6 -3
  16. package/dist/cjs/kysely.d.ts +8 -40
  17. package/dist/cjs/kysely.js +8 -40
  18. package/dist/cjs/migration/file-migration-provider.d.ts +52 -0
  19. package/dist/cjs/migration/file-migration-provider.js +52 -0
  20. package/dist/{esm/migration/migration.d.ts → cjs/migration/migrator.d.ts} +159 -134
  21. package/dist/cjs/migration/{migration.js → migrator.js} +166 -57
  22. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/check-constraint-node.js +2 -3
  24. package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
  25. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  26. package/dist/cjs/operation-node/generated-node.d.ts +20 -0
  27. package/dist/cjs/operation-node/generated-node.js +31 -0
  28. package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
  29. package/dist/cjs/operation-node/on-conflict-node.js +39 -1
  30. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -2
  31. package/dist/cjs/operation-node/operation-node-transformer.js +11 -5
  32. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -2
  33. package/dist/cjs/operation-node/operation-node-visitor.js +1 -1
  34. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  35. package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
  36. package/dist/cjs/parser/insert-values-parser.js +2 -3
  37. package/dist/cjs/parser/reference-parser.d.ts +4 -3
  38. package/dist/cjs/parser/select-parser.d.ts +10 -4
  39. package/dist/cjs/parser/update-set-parser.d.ts +2 -1
  40. package/dist/cjs/query-builder/delete-query-builder.d.ts +2 -4
  41. package/dist/cjs/query-builder/insert-query-builder.d.ts +80 -95
  42. package/dist/cjs/query-builder/insert-query-builder.js +145 -15
  43. package/dist/cjs/query-builder/on-conflict-builder.d.ts +686 -0
  44. package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
  45. package/dist/cjs/query-builder/returning-interface.d.ts +2 -4
  46. package/dist/cjs/query-builder/select-query-builder.d.ts +1 -1
  47. package/dist/cjs/query-builder/update-query-builder.d.ts +2 -4
  48. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -2
  49. package/dist/cjs/query-compiler/default-query-compiler.js +33 -7
  50. package/dist/cjs/query-creator.d.ts +0 -2
  51. package/dist/cjs/query-creator.js +0 -2
  52. package/dist/cjs/schema/alter-table-builder.d.ts +29 -9
  53. package/dist/cjs/schema/alter-table-builder.js +33 -9
  54. package/dist/cjs/schema/column-definition-builder.d.ts +28 -8
  55. package/dist/cjs/schema/column-definition-builder.js +17 -7
  56. package/dist/cjs/schema/create-index-builder.d.ts +3 -2
  57. package/dist/cjs/schema/create-index-builder.js +2 -2
  58. package/dist/cjs/schema/create-table-builder.d.ts +3 -2
  59. package/dist/cjs/schema/create-table-builder.js +2 -2
  60. package/dist/cjs/util/column-type.d.ts +165 -0
  61. package/dist/cjs/util/column-type.js +2 -0
  62. package/dist/cjs/util/private-symbols.d.ts +5 -0
  63. package/dist/cjs/util/private-symbols.js +8 -0
  64. package/dist/cjs/util/type-utils.d.ts +6 -42
  65. package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
  66. package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
  67. package/dist/esm/dialect/dialect.d.ts +1 -1
  68. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
  69. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  70. package/dist/esm/dialect/mysql/mysql-introspector.js +1 -1
  71. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
  72. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  73. package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
  74. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  75. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  76. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  77. package/dist/esm/index.d.ts +6 -3
  78. package/dist/esm/index.js +6 -3
  79. package/dist/esm/kysely.d.ts +8 -40
  80. package/dist/esm/kysely.js +8 -40
  81. package/dist/esm/migration/file-migration-provider.d.ts +52 -0
  82. package/dist/esm/migration/file-migration-provider.js +48 -0
  83. package/dist/{cjs/migration/migration.d.ts → esm/migration/migrator.d.ts} +159 -134
  84. package/dist/esm/migration/{migration.js → migrator.js} +165 -56
  85. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  86. package/dist/esm/operation-node/check-constraint-node.js +2 -3
  87. package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
  88. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  89. package/dist/esm/operation-node/generated-node.d.ts +20 -0
  90. package/dist/esm/operation-node/generated-node.js +28 -0
  91. package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
  92. package/dist/esm/operation-node/on-conflict-node.js +39 -1
  93. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -2
  94. package/dist/esm/operation-node/operation-node-transformer.js +11 -5
  95. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -2
  96. package/dist/esm/operation-node/operation-node-visitor.js +1 -1
  97. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  98. package/dist/esm/parser/insert-values-parser.d.ts +4 -4
  99. package/dist/esm/parser/insert-values-parser.js +2 -3
  100. package/dist/esm/parser/reference-parser.d.ts +4 -3
  101. package/dist/esm/parser/select-parser.d.ts +10 -4
  102. package/dist/esm/parser/update-set-parser.d.ts +2 -1
  103. package/dist/esm/query-builder/delete-query-builder.d.ts +2 -4
  104. package/dist/esm/query-builder/insert-query-builder.d.ts +80 -95
  105. package/dist/esm/query-builder/insert-query-builder.js +145 -15
  106. package/dist/esm/query-builder/on-conflict-builder.d.ts +686 -0
  107. package/dist/esm/query-builder/on-conflict-builder.js +317 -0
  108. package/dist/esm/query-builder/returning-interface.d.ts +2 -4
  109. package/dist/esm/query-builder/select-query-builder.d.ts +1 -1
  110. package/dist/esm/query-builder/update-query-builder.d.ts +2 -4
  111. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -2
  112. package/dist/esm/query-compiler/default-query-compiler.js +33 -7
  113. package/dist/esm/query-creator.d.ts +0 -2
  114. package/dist/esm/query-creator.js +0 -2
  115. package/dist/esm/schema/alter-table-builder.d.ts +29 -9
  116. package/dist/esm/schema/alter-table-builder.js +33 -9
  117. package/dist/esm/schema/column-definition-builder.d.ts +28 -8
  118. package/dist/esm/schema/column-definition-builder.js +17 -7
  119. package/dist/esm/schema/create-index-builder.d.ts +3 -2
  120. package/dist/esm/schema/create-index-builder.js +2 -2
  121. package/dist/esm/schema/create-table-builder.d.ts +3 -2
  122. package/dist/esm/schema/create-table-builder.js +2 -2
  123. package/dist/esm/util/column-type.d.ts +165 -0
  124. package/dist/esm/util/column-type.js +1 -0
  125. package/dist/esm/util/private-symbols.d.ts +5 -0
  126. package/dist/esm/util/private-symbols.js +5 -0
  127. package/dist/esm/util/type-utils.d.ts +6 -42
  128. package/package.json +1 -1
  129. package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
  130. package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
  131. package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
  132. package/dist/cjs/parser/on-conflict-parser.js +0 -35
  133. package/dist/cjs/util/generated-placeholder.d.ts +0 -3
  134. package/dist/cjs/util/generated-placeholder.js +0 -11
  135. package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
  136. package/dist/esm/operation-node/generated-always-as-node.js +0 -22
  137. package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
  138. package/dist/esm/parser/on-conflict-parser.js +0 -30
  139. package/dist/esm/util/generated-placeholder.d.ts +0 -3
  140. package/dist/esm/util/generated-placeholder.js +0 -7
@@ -98,7 +98,7 @@ class AlterTableBuilder {
98
98
  return new AlterTableExecutor({
99
99
  ...this.#props,
100
100
  alterTableNode: alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
101
- addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
101
+ addConstraint: add_constraint_node_js_1.AddConstraintNode.create(check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
102
102
  }),
103
103
  });
104
104
  }
@@ -244,16 +244,28 @@ class AlterTableAddColumnBuilder {
244
244
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
245
245
  });
246
246
  }
247
- check(sql) {
247
+ check(expression) {
248
248
  return new AlterTableAddColumnBuilder({
249
249
  ...this.#props,
250
- columnBuilder: this.#props.columnBuilder.check(sql),
250
+ columnBuilder: this.#props.columnBuilder.check(expression),
251
251
  });
252
252
  }
253
- generatedAlwaysAs(sql) {
253
+ generatedAlwaysAs(expression) {
254
254
  return new AlterTableAddColumnBuilder({
255
255
  ...this.#props,
256
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
256
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
257
+ });
258
+ }
259
+ generatedAlwaysAsIdentity() {
260
+ return new AlterTableAddColumnBuilder({
261
+ ...this.#props,
262
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
263
+ });
264
+ }
265
+ generatedByDefaultAsIdentity() {
266
+ return new AlterTableAddColumnBuilder({
267
+ ...this.#props,
268
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
257
269
  });
258
270
  }
259
271
  stored() {
@@ -334,16 +346,28 @@ class AlterTableModifyColumnBuilder {
334
346
  columnBuilder: this.#props.columnBuilder.defaultTo(value),
335
347
  });
336
348
  }
337
- check(sql) {
349
+ check(expression) {
350
+ return new AlterTableModifyColumnBuilder({
351
+ ...this.#props,
352
+ columnBuilder: this.#props.columnBuilder.check(expression),
353
+ });
354
+ }
355
+ generatedAlwaysAs(expression) {
356
+ return new AlterTableModifyColumnBuilder({
357
+ ...this.#props,
358
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(expression),
359
+ });
360
+ }
361
+ generatedAlwaysAsIdentity() {
338
362
  return new AlterTableModifyColumnBuilder({
339
363
  ...this.#props,
340
- columnBuilder: this.#props.columnBuilder.check(sql),
364
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAsIdentity(),
341
365
  });
342
366
  }
343
- generatedAlwaysAs(sql) {
367
+ generatedByDefaultAsIdentity() {
344
368
  return new AlterTableModifyColumnBuilder({
345
369
  ...this.#props,
346
- columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
370
+ columnBuilder: this.#props.columnBuilder.generatedByDefaultAsIdentity(),
347
371
  });
348
372
  }
349
373
  stored() {
@@ -93,11 +93,13 @@ export interface ColumnDefinitionBuilderInterface {
93
93
  * ```ts
94
94
  * db.schema
95
95
  * .createTable('pet')
96
- * .addColumn('number_of_legs', 'integer', (col) => col.check('number_of_legs < 5'))
96
+ * .addColumn('number_of_legs', 'integer', (col) =>
97
+ * col.check(db.raw('number_of_legs < 5'))
98
+ * )
97
99
  * .execute()
98
100
  * ```
99
101
  */
100
- check(sql: string): ColumnDefinitionBuilderInterface;
102
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
101
103
  /**
102
104
  * Makes the column a generated column using a `generated always as` statement.
103
105
  *
@@ -107,12 +109,20 @@ export interface ColumnDefinitionBuilderInterface {
107
109
  * db.schema
108
110
  * .createTable('person')
109
111
  * .addColumn('full_name', 'varchar(255)',
110
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
112
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
111
113
  * )
112
114
  * .execute()
113
115
  * ```
114
116
  */
115
- generatedAlwaysAs(sql: string): ColumnDefinitionBuilderInterface;
117
+ generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
118
+ /**
119
+ * Adds the `generated always as identity` specifier on supported dialects.
120
+ */
121
+ generatedAlwaysAsIdentity(): ColumnDefinitionBuilderInterface;
122
+ /**
123
+ * Adds the `generated by default as identity` specifier on supported dialects.
124
+ */
125
+ generatedByDefaultAsIdentity(): ColumnDefinitionBuilderInterface;
116
126
  /**
117
127
  * Makes a generated column stored instead of virtual. This method can only
118
128
  * be used with {@link generatedAlwaysAs}
@@ -222,11 +232,13 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
222
232
  * ```ts
223
233
  * db.schema
224
234
  * .createTable('pet')
225
- * .addColumn('number_of_legs', 'integer', (col) => col.check('number_of_legs < 5'))
235
+ * .addColumn('number_of_legs', 'integer', (col) =>
236
+ * col.check(db.raw('number_of_legs < 5'))
237
+ * )
226
238
  * .execute()
227
239
  * ```
228
240
  */
229
- check(sql: string): ColumnDefinitionBuilder;
241
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
230
242
  /**
231
243
  * Makes the column a generated column using a `generated always as` statement.
232
244
  *
@@ -236,12 +248,20 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
236
248
  * db.schema
237
249
  * .createTable('person')
238
250
  * .addColumn('full_name', 'varchar(255)',
239
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
251
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
240
252
  * )
241
253
  * .execute()
242
254
  * ```
243
255
  */
244
- generatedAlwaysAs(sql: string): ColumnDefinitionBuilder;
256
+ generatedAlwaysAs(expression: AnyRawBuilder): ColumnDefinitionBuilder;
257
+ /**
258
+ * Adds the `generated always as identity` specifier on supported dialects.
259
+ */
260
+ generatedAlwaysAsIdentity(): ColumnDefinitionBuilder;
261
+ /**
262
+ * Adds the `generated by default as identity` specifier on supported dialects.
263
+ */
264
+ generatedByDefaultAsIdentity(): ColumnDefinitionBuilder;
245
265
  /**
246
266
  * Makes a generated column stored instead of virtual. This method can only
247
267
  * be used with {@link generatedAlwaysAs}
@@ -9,7 +9,7 @@ const reference_parser_js_1 = require("../parser/reference-parser.js");
9
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
10
10
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
11
11
  const default_value_parser_js_1 = require("../parser/default-value-parser.js");
12
- const generated_always_as_node_js_1 = require("../operation-node/generated-always-as-node.js");
12
+ const generated_node_js_1 = require("../operation-node/generated-node.js");
13
13
  const default_value_node_js_1 = require("../operation-node/default-value-node.js");
14
14
  class ColumnDefinitionBuilder {
15
15
  #node;
@@ -63,22 +63,32 @@ class ColumnDefinitionBuilder {
63
63
  defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
64
64
  }));
65
65
  }
66
- check(sql) {
66
+ check(expression) {
67
67
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
68
- check: check_constraint_node_js_1.CheckConstraintNode.create(sql),
68
+ check: check_constraint_node_js_1.CheckConstraintNode.create(expression.toOperationNode()),
69
69
  }));
70
70
  }
71
- generatedAlwaysAs(sql) {
71
+ generatedAlwaysAs(expression) {
72
72
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
73
- generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.create(sql),
73
+ generated: generated_node_js_1.GeneratedNode.createWithExpression(expression.toOperationNode()),
74
+ }));
75
+ }
76
+ generatedAlwaysAsIdentity() {
77
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
78
+ generated: generated_node_js_1.GeneratedNode.create({ identity: true, always: true }),
79
+ }));
80
+ }
81
+ generatedByDefaultAsIdentity() {
82
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
83
+ generated: generated_node_js_1.GeneratedNode.create({ identity: true, byDefault: true }),
74
84
  }));
75
85
  }
76
86
  stored() {
77
- if (!this.#node.generatedAlwaysAs) {
87
+ if (!this.#node.generated) {
78
88
  throw new Error('stored() can only be called after generatedAlwaysAs');
79
89
  }
80
90
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
81
- generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
91
+ generated: generated_node_js_1.GeneratedNode.cloneWith(this.#node.generated, {
82
92
  stored: true,
83
93
  }),
84
94
  }));
@@ -4,6 +4,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { Compilable } from '../util/compilable.js';
5
5
  import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
+ import { AnyRawBuilder } from '../util/type-utils.js';
7
8
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
8
9
  #private;
9
10
  constructor(props: CreateIndexBuilderProps);
@@ -36,11 +37,11 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
36
37
  * await db.schema
37
38
  * .createIndex('person_first_name_index')
38
39
  * .on('person')
39
- * .expression('first_name COLLATE "fi_FI"')
40
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
40
41
  * .execute()
41
42
  * ```
42
43
  */
43
- expression(expression: string): CreateIndexBuilder;
44
+ expression(expression: AnyRawBuilder): CreateIndexBuilder;
44
45
  /**
45
46
  * Specifies the index type.
46
47
  */
@@ -70,7 +70,7 @@ class CreateIndexBuilder {
70
70
  * await db.schema
71
71
  * .createIndex('person_first_name_index')
72
72
  * .on('person')
73
- * .expression('first_name COLLATE "fi_FI"')
73
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
74
74
  * .execute()
75
75
  * ```
76
76
  */
@@ -78,7 +78,7 @@ class CreateIndexBuilder {
78
78
  return new CreateIndexBuilder({
79
79
  ...this.#props,
80
80
  createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
81
- expression: raw_node_js_1.RawNode.createWithSql(expression),
81
+ expression: expression.toOperationNode(),
82
82
  }),
83
83
  });
84
84
  }
@@ -7,6 +7,7 @@ import { ColumnDefinitionBuilder } from './column-definition-builder.js';
7
7
  import { QueryId } from '../util/query-id.js';
8
8
  import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
9
9
  import { DataTypeExpression } from '../parser/data-type-parser.js';
10
+ import { AnyRawBuilder } from '../util/type-utils.js';
10
11
  /**
11
12
  * This builder can be used to create a `create table` query.
12
13
  */
@@ -110,10 +111,10 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
110
111
  * ### Examples
111
112
  *
112
113
  * ```ts
113
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
114
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
114
115
  * ```
115
116
  */
116
- addCheckConstraint(constraintName: string, checkExpression: string): CreateTableBuilder<TB, C>;
117
+ addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
117
118
  /**
118
119
  * Adds a foreign key constraint.
119
120
  *
@@ -156,13 +156,13 @@ class CreateTableBuilder {
156
156
  * ### Examples
157
157
  *
158
158
  * ```ts
159
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
159
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
160
160
  * ```
161
161
  */
162
162
  addCheckConstraint(constraintName, checkExpression) {
163
163
  return new CreateTableBuilder({
164
164
  ...this.#props,
165
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
165
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
166
166
  });
167
167
  }
168
168
  /**
@@ -0,0 +1,165 @@
1
+ /**
2
+ * This type can be used to specify a different type for
3
+ * select, insert and update operations.
4
+ *
5
+ * Also see the {@link Generated} type.
6
+ *
7
+ * ### Examples
8
+ *
9
+ * The next example defines a number column that is optional
10
+ * in inserts and updates. All columns are always optional
11
+ * in updates so therefore we don't need to specify `undefined`
12
+ * for the update type. The type below is useful for all kinds of
13
+ * database generated columns like identifiers. The `Generated`
14
+ * type is actually just a shortcut for the type in this example:
15
+ *
16
+ * ```ts
17
+ * ColumnType<number, number | undefined, number>
18
+ * ```
19
+ *
20
+ * The above example makes the column optional in inserts
21
+ * and updates, but you can still choose to provide the
22
+ * column. If you want to prevent insertion/update you
23
+ * can se the type as `never`:
24
+ *
25
+ * ```ts
26
+ * ColumnType<number, never, never>
27
+ * ```
28
+ *
29
+ * Here's one more example where the type is different
30
+ * for each different operation:
31
+ *
32
+ * ```ts
33
+ * ColumnType<Date, string, never>
34
+ * ```
35
+ */
36
+ export declare type ColumnType<SelectType, InsertType = SelectType, UpdateType = SelectType> = {
37
+ readonly __select__: SelectType;
38
+ readonly __insert__: InsertType;
39
+ readonly __update__: UpdateType;
40
+ };
41
+ /**
42
+ * A shortcut for defining database-generated columns. The type
43
+ * is the same for all selects, inserts and updates but the
44
+ * column is optional for inserts and updates.
45
+ *
46
+ * This is implemented using {@link ColumnType} like this:
47
+ *
48
+ * ```ts
49
+ * type Generated<S> = ColumnType<S, S | undefined, S>
50
+ * ```
51
+ */
52
+ export declare type Generated<S> = ColumnType<S, S | undefined, S>;
53
+ /**
54
+ * Evaluates to `K` if `T` can be `null` or `undefined`.
55
+ */
56
+ declare type IfNullable<T, K> = undefined extends T ? K : null extends T ? K : never;
57
+ /**
58
+ * Evaluates to `K` if `T` can't be `null` or `undefined`.
59
+ */
60
+ declare type IfNotNullable<T, K> = undefined extends T ? never : null extends T ? never : T extends never ? never : K;
61
+ /**
62
+ * Evaluates to `K` if `T` isn't `never`.
63
+ */
64
+ declare type IfNotNever<T, K> = T extends never ? never : K;
65
+ export declare type SelectType<T> = T extends ColumnType<infer S, any, any> ? S : T;
66
+ export declare type InsertType<T> = T extends ColumnType<any, infer I, any> ? I : T;
67
+ export declare type UpdateType<T> = T extends ColumnType<any, any, infer U> ? U : T;
68
+ /**
69
+ * Keys of `R` whose `InsertType` values can be `null` or `undefined`.
70
+ */
71
+ export declare type NullableInsertKeys<R> = {
72
+ [K in keyof R]: IfNullable<InsertType<R[K]>, K>;
73
+ }[keyof R];
74
+ /**
75
+ * Keys of `R` whose `InsertType` values can't be `null` or `undefined`.
76
+ */
77
+ export declare type NonNullableInsertKeys<R> = {
78
+ [K in keyof R]: IfNotNullable<InsertType<R[K]>, K>;
79
+ }[keyof R];
80
+ /**
81
+ * Keys of `R` whose `SelectType` values are not `never`
82
+ */
83
+ declare type NonNeverSelectKeys<R> = {
84
+ [K in keyof R]: IfNotNever<SelectType<R[K]>, K>;
85
+ }[keyof R];
86
+ /**
87
+ * Keys of `R` whose `UpdateType` values are not `never`
88
+ */
89
+ export declare type UpdateKeys<R> = {
90
+ [K in keyof R]: IfNotNever<UpdateType<R[K]>, K>;
91
+ }[keyof R];
92
+ /**
93
+ * Given a table interface, extracts the select type from all
94
+ * {@link ColumnType} types.
95
+ *
96
+ * ### Examples
97
+ *
98
+ * ```ts
99
+ * interface PersonTable {
100
+ * id: Generated<number>
101
+ * first_name: string
102
+ * modified_at: ColumnType<Date, string, never>
103
+ * }
104
+ *
105
+ * type Person = Selectable<PersonTable>
106
+ * // {
107
+ * // id: number,
108
+ * // first_name: string
109
+ * // modified_at: Date
110
+ * // }
111
+ * ```
112
+ */
113
+ export declare type Selectable<R> = {
114
+ [K in NonNeverSelectKeys<R>]: SelectType<R[K]>;
115
+ };
116
+ /**
117
+ * Given a table interface, extracts the insert type from all
118
+ * {@link ColumnType} types.
119
+ *
120
+ * ### Examples
121
+ *
122
+ * ```ts
123
+ * interface PersonTable {
124
+ * id: Generated<number>
125
+ * first_name: string
126
+ * modified_at: ColumnType<Date, string, never>
127
+ * }
128
+ *
129
+ * type InsertablePerson = Insertable<PersonTable>
130
+ * // {
131
+ * // id?: number,
132
+ * // first_name: string
133
+ * // modified_at: string
134
+ * // }
135
+ * ```
136
+ */
137
+ export declare type Insertable<R> = {
138
+ [K in NonNullableInsertKeys<R>]: InsertType<R[K]>;
139
+ } & {
140
+ [K in NullableInsertKeys<R>]?: InsertType<R[K]>;
141
+ };
142
+ /**
143
+ * Given a table interface, extracts the update type from all
144
+ * {@link ColumnType} types.
145
+ *
146
+ * ### Examples
147
+ *
148
+ * ```ts
149
+ * interface PersonTable {
150
+ * id: Generated<number>
151
+ * first_name: string
152
+ * modified_at: ColumnType<Date, string, never>
153
+ * }
154
+ *
155
+ * type UpdateablePerson = Updateable<PersonTable>
156
+ * // {
157
+ * // id?: number,
158
+ * // first_name?: string
159
+ * // }
160
+ * ```
161
+ */
162
+ export declare type Updateable<R> = {
163
+ [K in UpdateKeys<R>]?: UpdateType<R[K]>;
164
+ };
165
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @internal
3
+ * @private
4
+ */
5
+ export declare const PRIVATE_ADAPTER: unique symbol;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRIVATE_ADAPTER = void 0;
4
+ /**
5
+ * @internal
6
+ * @private
7
+ */
8
+ exports.PRIVATE_ADAPTER = Symbol();
@@ -8,43 +8,6 @@ import { UpdateResult } from '../query-builder/update-result.js';
8
8
  * Given an object type, extracts the union of all value types.
9
9
  */
10
10
  export declare type ValueType<T> = T[keyof T];
11
- /**
12
- * Given a database type and a union of table names returns the row type
13
- * that you would get by selecting all columns from tables TB.
14
- *
15
- * Example:
16
- *
17
- * ```ts
18
- * interface Person {
19
- * id: number
20
- * }
21
- *
22
- * interface Pet {
23
- * name: string
24
- * species: 'cat' | 'dog'
25
- * }
26
- *
27
- * interface Movie {
28
- * stars: number
29
- * }
30
- *
31
- * interface Database {
32
- * person: Person
33
- * pet: Pet
34
- * movie: Movie
35
- * }
36
- *
37
- * type Row = RowType<Database, 'person' | 'movie'>
38
- *
39
- * // Row == Person & Movie
40
- * ```
41
- */
42
- export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
43
- /**
44
- * Evil typescript magic to convert a union type `A | B | C` into an
45
- * intersection type `A & B & C`.
46
- */
47
- declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
48
11
  /**
49
12
  * Given a database type and a union of table names in that db, returns
50
13
  * a union type with all possible column names.
@@ -79,6 +42,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
79
42
  export declare type AnyColumn<DB, TB extends keyof DB> = {
80
43
  [T in TB]: keyof DB[T];
81
44
  }[TB] & string;
45
+ /**
46
+ * Extracts a column type.
47
+ */
48
+ export declare type ExtractColumnType<DB, TB extends keyof DB, C> = {
49
+ [T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
50
+ }[TB];
82
51
  /**
83
52
  * Given a database type and a union of table names in that db, returns
84
53
  * a union type with all possible `table`.`column` combinations.
@@ -137,13 +106,8 @@ export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: Ex
137
106
  export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
138
107
  export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
139
108
  export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
140
- export interface GeneratedPlaceholder {
141
- /** @internal */
142
- readonly __isGeneratedPlaceholder__: true;
143
- }
144
109
  export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
145
110
  export declare type UnknownRow = Record<string, unknown>;
146
111
  export declare type Nullable<T> = {
147
112
  [P in keyof T]: T[P] | null;
148
113
  };
149
- export {};
@@ -1,7 +1,7 @@
1
1
  import { Driver } from '../driver/driver.js';
2
2
  import { Kysely } from '../kysely.js';
3
3
  import { QueryCompiler } from '../query-compiler/query-compiler.js';
4
- import { DatabaseIntrospector } from '../introspection/database-introspector.js';
4
+ import { DatabaseIntrospector } from './database-introspector.js';
5
5
  import { DialectAdapter } from './dialect-adapter.js';
6
6
  /**
7
7
  * A Dialect is the glue between Kysely and the underlying database engine.
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
5
+ import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
7
  import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class MysqlIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -1,4 +1,4 @@
1
- import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migration.js';
1
+ import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
2
2
  import { freeze } from '../../util/object-utils.js';
3
3
  export class MysqlIntrospector {
4
4
  #db;
@@ -5,7 +5,7 @@ import { Driver } from '../../driver/driver.js';
5
5
  import { Kysely } from '../../kysely.js';
6
6
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
7
7
  import { Dialect } from '../dialect.js';
8
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
8
+ import { DatabaseIntrospector } from '../database-introspector.js';
9
9
  import { DialectAdapter } from '../dialect-adapter.js';
10
10
  import { DatabaseConnection } from '../../driver/database-connection.js';
11
11
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class PostgresIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -1,4 +1,4 @@
1
- import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migration.js';
1
+ import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
2
2
  import { freeze } from '../../util/object-utils.js';
3
3
  export class PostgresIntrospector {
4
4
  #db;
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
5
+ import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
7
  import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class SqliteIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -1,4 +1,4 @@
1
- import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migration.js';
1
+ import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migrator.js';
2
2
  export class SqliteIntrospector {
3
3
  #db;
4
4
  constructor(db) {