kysely 0.12.0 → 0.14.0

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 (172) hide show
  1. package/README.md +34 -10
  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-adapter-base.d.ts +36 -0
  5. package/dist/cjs/dialect/dialect.d.ts +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +38 -2
  7. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
  8. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +17 -1
  9. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  10. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +4 -1
  11. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +38 -2
  12. package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
  13. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +17 -1
  14. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
  15. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +4 -1
  16. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +38 -2
  17. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +17 -1
  18. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  19. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +4 -1
  20. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  21. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  22. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  23. package/dist/cjs/index.d.ts +4 -3
  24. package/dist/cjs/index.js +3 -2
  25. package/dist/cjs/kysely.d.ts +152 -1
  26. package/dist/cjs/kysely.js +37 -0
  27. package/dist/cjs/migration/migration.d.ts +154 -11
  28. package/dist/cjs/migration/migration.js +256 -135
  29. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  30. package/dist/cjs/operation-node/check-constraint-node.js +2 -3
  31. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -7
  32. package/dist/cjs/operation-node/column-definition-node.js +0 -4
  33. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
  34. package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
  35. package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
  36. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/generated-node.d.ts +20 -0
  38. package/dist/cjs/operation-node/generated-node.js +31 -0
  39. package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
  40. package/dist/cjs/operation-node/on-conflict-node.js +39 -1
  41. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  42. package/dist/cjs/operation-node/operation-node-transformer.js +22 -6
  43. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  44. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  45. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  46. package/dist/cjs/operation-node/with-node.d.ts +3 -1
  47. package/dist/cjs/operation-node/with-node.js +2 -1
  48. package/dist/cjs/package.json +1 -3
  49. package/dist/cjs/parser/parse-context.d.ts +14 -0
  50. package/dist/cjs/parser/with-parser.d.ts +32 -5
  51. package/dist/cjs/parser/with-parser.js +13 -2
  52. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +36 -2
  53. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  54. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  55. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
  56. package/dist/cjs/query-builder/delete-query-builder.d.ts +545 -0
  57. package/dist/cjs/query-builder/insert-query-builder.d.ts +142 -76
  58. package/dist/cjs/query-builder/insert-query-builder.js +150 -15
  59. package/dist/cjs/query-builder/join-interface.d.ts +3 -6
  60. package/dist/cjs/query-builder/on-conflict-builder.d.ts +684 -0
  61. package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
  62. package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
  63. package/dist/cjs/query-builder/select-query-builder.d.ts +513 -2
  64. package/dist/cjs/query-builder/select-query-builder.js +2 -2
  65. package/dist/cjs/query-builder/update-query-builder.d.ts +547 -2
  66. package/dist/cjs/query-builder/update-query-builder.js +2 -2
  67. package/dist/cjs/query-builder/where-interface.d.ts +7 -10
  68. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -2
  69. package/dist/cjs/query-compiler/default-query-compiler.js +48 -8
  70. package/dist/cjs/query-creator.d.ts +27 -3
  71. package/dist/cjs/query-creator.js +33 -1
  72. package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
  73. package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
  74. package/dist/cjs/raw-builder/raw-builder.js +1 -1
  75. package/dist/cjs/schema/alter-table-builder.d.ts +253 -5
  76. package/dist/cjs/schema/alter-table-builder.js +45 -9
  77. package/dist/cjs/schema/column-definition-builder.d.ts +146 -6
  78. package/dist/cjs/schema/column-definition-builder.js +21 -8
  79. package/dist/cjs/schema/create-index-builder.d.ts +3 -2
  80. package/dist/cjs/schema/create-index-builder.js +2 -2
  81. package/dist/cjs/schema/create-table-builder.d.ts +3 -2
  82. package/dist/cjs/schema/create-table-builder.js +2 -2
  83. package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
  84. package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
  85. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  86. package/dist/esm/dialect/dialect.d.ts +1 -1
  87. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +38 -2
  88. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
  89. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +17 -1
  90. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  91. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +4 -1
  92. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +38 -2
  93. package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
  94. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +17 -1
  95. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  96. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +4 -1
  97. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +38 -2
  98. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +17 -1
  99. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  100. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +4 -1
  101. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  102. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  103. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  104. package/dist/esm/index.d.ts +4 -3
  105. package/dist/esm/index.js +3 -2
  106. package/dist/esm/kysely.d.ts +152 -1
  107. package/dist/esm/kysely.js +37 -0
  108. package/dist/esm/migration/migration.d.ts +154 -11
  109. package/dist/esm/migration/migration.js +255 -134
  110. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  111. package/dist/esm/operation-node/check-constraint-node.js +2 -3
  112. package/dist/esm/operation-node/column-definition-node.d.ts +8 -7
  113. package/dist/esm/operation-node/column-definition-node.js +0 -4
  114. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
  115. package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
  116. package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
  117. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  118. package/dist/esm/operation-node/generated-node.d.ts +20 -0
  119. package/dist/esm/operation-node/generated-node.js +28 -0
  120. package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
  121. package/dist/esm/operation-node/on-conflict-node.js +39 -1
  122. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  123. package/dist/esm/operation-node/operation-node-transformer.js +22 -6
  124. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  125. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  126. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  127. package/dist/esm/operation-node/with-node.d.ts +3 -1
  128. package/dist/esm/operation-node/with-node.js +2 -1
  129. package/dist/esm/package.json +1 -3
  130. package/dist/esm/parser/parse-context.d.ts +14 -0
  131. package/dist/esm/parser/with-parser.d.ts +32 -5
  132. package/dist/esm/parser/with-parser.js +13 -2
  133. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +36 -2
  134. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  135. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  136. package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
  137. package/dist/esm/query-builder/delete-query-builder.d.ts +545 -0
  138. package/dist/esm/query-builder/insert-query-builder.d.ts +142 -76
  139. package/dist/esm/query-builder/insert-query-builder.js +150 -15
  140. package/dist/esm/query-builder/join-interface.d.ts +3 -6
  141. package/dist/esm/query-builder/on-conflict-builder.d.ts +684 -0
  142. package/dist/esm/query-builder/on-conflict-builder.js +317 -0
  143. package/dist/esm/query-builder/returning-interface.d.ts +1 -1
  144. package/dist/esm/query-builder/select-query-builder.d.ts +513 -2
  145. package/dist/esm/query-builder/select-query-builder.js +2 -2
  146. package/dist/esm/query-builder/update-query-builder.d.ts +547 -2
  147. package/dist/esm/query-builder/update-query-builder.js +2 -2
  148. package/dist/esm/query-builder/where-interface.d.ts +7 -10
  149. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -2
  150. package/dist/esm/query-compiler/default-query-compiler.js +48 -8
  151. package/dist/esm/query-creator.d.ts +27 -3
  152. package/dist/esm/query-creator.js +33 -1
  153. package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
  154. package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
  155. package/dist/esm/raw-builder/raw-builder.js +1 -1
  156. package/dist/esm/schema/alter-table-builder.d.ts +253 -5
  157. package/dist/esm/schema/alter-table-builder.js +45 -9
  158. package/dist/esm/schema/column-definition-builder.d.ts +146 -6
  159. package/dist/esm/schema/column-definition-builder.js +21 -8
  160. package/dist/esm/schema/create-index-builder.d.ts +3 -2
  161. package/dist/esm/schema/create-index-builder.js +2 -2
  162. package/dist/esm/schema/create-table-builder.d.ts +3 -2
  163. package/dist/esm/schema/create-table-builder.js +2 -2
  164. package/package.json +8 -6
  165. package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
  166. package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
  167. package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
  168. package/dist/cjs/parser/on-conflict-parser.js +0 -35
  169. package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
  170. package/dist/esm/operation-node/generated-always-as-node.js +0 -22
  171. package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
  172. package/dist/esm/parser/on-conflict-parser.js +0 -30
@@ -66,6 +66,12 @@ export interface ColumnDefinitionBuilderInterface {
66
66
  * Adds a `not null` constraint for the column.
67
67
  */
68
68
  notNull(): ColumnDefinitionBuilderInterface;
69
+ /**
70
+ * Adds a `unsigned` modifier for the column.
71
+ *
72
+ * This only works on some dialects like MySQL.
73
+ */
74
+ unsigned(): ColumnDefinitionBuilderInterface;
69
75
  /**
70
76
  * Adds a default value constraint for the column.
71
77
  *
@@ -87,11 +93,13 @@ export interface ColumnDefinitionBuilderInterface {
87
93
  * ```ts
88
94
  * db.schema
89
95
  * .createTable('pet')
90
- * .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
+ * )
91
99
  * .execute()
92
100
  * ```
93
101
  */
94
- check(sql: string): ColumnDefinitionBuilderInterface;
102
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilderInterface;
95
103
  /**
96
104
  * Makes the column a generated column using a `generated always as` statement.
97
105
  *
@@ -101,12 +109,20 @@ export interface ColumnDefinitionBuilderInterface {
101
109
  * db.schema
102
110
  * .createTable('person')
103
111
  * .addColumn('full_name', 'varchar(255)',
104
- * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
112
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
105
113
  * )
106
114
  * .execute()
107
115
  * ```
108
116
  */
109
- 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;
110
126
  /**
111
127
  * Makes a generated column stored instead of virtual. This method can only
112
128
  * be used with {@link generatedAlwaysAs}
@@ -128,16 +144,140 @@ export interface ColumnDefinitionBuilderInterface {
128
144
  export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface, OperationNodeSource {
129
145
  #private;
130
146
  constructor(node: ColumnDefinitionNode);
147
+ /**
148
+ * Adds `auto_increment` or `autoincrement` to the column definition
149
+ * depending on the dialect.
150
+ *
151
+ * Some dialects like PostgreSQL don't support this. On PostgreSQL
152
+ * you can use the `serial` or `bigserial` data type instead.
153
+ */
131
154
  autoIncrement(): ColumnDefinitionBuilder;
155
+ /**
156
+ * Makes the column the primary key.
157
+ *
158
+ * If you want to specify a composite primary key use the
159
+ * {@link TableBuilder.addPrimaryKeyConstraint} method.
160
+ */
132
161
  primaryKey(): ColumnDefinitionBuilder;
162
+ /**
163
+ * Adds a foreign key constraint for the column.
164
+ *
165
+ * If your database engine doesn't support foreign key constraints in the
166
+ * column definition (like MySQL 5) you need to call the table level
167
+ * {@link TableBuilder.addForeignKeyConstraint} method instead.
168
+ *
169
+ * ### Examples
170
+ *
171
+ * ```ts
172
+ * col.references('person.id')
173
+ * ```
174
+ */
133
175
  references(ref: string): ColumnDefinitionBuilder;
176
+ /**
177
+ * Adds an `on delete` constraint for the foreign key column.
178
+ *
179
+ * If your database engine doesn't support foreign key constraints in the
180
+ * column definition (like MySQL 5) you need to call the table level
181
+ * {@link TableBuilder.addForeignKeyConstraint} method instead.
182
+ *
183
+ * ### Examples
184
+ *
185
+ * ```ts
186
+ * col.references('person.id').onDelete('cascade')
187
+ * ```
188
+ */
134
189
  onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
190
+ /**
191
+ * Adds an `on update` constraint for the foreign key column.
192
+ *
193
+ * ### Examples
194
+ *
195
+ * ```ts
196
+ * col.references('person.id').onUpdate('cascade')
197
+ * ```
198
+ */
135
199
  onUpdate(onUpdate: OnModifyForeignAction): ColumnDefinitionBuilder;
200
+ /**
201
+ * Adds a unique constraint for the column.
202
+ */
136
203
  unique(): ColumnDefinitionBuilder;
204
+ /**
205
+ * Adds a `not null` constraint for the column.
206
+ */
137
207
  notNull(): ColumnDefinitionBuilder;
208
+ /**
209
+ * Adds a `unsigned` modifier for the column.
210
+ *
211
+ * This only works on some dialects like MySQL.
212
+ */
213
+ unsigned(): ColumnDefinitionBuilder;
214
+ /**
215
+ * Adds a default value constraint for the column.
216
+ *
217
+ * ### Examples
218
+ *
219
+ * ```ts
220
+ * db.schema
221
+ * .createTable('pet')
222
+ * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))
223
+ * .execute()
224
+ * ```
225
+ */
138
226
  defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
139
- check(sql: string): ColumnDefinitionBuilder;
140
- generatedAlwaysAs(sql: string): ColumnDefinitionBuilder;
227
+ /**
228
+ * Adds a check constraint for the column.
229
+ *
230
+ * ### Examples
231
+ *
232
+ * ```ts
233
+ * db.schema
234
+ * .createTable('pet')
235
+ * .addColumn('number_of_legs', 'integer', (col) =>
236
+ * col.check(db.raw('number_of_legs < 5'))
237
+ * )
238
+ * .execute()
239
+ * ```
240
+ */
241
+ check(expression: AnyRawBuilder): ColumnDefinitionBuilder;
242
+ /**
243
+ * Makes the column a generated column using a `generated always as` statement.
244
+ *
245
+ * ### Examples
246
+ *
247
+ * ```ts
248
+ * db.schema
249
+ * .createTable('person')
250
+ * .addColumn('full_name', 'varchar(255)',
251
+ * (col) => col.generatedAlwaysAs(db.raw("concat(first_name, ' ', last_name)"))
252
+ * )
253
+ * .execute()
254
+ * ```
255
+ */
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;
265
+ /**
266
+ * Makes a generated column stored instead of virtual. This method can only
267
+ * be used with {@link generatedAlwaysAs}
268
+ *
269
+ * ### Examples
270
+ *
271
+ * ```ts
272
+ * db.schema
273
+ * .createTable('person')
274
+ * .addColumn('full_name', 'varchar(255)', (col) => col
275
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
276
+ * .stored()
277
+ * )
278
+ * .execute()
279
+ * ```
280
+ */
141
281
  stored(): ColumnDefinitionBuilder;
142
282
  toOperationNode(): ColumnDefinitionNode;
143
283
  }
@@ -6,7 +6,7 @@ import { parseStringReference } from '../parser/reference-parser.js';
6
6
  import { preventAwait } from '../util/prevent-await.js';
7
7
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
8
8
  import { parseDefaultValueExpression, } from '../parser/default-value-parser.js';
9
- import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
9
+ import { GeneratedNode } from '../operation-node/generated-node.js';
10
10
  import { DefaultValueNode } from '../operation-node/default-value-node.js';
11
11
  export class ColumnDefinitionBuilder {
12
12
  #node;
@@ -50,29 +50,42 @@ export class ColumnDefinitionBuilder {
50
50
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
51
51
  }
52
52
  notNull() {
53
- return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullable: false }));
53
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));
54
+ }
55
+ unsigned() {
56
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));
54
57
  }
55
58
  defaultTo(value) {
56
59
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
57
60
  defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),
58
61
  }));
59
62
  }
60
- check(sql) {
63
+ check(expression) {
64
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
65
+ check: CheckConstraintNode.create(expression.toOperationNode()),
66
+ }));
67
+ }
68
+ generatedAlwaysAs(expression) {
69
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
70
+ generated: GeneratedNode.createWithExpression(expression.toOperationNode()),
71
+ }));
72
+ }
73
+ generatedAlwaysAsIdentity() {
61
74
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
62
- check: CheckConstraintNode.create(sql),
75
+ generated: GeneratedNode.create({ identity: true, always: true }),
63
76
  }));
64
77
  }
65
- generatedAlwaysAs(sql) {
78
+ generatedByDefaultAsIdentity() {
66
79
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
67
- generatedAlwaysAs: GeneratedAlwaysAsNode.create(sql),
80
+ generated: GeneratedNode.create({ identity: true, byDefault: true }),
68
81
  }));
69
82
  }
70
83
  stored() {
71
- if (!this.#node.generatedAlwaysAs) {
84
+ if (!this.#node.generated) {
72
85
  throw new Error('stored() can only be called after generatedAlwaysAs');
73
86
  }
74
87
  return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
75
- generatedAlwaysAs: GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
88
+ generated: GeneratedNode.cloneWith(this.#node.generated, {
76
89
  stored: true,
77
90
  }),
78
91
  }));
@@ -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
  */
@@ -67,7 +67,7 @@ export class CreateIndexBuilder {
67
67
  * await db.schema
68
68
  * .createIndex('person_first_name_index')
69
69
  * .on('person')
70
- * .expression('first_name COLLATE "fi_FI"')
70
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
71
71
  * .execute()
72
72
  * ```
73
73
  */
@@ -75,7 +75,7 @@ export class CreateIndexBuilder {
75
75
  return new CreateIndexBuilder({
76
76
  ...this.#props,
77
77
  createIndexNode: CreateIndexNode.cloneWith(this.#props.createIndexNode, {
78
- expression: RawNode.createWithSql(expression),
78
+ expression: expression.toOperationNode(),
79
79
  }),
80
80
  });
81
81
  }
@@ -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
  *
@@ -153,13 +153,13 @@ export class CreateTableBuilder {
153
153
  * ### Examples
154
154
  *
155
155
  * ```ts
156
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
156
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
157
157
  * ```
158
158
  */
159
159
  addCheckConstraint(constraintName, checkExpression) {
160
160
  return new CreateTableBuilder({
161
161
  ...this.#props,
162
- createTableNode: CreateTableNode.cloneWithConstraint(this.#props.createTableNode, CheckConstraintNode.create(checkExpression, constraintName)),
162
+ createTableNode: CreateTableNode.cloneWithConstraint(this.#props.createTableNode, CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
163
163
  });
164
164
  }
165
165
  /**
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "kysely",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Type safe SQL query builder",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/koskimas/kysely.git"
8
8
  },
9
9
  "engines": {
10
- "node": ">=16.0.0"
10
+ "node": ">=14.0.0"
11
11
  },
12
12
  "main": "dist/cjs/index.js",
13
13
  "module": "dist/esm/index.js",
@@ -20,16 +20,18 @@
20
20
  "scripts": {
21
21
  "test:build": "rm -rf test/dist && tsc -p test",
22
22
  "clean": "rm -rf dist && rm -rf test/dist",
23
- "test": "npm run clean && npm run build:cjs && npm run test:build && npm run test:integration && npm run test:typings && npm run test:esmimports",
23
+ "test": "npm run clean && npm run build:cjs && npm run script:copy-interface-doc && npm run test:build && npm run test:integration && npm run test:typings && npm run test:esmimports",
24
24
  "test:integration": "mocha --timeout 15000 test/dist/**/*.test.js",
25
25
  "test:typings": "tsd test/typings",
26
- "test:esmimports": "node check-esm-imports.js",
26
+ "test:esmimports": "node scripts/check-esm-imports.js",
27
27
  "prettier": "prettier --write src/**/*.ts test/**/*.ts",
28
- "build": "npm run clean && npm run build:esm && npm run build:cjs && ./module-fixup.sh",
28
+ "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run script:module-fixup && npm run script:copy-interface-doc",
29
29
  "build:esm": "tsc -p tsconfig.json",
30
30
  "build:cjs": "tsc -p tsconfig-cjs.json",
31
31
  "docs:build": "typedoc --excludePrivate --excludeInternal --customCss ./docs-theme.css src/index.ts && npm run docs:postprocess",
32
- "docs:postprocess": "node post-process-docs.js",
32
+ "docs:postprocess": "node scripts/post-process-docs.js",
33
+ "script:module-fixup": "node scripts/module-fixup.js",
34
+ "script:copy-interface-doc": "node scripts/copy-interface-documentation.js",
33
35
  "prepublishOnly": "npm run build"
34
36
  },
35
37
  "author": "Sami Koskimäki <sami@jakso.me>",
@@ -1,16 +0,0 @@
1
- import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
- export declare type GeneratedAlwaysAsNodeParams = Omit<GeneratedAlwaysAsNode, 'kind' | 'expression'>;
4
- export interface GeneratedAlwaysAsNode extends OperationNode {
5
- readonly kind: 'GeneratedAlwaysAsNode';
6
- readonly expression: RawNode;
7
- readonly stored?: boolean;
8
- }
9
- /**
10
- * @internal
11
- */
12
- export declare const GeneratedAlwaysAsNode: Readonly<{
13
- is(node: OperationNode): node is GeneratedAlwaysAsNode;
14
- create(expression: string): GeneratedAlwaysAsNode;
15
- cloneWith(node: GeneratedAlwaysAsNode, params: GeneratedAlwaysAsNodeParams): GeneratedAlwaysAsNode;
16
- }>;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GeneratedAlwaysAsNode = void 0;
4
- const object_utils_js_1 = require("../util/object-utils.js");
5
- const raw_node_js_1 = require("./raw-node.js");
6
- /**
7
- * @internal
8
- */
9
- exports.GeneratedAlwaysAsNode = (0, object_utils_js_1.freeze)({
10
- is(node) {
11
- return node.kind === 'GeneratedAlwaysAsNode';
12
- },
13
- create(expression) {
14
- return (0, object_utils_js_1.freeze)({
15
- kind: 'GeneratedAlwaysAsNode',
16
- expression: raw_node_js_1.RawNode.createWithSql(expression),
17
- });
18
- },
19
- cloneWith(node, params) {
20
- return (0, object_utils_js_1.freeze)({
21
- ...node,
22
- ...params,
23
- });
24
- },
25
- });
@@ -1,10 +0,0 @@
1
- import { OnConflictNode } from '../operation-node/on-conflict-node.js';
2
- import { AnyColumn } from '../util/type-utils.js';
3
- import { ParseContext } from './parse-context.js';
4
- import { MutationObject } from './update-set-parser.js';
5
- export declare type OnConflictConstraintTarget = {
6
- constraint: string;
7
- };
8
- export declare type OnConflictTargetExpression<DB, TB extends keyof DB> = AnyColumn<DB, TB> | ReadonlyArray<AnyColumn<DB, TB>> | OnConflictConstraintTarget;
9
- export declare function parseOnConflictDoNothing(target: OnConflictTargetExpression<any, any>): OnConflictNode;
10
- export declare function parseOnConflictUpdate(ctx: ParseContext, target: OnConflictTargetExpression<any, any>, updates: MutationObject<any, any>): OnConflictNode;
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseOnConflictUpdate = exports.parseOnConflictDoNothing = void 0;
4
- const identifier_node_js_1 = require("../operation-node/identifier-node.js");
5
- const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
6
- const object_utils_js_1 = require("../util/object-utils.js");
7
- const reference_parser_js_1 = require("./reference-parser.js");
8
- const update_set_parser_js_1 = require("./update-set-parser.js");
9
- function parseOnConflictDoNothing(target) {
10
- return on_conflict_node_js_1.OnConflictNode.create({
11
- ...parseConflictTarget(target),
12
- doNothing: true,
13
- });
14
- }
15
- exports.parseOnConflictDoNothing = parseOnConflictDoNothing;
16
- function parseOnConflictUpdate(ctx, target, updates) {
17
- return on_conflict_node_js_1.OnConflictNode.create({
18
- ...parseConflictTarget(target),
19
- updates: (0, update_set_parser_js_1.parseUpdateObject)(ctx, updates),
20
- });
21
- }
22
- exports.parseOnConflictUpdate = parseOnConflictUpdate;
23
- function parseConflictTarget(target) {
24
- if ((0, object_utils_js_1.isString)(target) || (0, object_utils_js_1.isReadonlyArray)(target)) {
25
- return {
26
- columns: (0, object_utils_js_1.asReadonlyArray)(target).map(reference_parser_js_1.parseColumnName),
27
- };
28
- }
29
- if ((0, object_utils_js_1.isObject)(target) && !(0, object_utils_js_1.isReadonlyArray)(target)) {
30
- return {
31
- constraint: identifier_node_js_1.IdentifierNode.create(target.constraint),
32
- };
33
- }
34
- throw new Error(`invalid on conflict target ${JSON.stringify(target)}`);
35
- }
@@ -1,16 +0,0 @@
1
- import { OperationNode } from './operation-node.js';
2
- import { RawNode } from './raw-node.js';
3
- export declare type GeneratedAlwaysAsNodeParams = Omit<GeneratedAlwaysAsNode, 'kind' | 'expression'>;
4
- export interface GeneratedAlwaysAsNode extends OperationNode {
5
- readonly kind: 'GeneratedAlwaysAsNode';
6
- readonly expression: RawNode;
7
- readonly stored?: boolean;
8
- }
9
- /**
10
- * @internal
11
- */
12
- export declare const GeneratedAlwaysAsNode: Readonly<{
13
- is(node: OperationNode): node is GeneratedAlwaysAsNode;
14
- create(expression: string): GeneratedAlwaysAsNode;
15
- cloneWith(node: GeneratedAlwaysAsNode, params: GeneratedAlwaysAsNodeParams): GeneratedAlwaysAsNode;
16
- }>;
@@ -1,22 +0,0 @@
1
- import { freeze } from '../util/object-utils.js';
2
- import { RawNode } from './raw-node.js';
3
- /**
4
- * @internal
5
- */
6
- export const GeneratedAlwaysAsNode = freeze({
7
- is(node) {
8
- return node.kind === 'GeneratedAlwaysAsNode';
9
- },
10
- create(expression) {
11
- return freeze({
12
- kind: 'GeneratedAlwaysAsNode',
13
- expression: RawNode.createWithSql(expression),
14
- });
15
- },
16
- cloneWith(node, params) {
17
- return freeze({
18
- ...node,
19
- ...params,
20
- });
21
- },
22
- });
@@ -1,10 +0,0 @@
1
- import { OnConflictNode } from '../operation-node/on-conflict-node.js';
2
- import { AnyColumn } from '../util/type-utils.js';
3
- import { ParseContext } from './parse-context.js';
4
- import { MutationObject } from './update-set-parser.js';
5
- export declare type OnConflictConstraintTarget = {
6
- constraint: string;
7
- };
8
- export declare type OnConflictTargetExpression<DB, TB extends keyof DB> = AnyColumn<DB, TB> | ReadonlyArray<AnyColumn<DB, TB>> | OnConflictConstraintTarget;
9
- export declare function parseOnConflictDoNothing(target: OnConflictTargetExpression<any, any>): OnConflictNode;
10
- export declare function parseOnConflictUpdate(ctx: ParseContext, target: OnConflictTargetExpression<any, any>, updates: MutationObject<any, any>): OnConflictNode;
@@ -1,30 +0,0 @@
1
- import { IdentifierNode } from '../operation-node/identifier-node.js';
2
- import { OnConflictNode } from '../operation-node/on-conflict-node.js';
3
- import { asReadonlyArray, isObject, isReadonlyArray, isString, } from '../util/object-utils.js';
4
- import { parseColumnName } from './reference-parser.js';
5
- import { parseUpdateObject } from './update-set-parser.js';
6
- export function parseOnConflictDoNothing(target) {
7
- return OnConflictNode.create({
8
- ...parseConflictTarget(target),
9
- doNothing: true,
10
- });
11
- }
12
- export function parseOnConflictUpdate(ctx, target, updates) {
13
- return OnConflictNode.create({
14
- ...parseConflictTarget(target),
15
- updates: parseUpdateObject(ctx, updates),
16
- });
17
- }
18
- function parseConflictTarget(target) {
19
- if (isString(target) || isReadonlyArray(target)) {
20
- return {
21
- columns: asReadonlyArray(target).map(parseColumnName),
22
- };
23
- }
24
- if (isObject(target) && !isReadonlyArray(target)) {
25
- return {
26
- constraint: IdentifierNode.create(target.constraint),
27
- };
28
- }
29
- throw new Error(`invalid on conflict target ${JSON.stringify(target)}`);
30
- }