kysely 0.27.4 → 0.27.6

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 (222) hide show
  1. package/.renovaterc.json +3 -0
  2. package/CODE_OF_CONDUCT.md +183 -0
  3. package/CONTRIBUTING.md +121 -23
  4. package/FUNDING.md +25 -0
  5. package/README.md +13 -2
  6. package/deno.check.d.ts +86 -0
  7. package/deno.check.json +21 -0
  8. package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
  9. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
  10. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
  11. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  12. package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
  13. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
  14. package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  15. package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
  16. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
  17. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  18. package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
  19. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  21. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
  22. package/dist/cjs/driver/dummy-driver.d.ts +13 -12
  23. package/dist/cjs/driver/dummy-driver.js +13 -12
  24. package/dist/cjs/dynamic/dynamic.d.ts +6 -6
  25. package/dist/cjs/dynamic/dynamic.js +6 -6
  26. package/dist/cjs/expression/expression-builder.d.ts +154 -61
  27. package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
  28. package/dist/cjs/expression/expression.d.ts +40 -5
  29. package/dist/cjs/helpers/mssql.d.ts +74 -14
  30. package/dist/cjs/helpers/mssql.js +74 -14
  31. package/dist/cjs/helpers/mysql.d.ts +14 -10
  32. package/dist/cjs/helpers/mysql.js +14 -10
  33. package/dist/cjs/helpers/postgres.d.ts +7 -4
  34. package/dist/cjs/helpers/postgres.js +7 -4
  35. package/dist/cjs/helpers/sqlite.d.ts +41 -16
  36. package/dist/cjs/helpers/sqlite.js +41 -16
  37. package/dist/cjs/kysely.d.ts +99 -41
  38. package/dist/cjs/kysely.js +60 -36
  39. package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
  40. package/dist/cjs/migration/file-migration-provider.js +2 -2
  41. package/dist/cjs/migration/migrator.d.ts +90 -15
  42. package/dist/cjs/migration/migrator.js +95 -17
  43. package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
  44. package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
  45. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/data-type-node.js +12 -0
  47. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
  48. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
  49. package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
  51. package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
  52. package/dist/cjs/operation-node/query-node.d.ts +4 -0
  53. package/dist/cjs/operation-node/query-node.js +8 -0
  54. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  55. package/dist/cjs/operation-node/select-query-node.js +0 -8
  56. package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
  57. package/dist/cjs/parser/insert-values-parser.js +3 -1
  58. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  59. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
  60. package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
  61. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  62. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  63. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  64. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  65. package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
  66. package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
  67. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  68. package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  69. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  70. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  71. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +26 -0
  72. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
  73. package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
  74. package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
  75. package/dist/cjs/query-builder/delete-query-builder.js +76 -26
  76. package/dist/cjs/query-builder/function-module.d.ts +35 -88
  77. package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
  78. package/dist/cjs/query-builder/insert-query-builder.js +188 -52
  79. package/dist/cjs/query-builder/insert-result.d.ts +10 -5
  80. package/dist/cjs/query-builder/insert-result.js +10 -5
  81. package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
  82. package/dist/cjs/query-builder/json-path-builder.js +8 -5
  83. package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
  84. package/dist/cjs/query-builder/merge-query-builder.js +68 -6
  85. package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
  86. package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
  87. package/dist/cjs/query-builder/output-interface.d.ts +50 -7
  88. package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
  89. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
  90. package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
  91. package/dist/cjs/query-builder/select-query-builder.js +7 -7
  92. package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
  93. package/dist/cjs/query-builder/update-query-builder.js +75 -10
  94. package/dist/cjs/query-builder/update-result.d.ts +2 -2
  95. package/dist/cjs/query-builder/update-result.js +2 -2
  96. package/dist/cjs/query-builder/where-interface.d.ts +5 -1
  97. package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
  98. package/dist/cjs/query-creator.d.ts +66 -18
  99. package/dist/cjs/query-creator.js +2 -2
  100. package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
  101. package/dist/cjs/raw-builder/sql.d.ts +27 -8
  102. package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
  103. package/dist/cjs/schema/alter-column-builder.js +17 -3
  104. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
  105. package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
  106. package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
  107. package/dist/cjs/schema/column-definition-builder.js +283 -26
  108. package/dist/cjs/schema/create-table-builder.d.ts +86 -33
  109. package/dist/cjs/schema/create-table-builder.js +86 -33
  110. package/dist/cjs/util/column-type.d.ts +5 -9
  111. package/dist/cjs/util/require-all-props.d.ts +4 -2
  112. package/dist/cjs/util/require-all-props.js +4 -2
  113. package/dist/cjs/util/streamable.d.ts +1 -1
  114. package/dist/cjs/util/type-utils.d.ts +4 -2
  115. package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
  116. package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
  117. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
  118. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
  119. package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
  120. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
  121. package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
  122. package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
  123. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
  124. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
  125. package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
  126. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
  127. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
  128. package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
  129. package/dist/esm/driver/dummy-driver.d.ts +13 -12
  130. package/dist/esm/driver/dummy-driver.js +13 -12
  131. package/dist/esm/dynamic/dynamic.d.ts +6 -6
  132. package/dist/esm/dynamic/dynamic.js +6 -6
  133. package/dist/esm/expression/expression-builder.d.ts +154 -61
  134. package/dist/esm/expression/expression-wrapper.d.ts +92 -23
  135. package/dist/esm/expression/expression.d.ts +40 -5
  136. package/dist/esm/helpers/mssql.d.ts +74 -14
  137. package/dist/esm/helpers/mssql.js +74 -14
  138. package/dist/esm/helpers/mysql.d.ts +14 -10
  139. package/dist/esm/helpers/mysql.js +14 -10
  140. package/dist/esm/helpers/postgres.d.ts +7 -4
  141. package/dist/esm/helpers/postgres.js +7 -4
  142. package/dist/esm/helpers/sqlite.d.ts +41 -16
  143. package/dist/esm/helpers/sqlite.js +41 -16
  144. package/dist/esm/kysely.d.ts +99 -41
  145. package/dist/esm/kysely.js +60 -36
  146. package/dist/esm/migration/file-migration-provider.d.ts +2 -2
  147. package/dist/esm/migration/file-migration-provider.js +2 -2
  148. package/dist/esm/migration/migrator.d.ts +90 -15
  149. package/dist/esm/migration/migrator.js +95 -17
  150. package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
  151. package/dist/esm/operation-node/aggregate-function-node.js +9 -0
  152. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  153. package/dist/esm/operation-node/data-type-node.js +12 -0
  154. package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
  155. package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
  156. package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
  157. package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
  158. package/dist/esm/operation-node/operation-node-transformer.js +14 -3
  159. package/dist/esm/operation-node/query-node.d.ts +4 -0
  160. package/dist/esm/operation-node/query-node.js +8 -0
  161. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  162. package/dist/esm/operation-node/select-query-node.js +0 -8
  163. package/dist/esm/operation-node/update-query-node.d.ts +1 -0
  164. package/dist/esm/parser/insert-values-parser.js +3 -1
  165. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
  166. package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
  167. package/dist/esm/plugin/camel-case/camel-case.js +4 -1
  168. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
  169. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  170. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
  171. package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
  172. package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
  173. package/dist/esm/plugin/noop-plugin.d.ts +28 -6
  174. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
  175. package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
  176. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
  177. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  178. package/dist/esm/plugin/with-schema/with-schema-transformer.js +26 -0
  179. package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
  180. package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
  181. package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
  182. package/dist/esm/query-builder/delete-query-builder.js +76 -26
  183. package/dist/esm/query-builder/function-module.d.ts +35 -88
  184. package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
  185. package/dist/esm/query-builder/insert-query-builder.js +188 -52
  186. package/dist/esm/query-builder/insert-result.d.ts +10 -5
  187. package/dist/esm/query-builder/insert-result.js +10 -5
  188. package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
  189. package/dist/esm/query-builder/json-path-builder.js +8 -5
  190. package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
  191. package/dist/esm/query-builder/merge-query-builder.js +68 -6
  192. package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
  193. package/dist/esm/query-builder/on-conflict-builder.js +41 -16
  194. package/dist/esm/query-builder/output-interface.d.ts +50 -7
  195. package/dist/esm/query-builder/returning-interface.d.ts +5 -5
  196. package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
  197. package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
  198. package/dist/esm/query-builder/select-query-builder.js +7 -7
  199. package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
  200. package/dist/esm/query-builder/update-query-builder.js +75 -10
  201. package/dist/esm/query-builder/update-result.d.ts +2 -2
  202. package/dist/esm/query-builder/update-result.js +2 -2
  203. package/dist/esm/query-builder/where-interface.d.ts +5 -1
  204. package/dist/esm/query-compiler/default-query-compiler.js +20 -0
  205. package/dist/esm/query-creator.d.ts +66 -18
  206. package/dist/esm/query-creator.js +2 -2
  207. package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
  208. package/dist/esm/raw-builder/sql.d.ts +27 -8
  209. package/dist/esm/schema/alter-column-builder.d.ts +17 -3
  210. package/dist/esm/schema/alter-column-builder.js +17 -3
  211. package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
  212. package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
  213. package/dist/esm/schema/column-definition-builder.d.ts +283 -26
  214. package/dist/esm/schema/column-definition-builder.js +283 -26
  215. package/dist/esm/schema/create-table-builder.d.ts +86 -33
  216. package/dist/esm/schema/create-table-builder.js +86 -33
  217. package/dist/esm/util/column-type.d.ts +5 -9
  218. package/dist/esm/util/require-all-props.d.ts +4 -2
  219. package/dist/esm/util/require-all-props.js +4 -2
  220. package/dist/esm/util/streamable.d.ts +1 -1
  221. package/dist/esm/util/type-utils.d.ts +4 -2
  222. package/package.json +28 -23
@@ -20,6 +20,23 @@ export class ColumnDefinitionBuilder {
20
20
  *
21
21
  * Some dialects like PostgreSQL don't support this. On PostgreSQL
22
22
  * you can use the `serial` or `bigserial` data type instead.
23
+ *
24
+ * ### Examples
25
+ *
26
+ * ```ts
27
+ * await db.schema
28
+ * .createTable('person')
29
+ * .addColumn('id', 'integer', col => col.autoIncrement().primaryKey())
30
+ * .execute()
31
+ * ```
32
+ *
33
+ * The generated SQL (MySQL):
34
+ *
35
+ * ```sql
36
+ * create table `person` (
37
+ * `id` integer primary key auto_increment
38
+ * )
39
+ * ```
23
40
  */
24
41
  autoIncrement() {
25
42
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
@@ -30,6 +47,23 @@ export class ColumnDefinitionBuilder {
30
47
  * This only works on some dialects like MS SQL Server (MSSQL).
31
48
  *
32
49
  * For PostgreSQL's `generated always as identity` use {@link generatedAlwaysAsIdentity}.
50
+ *
51
+ * ### Examples
52
+ *
53
+ * ```ts
54
+ * await db.schema
55
+ * .createTable('person')
56
+ * .addColumn('id', 'integer', col => col.identity().primaryKey())
57
+ * .execute()
58
+ * ```
59
+ *
60
+ * The generated SQL (MSSQL):
61
+ *
62
+ * ```sql
63
+ * create table "person" (
64
+ * "id" integer identity primary key
65
+ * )
66
+ * ```
33
67
  */
34
68
  identity() {
35
69
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { identity: true }));
@@ -39,6 +73,22 @@ export class ColumnDefinitionBuilder {
39
73
  *
40
74
  * If you want to specify a composite primary key use the
41
75
  * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.
76
+ *
77
+ * ### Examples
78
+ *
79
+ * ```ts
80
+ * await db.schema
81
+ * .createTable('person')
82
+ * .addColumn('id', 'integer', col => col.primaryKey())
83
+ * .execute()
84
+ * ```
85
+ *
86
+ * The generated SQL (MySQL):
87
+ *
88
+ * ```sql
89
+ * create table `person` (
90
+ * `id` integer primary key
91
+ * )
42
92
  */
43
93
  primaryKey() {
44
94
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
@@ -53,7 +103,18 @@ export class ColumnDefinitionBuilder {
53
103
  * ### Examples
54
104
  *
55
105
  * ```ts
56
- * col.references('person.id')
106
+ * await db.schema
107
+ * .createTable('pet')
108
+ * .addColumn('owner_id', 'integer', (col) => col.references('person.id'))
109
+ * .execute()
110
+ * ```
111
+ *
112
+ * The generated SQL (PostgreSQL):
113
+ *
114
+ * ```sql
115
+ * create table "pet" (
116
+ * "owner_id" integer references "person" ("id")
117
+ * )
57
118
  * ```
58
119
  */
59
120
  references(ref) {
@@ -77,7 +138,22 @@ export class ColumnDefinitionBuilder {
77
138
  * ### Examples
78
139
  *
79
140
  * ```ts
80
- * col.references('person.id').onDelete('cascade')
141
+ * await db.schema
142
+ * .createTable('pet')
143
+ * .addColumn(
144
+ * 'owner_id',
145
+ * 'integer',
146
+ * (col) => col.references('person.id').onDelete('cascade')
147
+ * )
148
+ * .execute()
149
+ * ```
150
+ *
151
+ * The generated SQL (PostgreSQL):
152
+ *
153
+ * ```sql
154
+ * create table "pet" (
155
+ * "owner_id" integer references "person" ("id") on delete cascade
156
+ * )
81
157
  * ```
82
158
  */
83
159
  onDelete(onDelete) {
@@ -91,10 +167,29 @@ export class ColumnDefinitionBuilder {
91
167
  /**
92
168
  * Adds an `on update` constraint for the foreign key column.
93
169
  *
170
+ * If your database engine doesn't support foreign key constraints in the
171
+ * column definition (like MySQL 5) you need to call the table level
172
+ * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.
173
+ *
94
174
  * ### Examples
95
175
  *
96
176
  * ```ts
97
- * col.references('person.id').onUpdate('cascade')
177
+ * await db.schema
178
+ * .createTable('pet')
179
+ * .addColumn(
180
+ * 'owner_id',
181
+ * 'integer',
182
+ * (col) => col.references('person.id').onUpdate('cascade')
183
+ * )
184
+ * .execute()
185
+ * ```
186
+ *
187
+ * The generated SQL (PostgreSQL):
188
+ *
189
+ * ```sql
190
+ * create table "pet" (
191
+ * "owner_id" integer references "person" ("id") on update cascade
192
+ * )
98
193
  * ```
99
194
  */
100
195
  onUpdate(onUpdate) {
@@ -107,12 +202,46 @@ export class ColumnDefinitionBuilder {
107
202
  }
108
203
  /**
109
204
  * Adds a unique constraint for the column.
205
+ *
206
+ * ### Examples
207
+ *
208
+ * ```ts
209
+ * await db.schema
210
+ * .createTable('person')
211
+ * .addColumn('email', 'varchar(255)', col => col.unique())
212
+ * .execute()
213
+ * ```
214
+ *
215
+ * The generated SQL (MySQL):
216
+ *
217
+ * ```sql
218
+ * create table `person` (
219
+ * `email` varchar(255) unique
220
+ * )
221
+ * ```
110
222
  */
111
223
  unique() {
112
224
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
113
225
  }
114
226
  /**
115
227
  * Adds a `not null` constraint for the column.
228
+ *
229
+ * ### Examples
230
+ *
231
+ * ```ts
232
+ * await db.schema
233
+ * .createTable('person')
234
+ * .addColumn('first_name', 'varchar(255)', col => col.notNull())
235
+ * .execute()
236
+ * ```
237
+ *
238
+ * The generated SQL (MySQL):
239
+ *
240
+ * ```sql
241
+ * create table `person` (
242
+ * `first_name` varchar(255) not null
243
+ * )
244
+ * ```
116
245
  */
117
246
  notNull() {
118
247
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
@@ -121,6 +250,23 @@ export class ColumnDefinitionBuilder {
121
250
  * Adds a `unsigned` modifier for the column.
122
251
  *
123
252
  * This only works on some dialects like MySQL.
253
+ *
254
+ * ### Examples
255
+ *
256
+ * ```ts
257
+ * await db.schema
258
+ * .createTable('person')
259
+ * .addColumn('age', 'integer', col => col.unsigned())
260
+ * .execute()
261
+ * ```
262
+ *
263
+ * The generated SQL (MySQL):
264
+ *
265
+ * ```sql
266
+ * create table `person` (
267
+ * `age` integer unsigned
268
+ * )
269
+ * ```
124
270
  */
125
271
  unsigned() {
126
272
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
@@ -131,27 +277,43 @@ export class ColumnDefinitionBuilder {
131
277
  * ### Examples
132
278
  *
133
279
  * ```ts
134
- * db.schema
280
+ * await db.schema
135
281
  * .createTable('pet')
136
282
  * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
137
283
  * .execute()
138
284
  * ```
139
285
  *
286
+ * The generated SQL (MySQL):
287
+ *
288
+ * ```sql
289
+ * create table `pet` (
290
+ * `number_of_legs` integer default 4
291
+ * )
292
+ * ```
293
+ *
140
294
  * Values passed to `defaultTo` are interpreted as value literals by default. You can define
141
295
  * an arbitrary SQL expression using the {@link sql} template tag:
142
296
  *
143
297
  * ```ts
144
298
  * import { sql } from 'kysely'
145
299
  *
146
- * db.schema
300
+ * await db.schema
147
301
  * .createTable('pet')
148
302
  * .addColumn(
149
- * 'number_of_legs',
150
- * 'integer',
151
- * (col) => col.defaultTo(sql`any SQL here`)
303
+ * 'created_at',
304
+ * 'timestamp',
305
+ * (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)
152
306
  * )
153
307
  * .execute()
154
308
  * ```
309
+ *
310
+ * The generated SQL (MySQL):
311
+ *
312
+ * ```sql
313
+ * create table `pet` (
314
+ * `created_at` timestamp default CURRENT_TIMESTAMP
315
+ * )
316
+ * ```
155
317
  */
156
318
  defaultTo(value) {
157
319
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
@@ -166,13 +328,21 @@ export class ColumnDefinitionBuilder {
166
328
  * ```ts
167
329
  * import { sql } from 'kysely'
168
330
  *
169
- * db.schema
331
+ * await db.schema
170
332
  * .createTable('pet')
171
333
  * .addColumn('number_of_legs', 'integer', (col) =>
172
334
  * col.check(sql`number_of_legs < 5`)
173
335
  * )
174
336
  * .execute()
175
337
  * ```
338
+ *
339
+ * The generated SQL (MySQL):
340
+ *
341
+ * ```sql
342
+ * create table `pet` (
343
+ * `number_of_legs` integer check (number_of_legs < 5)
344
+ * )
345
+ * ```
176
346
  */
177
347
  check(expression) {
178
348
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
@@ -187,13 +357,21 @@ export class ColumnDefinitionBuilder {
187
357
  * ```ts
188
358
  * import { sql } from 'kysely'
189
359
  *
190
- * db.schema
360
+ * await db.schema
191
361
  * .createTable('person')
192
362
  * .addColumn('full_name', 'varchar(255)',
193
363
  * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
194
364
  * )
195
365
  * .execute()
196
366
  * ```
367
+ *
368
+ * The generated SQL (MySQL):
369
+ *
370
+ * ```sql
371
+ * create table `person` (
372
+ * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name))
373
+ * )
374
+ * ```
197
375
  */
198
376
  generatedAlwaysAs(expression) {
199
377
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
@@ -206,6 +384,23 @@ export class ColumnDefinitionBuilder {
206
384
  * This only works on some dialects like PostgreSQL.
207
385
  *
208
386
  * For MS SQL Server (MSSQL)'s identity column use {@link identity}.
387
+ *
388
+ * ### Examples
389
+ *
390
+ * ```ts
391
+ * await db.schema
392
+ * .createTable('person')
393
+ * .addColumn('id', 'integer', col => col.generatedAlwaysAsIdentity().primaryKey())
394
+ * .execute()
395
+ * ```
396
+ *
397
+ * The generated SQL (PostgreSQL):
398
+ *
399
+ * ```sql
400
+ * create table "person" (
401
+ * "id" integer generated always as identity primary key
402
+ * )
403
+ * ```
209
404
  */
210
405
  generatedAlwaysAsIdentity() {
211
406
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
@@ -214,6 +409,27 @@ export class ColumnDefinitionBuilder {
214
409
  }
215
410
  /**
216
411
  * Adds the `generated by default as identity` specifier on supported dialects.
412
+ *
413
+ * This only works on some dialects like PostgreSQL.
414
+ *
415
+ * For MS SQL Server (MSSQL)'s identity column use {@link identity}.
416
+ *
417
+ * ### Examples
418
+ *
419
+ * ```ts
420
+ * await db.schema
421
+ * .createTable('person')
422
+ * .addColumn('id', 'integer', col => col.generatedByDefaultAsIdentity().primaryKey())
423
+ * .execute()
424
+ * ```
425
+ *
426
+ * The generated SQL (PostgreSQL):
427
+ *
428
+ * ```sql
429
+ * create table "person" (
430
+ * "id" integer generated by default as identity primary key
431
+ * )
432
+ * ```
217
433
  */
218
434
  generatedByDefaultAsIdentity() {
219
435
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
@@ -227,14 +443,24 @@ export class ColumnDefinitionBuilder {
227
443
  * ### Examples
228
444
  *
229
445
  * ```ts
230
- * db.schema
446
+ * import { sql } from 'kysely'
447
+ *
448
+ * await db.schema
231
449
  * .createTable('person')
232
450
  * .addColumn('full_name', 'varchar(255)', (col) => col
233
- * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
451
+ * .generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)
234
452
  * .stored()
235
453
  * )
236
454
  * .execute()
237
455
  * ```
456
+ *
457
+ * The generated SQL (MySQL):
458
+ *
459
+ * ```sql
460
+ * create table `person` (
461
+ * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name)) stored
462
+ * )
463
+ * ```
238
464
  */
239
465
  stored() {
240
466
  if (!this.#node.generated) {
@@ -252,10 +478,17 @@ export class ColumnDefinitionBuilder {
252
478
  * ### Examples
253
479
  *
254
480
  * ```ts
255
- * db.schema.createTable('person')
256
- * .addColumn('id', 'integer', col => col.primaryKey())
257
- * .addColumn('first_name', 'varchar(36)', col => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull())
258
- * .execute()
481
+ * import { sql } from 'kysely'
482
+ *
483
+ * await db.schema
484
+ * .createTable('person')
485
+ * .addColumn('id', 'integer', col => col.primaryKey())
486
+ * .addColumn(
487
+ * 'first_name',
488
+ * 'varchar(36)',
489
+ * (col) => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull()
490
+ * )
491
+ * .execute()
259
492
  * ```
260
493
  *
261
494
  * The generated SQL (MySQL):
@@ -279,10 +512,11 @@ export class ColumnDefinitionBuilder {
279
512
  * ### Examples
280
513
  *
281
514
  * ```ts
282
- * db.schema.createTable('person')
283
- * .addColumn('id', 'integer', col => col.primaryKey())
284
- * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
285
- * .execute()
515
+ * db.schema
516
+ * .createTable('person')
517
+ * .addColumn('id', 'integer', col => col.primaryKey())
518
+ * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
519
+ * .execute()
286
520
  * ```
287
521
  *
288
522
  * The generated SQL (PostgreSQL):
@@ -298,8 +532,22 @@ export class ColumnDefinitionBuilder {
298
532
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));
299
533
  }
300
534
  /**
301
- * Adds `if not exists` specifier.
302
- * This only works for PostgreSQL.
535
+ * Adds `if not exists` specifier. This only works for PostgreSQL.
536
+ *
537
+ * ### Examples
538
+ *
539
+ * ```ts
540
+ * await db.schema
541
+ * .alterTable('person')
542
+ * .addColumn('email', 'varchar(255)', col => col.unique().ifNotExists())
543
+ * .execute()
544
+ * ```
545
+ *
546
+ * The generated SQL (PostgreSQL):
547
+ *
548
+ * ```sql
549
+ * alter table "person" add column if not exists "email" varchar(255) unique
550
+ * ```
303
551
  */
304
552
  ifNotExists() {
305
553
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { ifNotExists: true }));
@@ -310,10 +558,19 @@ export class ColumnDefinitionBuilder {
310
558
  * ### Examples
311
559
  *
312
560
  * ```ts
313
- * db.schema.createTable('person')
314
- * .addColumn('id', 'integer', col => col.primaryKey())
315
- * .addColumn('age', 'integer', col => col.unsigned().notNull().modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`))
316
- * .execute()
561
+ * import { sql } from 'kysely'
562
+ *
563
+ * await db.schema
564
+ * .createTable('person')
565
+ * .addColumn('id', 'integer', col => col.primaryKey())
566
+ * .addColumn(
567
+ * 'age',
568
+ * 'integer',
569
+ * col => col.unsigned()
570
+ * .notNull()
571
+ * .modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`)
572
+ * )
573
+ * .execute()
317
574
  * ```
318
575
  *
319
576
  * The generated SQL (MySQL):
@@ -44,7 +44,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
44
44
  *
45
45
  * await db.schema
46
46
  * .createTable('person')
47
- * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey()),
47
+ * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
48
48
  * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())
49
49
  * .addColumn('last_name', 'varchar(255)')
50
50
  * .addColumn('bank_balance', 'numeric(8, 2)')
@@ -52,7 +52,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
52
52
  * // don't include it.
53
53
  * .addColumn('data', sql`any_type_here`)
54
54
  * .addColumn('parent_id', 'integer', (col) =>
55
- * col.references('person.id').onDelete('cascade'))
55
+ * col.references('person.id').onDelete('cascade')
56
56
  * )
57
57
  * ```
58
58
  *
@@ -63,11 +63,18 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
63
63
  * `create table` query. See the next example:
64
64
  *
65
65
  * ```ts
66
+ * await db.schema
67
+ * .createTable('person')
68
+ * .addColumn('id', 'integer', (col) => col.primaryKey())
66
69
  * .addColumn('parent_id', 'integer')
67
70
  * .addForeignKeyConstraint(
68
- * 'person_parent_id_fk', ['parent_id'], 'person', ['id'],
71
+ * 'person_parent_id_fk',
72
+ * ['parent_id'],
73
+ * 'person',
74
+ * ['id'],
69
75
  * (cb) => cb.onDelete('cascade')
70
76
  * )
77
+ * .execute()
71
78
  * ```
72
79
  *
73
80
  * Another good example is that PostgreSQL doesn't support the `auto_increment`
@@ -77,7 +84,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
77
84
  * ```ts
78
85
  * await db.schema
79
86
  * .createTable('person')
80
- * .addColumn('id', 'serial', (col) => col.primaryKey()),
87
+ * .addColumn('id', 'serial', (col) => col.primaryKey())
88
+ * .execute()
81
89
  * ```
82
90
  */
83
91
  addColumn<CN extends string>(columnName: CN, dataType: DataTypeExpression, build?: ColumnBuilderCallback): CreateTableBuilder<TB, C | CN>;
@@ -90,7 +98,12 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
90
98
  * ### Examples
91
99
  *
92
100
  * ```ts
93
- * addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
101
+ * await db.schema
102
+ * .createTable('person')
103
+ * .addColumn('first_name', 'varchar(64)')
104
+ * .addColumn('last_name', 'varchar(64)')
105
+ * .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
106
+ * .execute()
94
107
  * ```
95
108
  */
96
109
  addPrimaryKeyConstraint(constraintName: string, columns: C[]): CreateTableBuilder<TB, C>;
@@ -103,12 +116,30 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
103
116
  * ### Examples
104
117
  *
105
118
  * ```ts
106
- * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
119
+ * await db.schema
120
+ * .createTable('person')
121
+ * .addColumn('first_name', 'varchar(64)')
122
+ * .addColumn('last_name', 'varchar(64)')
123
+ * .addUniqueConstraint(
124
+ * 'first_name_last_name_unique',
125
+ * ['first_name', 'last_name']
126
+ * )
127
+ * .execute()
107
128
  * ```
108
129
  *
109
130
  * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
131
+ *
110
132
  * ```ts
111
- * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
133
+ * await db.schema
134
+ * .createTable('person')
135
+ * .addColumn('first_name', 'varchar(64)')
136
+ * .addColumn('last_name', 'varchar(64)')
137
+ * .addUniqueConstraint(
138
+ * 'first_name_last_name_unique',
139
+ * ['first_name', 'last_name'],
140
+ * (cb) => cb.nullsNotDistinct()
141
+ * )
142
+ * .execute()
112
143
  * ```
113
144
  */
114
145
  addUniqueConstraint(constraintName: string, columns: C[], build?: UniqueConstraintNodeBuilderCallback): CreateTableBuilder<TB, C>;
@@ -123,7 +154,11 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
123
154
  * ```ts
124
155
  * import { sql } from 'kysely'
125
156
  *
126
- * addCheckConstraint('check_legs', sql`number_of_legs < 5`)
157
+ * await db.schema
158
+ * .createTable('animal')
159
+ * .addColumn('number_of_legs', 'integer')
160
+ * .addCheckConstraint('check_legs', sql`number_of_legs < 5`)
161
+ * .execute()
127
162
  * ```
128
163
  */
129
164
  addCheckConstraint(constraintName: string, checkExpression: Expression<any>): CreateTableBuilder<TB, C>;
@@ -136,24 +171,33 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
136
171
  * ### Examples
137
172
  *
138
173
  * ```ts
139
- * addForeignKeyConstraint(
140
- * 'owner_id_foreign',
141
- * ['owner_id'],
142
- * 'person',
143
- * ['id'],
144
- * )
174
+ * await db.schema
175
+ * .createTable('pet')
176
+ * .addColumn('owner_id', 'integer')
177
+ * .addForeignKeyConstraint(
178
+ * 'owner_id_foreign',
179
+ * ['owner_id'],
180
+ * 'person',
181
+ * ['id'],
182
+ * )
183
+ * .execute()
145
184
  * ```
146
185
  *
147
186
  * Add constraint for multiple columns:
148
187
  *
149
188
  * ```ts
150
- * addForeignKeyConstraint(
151
- * 'owner_id_foreign',
152
- * ['owner_id1', 'owner_id2'],
153
- * 'person',
154
- * ['id1', 'id2'],
155
- * (cb) => cb.onDelete('cascade')
156
- * )
189
+ * await db.schema
190
+ * .createTable('pet')
191
+ * .addColumn('owner_id1', 'integer')
192
+ * .addColumn('owner_id2', 'integer')
193
+ * .addForeignKeyConstraint(
194
+ * 'owner_id_foreign',
195
+ * ['owner_id1', 'owner_id2'],
196
+ * 'person',
197
+ * ['id1', 'id2'],
198
+ * (cb) => cb.onDelete('cascade')
199
+ * )
200
+ * .execute()
157
201
  * ```
158
202
  */
159
203
  addForeignKeyConstraint(constraintName: string, columns: C[], targetTable: string, targetColumns: string[], build?: ForeignKeyConstraintBuilderCallback): CreateTableBuilder<TB, C>;
@@ -165,11 +209,14 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
165
209
  * ### Examples
166
210
  *
167
211
  * ```ts
168
- * db.schema.createTable('person')
212
+ * import { sql } from 'kysely'
213
+ *
214
+ * await db.schema
215
+ * .createTable('person')
169
216
  * .modifyFront(sql`global temporary`)
170
217
  * .addColumn('id', 'integer', col => col.primaryKey())
171
218
  * .addColumn('first_name', 'varchar(64)', col => col.notNull())
172
- * .addColumn('last_name', 'varchar(64), col => col.notNull())
219
+ * .addColumn('last_name', 'varchar(64)', col => col.notNull())
173
220
  * .execute()
174
221
  * ```
175
222
  *
@@ -192,10 +239,13 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
192
239
  * ### Examples
193
240
  *
194
241
  * ```ts
195
- * db.schema.createTable('person')
196
- * .addColumn('id', 'integer', col => col => primaryKey())
242
+ * import { sql } from 'kysely'
243
+ *
244
+ * await db.schema
245
+ * .createTable('person')
246
+ * .addColumn('id', 'integer', col => col.primaryKey())
197
247
  * .addColumn('first_name', 'varchar(64)', col => col.notNull())
198
- * .addColumn('last_name', 'varchar(64), col => col.notNull())
248
+ * .addColumn('last_name', 'varchar(64)', col => col.notNull())
199
249
  * .modifyEnd(sql`collate utf8_unicode_ci`)
200
250
  * .execute()
201
251
  * ```
@@ -217,7 +267,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
217
267
  * ### Examples
218
268
  *
219
269
  * ```ts
220
- * db.schema.createTable('copy')
270
+ * await db.schema
271
+ * .createTable('copy')
221
272
  * .temporary()
222
273
  * .as(db.selectFrom('person').select(['first_name', 'last_name']))
223
274
  * .execute()
@@ -237,17 +288,19 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
237
288
  * ### Examples
238
289
  *
239
290
  * ```ts
240
- * db.schema
291
+ * await db.schema
241
292
  * .createTable('test')
242
293
  * .$call((builder) => builder.addColumn('id', 'integer'))
243
294
  * .execute()
244
295
  * ```
245
296
  *
297
+ * This is useful for creating reusable functions that can be called with a builder.
298
+ *
246
299
  * ```ts
247
- * const addDefaultColumns = <T extends string, C extends string = never>(
248
- * builder: CreateTableBuilder<T, C>
249
- * ) => {
250
- * return builder
300
+ * import { type CreateTableBuilder, sql } from 'kysely'
301
+ *
302
+ * const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {
303
+ * return ctb
251
304
  * .addColumn('id', 'integer', (col) => col.notNull())
252
305
  * .addColumn('created_at', 'date', (col) =>
253
306
  * col.notNull().defaultTo(sql`now()`)
@@ -257,7 +310,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
257
310
  * )
258
311
  * }
259
312
  *
260
- * db.schema
313
+ * await db.schema
261
314
  * .createTable('test')
262
315
  * .$call(addDefaultColumns)
263
316
  * .execute()