kysely 0.11.3 → 0.12.2

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 (250) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
  3. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +36 -0
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
  5. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
  7. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +36 -0
  8. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +16 -0
  9. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
  10. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +3 -0
  11. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  13. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
  15. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  16. package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
  17. package/dist/cjs/driver/runtime-driver.d.ts +29 -0
  18. package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
  19. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  20. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  21. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  22. package/dist/cjs/dynamic/dynamic.js +6 -7
  23. package/dist/cjs/index.d.ts +14 -3
  24. package/dist/cjs/index.js +12 -1
  25. package/dist/cjs/kysely.d.ts +170 -11
  26. package/dist/cjs/kysely.js +69 -9
  27. package/dist/cjs/migration/migration.d.ts +2 -2
  28. package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
  29. package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
  30. package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
  32. package/dist/cjs/operation-node/create-table-node.js +6 -6
  33. package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
  34. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
  35. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -0
  36. package/dist/cjs/operation-node/operation-node-transformer.js +20 -1
  37. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -0
  38. package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
  39. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  40. package/dist/cjs/operation-node/query-node.d.ts +0 -2
  41. package/dist/cjs/operation-node/query-node.js +0 -10
  42. package/dist/cjs/operation-node/values-node.d.ts +15 -0
  43. package/dist/cjs/operation-node/values-node.js +18 -0
  44. package/dist/cjs/operation-node/with-node.d.ts +3 -1
  45. package/dist/cjs/operation-node/with-node.js +2 -1
  46. package/dist/cjs/package.json +1 -3
  47. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  48. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  49. package/dist/cjs/parser/filter-parser.d.ts +13 -4
  50. package/dist/cjs/parser/filter-parser.js +21 -24
  51. package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
  52. package/dist/cjs/parser/insert-values-parser.js +31 -39
  53. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  54. package/dist/cjs/parser/parse-context.d.ts +22 -8
  55. package/dist/cjs/parser/parse-context.js +10 -10
  56. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  57. package/dist/cjs/parser/reference-parser.js +8 -17
  58. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  59. package/dist/cjs/parser/select-parser.d.ts +12 -14
  60. package/dist/cjs/parser/select-parser.js +5 -9
  61. package/dist/cjs/parser/table-parser.d.ts +9 -11
  62. package/dist/cjs/parser/table-parser.js +2 -8
  63. package/dist/cjs/parser/union-parser.d.ts +2 -2
  64. package/dist/cjs/parser/union-parser.js +1 -6
  65. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  66. package/dist/cjs/parser/update-set-parser.js +6 -26
  67. package/dist/cjs/parser/value-parser.d.ts +9 -6
  68. package/dist/cjs/parser/value-parser.js +7 -30
  69. package/dist/cjs/parser/with-parser.d.ts +36 -6
  70. package/dist/cjs/parser/with-parser.js +13 -2
  71. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  72. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  73. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  74. package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  75. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
  76. package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
  77. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  78. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  79. package/dist/cjs/query-builder/expression-builder.js +3 -3
  80. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  81. package/dist/cjs/query-builder/function-builder.js +2 -1
  82. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  83. package/dist/cjs/query-builder/having-interface.js +2 -0
  84. package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
  85. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  86. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  87. package/dist/cjs/query-builder/insert-result.js +3 -2
  88. package/dist/cjs/query-builder/join-builder.d.ts +19 -20
  89. package/dist/cjs/query-builder/join-builder.js +12 -12
  90. package/dist/cjs/query-builder/join-interface.d.ts +130 -0
  91. package/dist/cjs/query-builder/join-interface.js +2 -0
  92. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  93. package/dist/cjs/query-builder/no-result-error.js +14 -0
  94. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  95. package/dist/cjs/query-builder/returning-interface.js +2 -0
  96. package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  97. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  98. package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
  99. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  100. package/dist/cjs/query-builder/where-interface.d.ts +378 -0
  101. package/dist/cjs/query-builder/where-interface.js +2 -0
  102. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -0
  103. package/dist/cjs/query-compiler/default-query-compiler.js +33 -5
  104. package/dist/cjs/query-creator.d.ts +69 -43
  105. package/dist/cjs/query-creator.js +66 -29
  106. package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
  107. package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
  108. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  109. package/dist/cjs/query-executor/query-executor.js +1 -1
  110. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  111. package/dist/cjs/raw-builder/raw-builder.js +7 -1
  112. package/dist/cjs/schema/alter-table-builder.d.ts +218 -2
  113. package/dist/cjs/schema/column-definition-builder.d.ts +135 -20
  114. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  115. package/dist/cjs/schema/create-index-builder.js +2 -1
  116. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  117. package/dist/cjs/schema/create-table-builder.js +42 -9
  118. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  119. package/dist/cjs/schema/create-view-builder.js +25 -16
  120. package/dist/cjs/schema/schema.d.ts +18 -11
  121. package/dist/cjs/schema/schema.js +18 -11
  122. package/dist/cjs/util/log.d.ts +3 -2
  123. package/dist/cjs/util/log.js +8 -15
  124. package/dist/cjs/util/type-utils.d.ts +7 -7
  125. package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
  126. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +36 -0
  127. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
  128. package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
  129. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
  130. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +36 -0
  131. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
  132. package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
  133. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
  134. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +36 -0
  135. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  136. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
  137. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
  138. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
  139. package/dist/esm/driver/default-connection-provider.d.ts +4 -0
  140. package/dist/esm/driver/runtime-driver.d.ts +29 -0
  141. package/dist/esm/driver/single-connection-provider.d.ts +4 -0
  142. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  143. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  144. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  145. package/dist/esm/dynamic/dynamic.js +6 -7
  146. package/dist/esm/index.d.ts +14 -3
  147. package/dist/esm/index.js +12 -1
  148. package/dist/esm/kysely.d.ts +170 -11
  149. package/dist/esm/kysely.js +69 -9
  150. package/dist/esm/migration/migration.d.ts +2 -2
  151. package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
  152. package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
  153. package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
  154. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  155. package/dist/esm/operation-node/create-table-node.js +6 -6
  156. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  157. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  158. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -0
  159. package/dist/esm/operation-node/operation-node-transformer.js +20 -1
  160. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -0
  161. package/dist/esm/operation-node/operation-node-visitor.js +2 -0
  162. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  163. package/dist/esm/operation-node/query-node.d.ts +0 -2
  164. package/dist/esm/operation-node/query-node.js +0 -10
  165. package/dist/esm/operation-node/values-node.d.ts +15 -0
  166. package/dist/esm/operation-node/values-node.js +15 -0
  167. package/dist/esm/operation-node/with-node.d.ts +3 -1
  168. package/dist/esm/operation-node/with-node.js +2 -1
  169. package/dist/esm/package.json +1 -3
  170. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  171. package/dist/esm/parser/complex-expression-parser.js +20 -0
  172. package/dist/esm/parser/filter-parser.d.ts +13 -4
  173. package/dist/esm/parser/filter-parser.js +21 -24
  174. package/dist/esm/parser/insert-values-parser.d.ts +7 -10
  175. package/dist/esm/parser/insert-values-parser.js +31 -38
  176. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  177. package/dist/esm/parser/parse-context.d.ts +22 -8
  178. package/dist/esm/parser/parse-context.js +10 -10
  179. package/dist/esm/parser/reference-parser.d.ts +8 -7
  180. package/dist/esm/parser/reference-parser.js +9 -18
  181. package/dist/esm/parser/returning-parser.d.ts +1 -5
  182. package/dist/esm/parser/select-parser.d.ts +12 -14
  183. package/dist/esm/parser/select-parser.js +6 -10
  184. package/dist/esm/parser/table-parser.d.ts +9 -11
  185. package/dist/esm/parser/table-parser.js +3 -9
  186. package/dist/esm/parser/union-parser.d.ts +2 -2
  187. package/dist/esm/parser/union-parser.js +1 -6
  188. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  189. package/dist/esm/parser/update-set-parser.js +5 -24
  190. package/dist/esm/parser/value-parser.d.ts +9 -6
  191. package/dist/esm/parser/value-parser.js +8 -31
  192. package/dist/esm/parser/with-parser.d.ts +36 -6
  193. package/dist/esm/parser/with-parser.js +13 -2
  194. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +34 -0
  195. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
  196. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  197. package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
  198. package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
  199. package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
  200. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  201. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  202. package/dist/esm/query-builder/expression-builder.js +3 -3
  203. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  204. package/dist/esm/query-builder/function-builder.js +2 -1
  205. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  206. package/dist/esm/query-builder/having-interface.js +1 -0
  207. package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
  208. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  209. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  210. package/dist/esm/query-builder/insert-result.js +3 -2
  211. package/dist/esm/query-builder/join-builder.d.ts +19 -20
  212. package/dist/esm/query-builder/join-builder.js +12 -12
  213. package/dist/esm/query-builder/join-interface.d.ts +130 -0
  214. package/dist/esm/query-builder/join-interface.js +1 -0
  215. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  216. package/dist/esm/query-builder/no-result-error.js +10 -0
  217. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  218. package/dist/esm/query-builder/returning-interface.js +1 -0
  219. package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -634
  220. package/dist/esm/query-builder/select-query-builder.js +566 -0
  221. package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
  222. package/dist/esm/query-builder/update-query-builder.js +275 -0
  223. package/dist/esm/query-builder/where-interface.d.ts +378 -0
  224. package/dist/esm/query-builder/where-interface.js +1 -0
  225. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -0
  226. package/dist/esm/query-compiler/default-query-compiler.js +33 -5
  227. package/dist/esm/query-creator.d.ts +69 -43
  228. package/dist/esm/query-creator.js +66 -29
  229. package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
  230. package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
  231. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  232. package/dist/esm/query-executor/query-executor.js +1 -1
  233. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  234. package/dist/esm/raw-builder/raw-builder.js +7 -1
  235. package/dist/esm/schema/alter-table-builder.d.ts +218 -2
  236. package/dist/esm/schema/column-definition-builder.d.ts +135 -20
  237. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  238. package/dist/esm/schema/create-index-builder.js +2 -1
  239. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  240. package/dist/esm/schema/create-table-builder.js +43 -10
  241. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  242. package/dist/esm/schema/create-view-builder.js +25 -16
  243. package/dist/esm/schema/schema.d.ts +18 -11
  244. package/dist/esm/schema/schema.js +18 -11
  245. package/dist/esm/util/log.d.ts +3 -2
  246. package/dist/esm/util/log.js +7 -14
  247. package/dist/esm/util/type-utils.d.ts +7 -7
  248. package/package.json +10 -8
  249. package/dist/cjs/query-builder/query-builder.js +0 -1067
  250. package/dist/esm/query-builder/query-builder.js +0 -1061
@@ -1,4 +1,4 @@
1
- import { CreateTableNode } from '../operation-node/create-table-node.js';
1
+ import { CreateTableNode, OnCommitAction } from '../operation-node/create-table-node.js';
2
2
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
3
3
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { Compilable } from '../util/compilable.js';
@@ -13,6 +13,19 @@ import { DataTypeExpression } from '../parser/data-type-parser.js';
13
13
  export declare class CreateTableBuilder<TB extends string, C extends string = never> implements OperationNodeSource, Compilable {
14
14
  #private;
15
15
  constructor(props: CreateTableBuilderProps);
16
+ /**
17
+ * Adds the "temporary" modifier.
18
+ *
19
+ * Use this to create a temporary table.
20
+ */
21
+ temporary(): CreateTableBuilder<TB, C>;
22
+ /**
23
+ * Adds an "on commit" statement.
24
+ *
25
+ * This can be used in conjunction with temporary tables on supported databases
26
+ * like PostgreSQL.
27
+ */
28
+ onCommit(onCommit: OnCommitAction): CreateTableBuilder<TB, C>;
16
29
  /**
17
30
  * Adds the "if not exists" modifier.
18
31
  *
@@ -22,7 +35,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
22
35
  /**
23
36
  * Adds a column to the table.
24
37
  *
25
- * @example
38
+ * ### Examples
39
+ *
26
40
  * ```ts
27
41
  * await db.schema
28
42
  * .createTable('person')
@@ -42,7 +56,6 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
42
56
  * foreign key constraints need to be defined in at the level of the `create table`
43
57
  * query. See the next example:
44
58
  *
45
- * @example
46
59
  * ```ts
47
60
  * .addColumn('parent_id', 'integer')
48
61
  * .addForeignKeyConstraint(
@@ -55,7 +68,6 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
55
68
  * keyword and you need to define an autoincrementing column for example using
56
69
  * `serial`:
57
70
  *
58
- * @example
59
71
  * ```ts
60
72
  * await db.schema
61
73
  * .createTable('person')
@@ -69,7 +81,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
69
81
  * The constraint name can be anything you want, but it must be unique
70
82
  * across the whole database.
71
83
  *
72
- * @example
84
+ * ### Examples
85
+ *
73
86
  * ```ts
74
87
  * addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
75
88
  * ```
@@ -81,7 +94,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
81
94
  * The constraint name can be anything you want, but it must be unique
82
95
  * across the whole database.
83
96
  *
84
- * @example
97
+ * ### Examples
98
+ *
85
99
  * ```ts
86
100
  * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
87
101
  * ```
@@ -93,7 +107,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
93
107
  * The constraint name can be anything you want, but it must be unique
94
108
  * across the whole database.
95
109
  *
96
- * @example
110
+ * ### Examples
111
+ *
97
112
  * ```ts
98
113
  * addCheckConstraint('check_legs', 'number_of_legs < 5')
99
114
  * ```
@@ -105,7 +120,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
105
120
  * The constraint name can be anything you want, but it must be unique
106
121
  * across the whole database.
107
122
  *
108
- * @example
123
+ * ### Examples
124
+ *
109
125
  * ```ts
110
126
  * addForeignKeyConstraint(
111
127
  * 'owner_id_foreign',
@@ -115,7 +131,8 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
115
131
  * )
116
132
  * ```
117
133
  *
118
- * @example
134
+ * Add constraintfor multiple columns:
135
+ *
119
136
  * ```ts
120
137
  * addForeignKeyConstraint(
121
138
  * 'owner_id_foreign',
@@ -22,6 +22,33 @@ class CreateTableBuilder {
22
22
  constructor(props) {
23
23
  this.#props = (0, object_utils_js_1.freeze)(props);
24
24
  }
25
+ /**
26
+ * Adds the "temporary" modifier.
27
+ *
28
+ * Use this to create a temporary table.
29
+ */
30
+ temporary() {
31
+ return new CreateTableBuilder({
32
+ ...this.#props,
33
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWith(this.#props.createTableNode, {
34
+ temporary: true,
35
+ }),
36
+ });
37
+ }
38
+ /**
39
+ * Adds an "on commit" statement.
40
+ *
41
+ * This can be used in conjunction with temporary tables on supported databases
42
+ * like PostgreSQL.
43
+ */
44
+ onCommit(onCommit) {
45
+ return new CreateTableBuilder({
46
+ ...this.#props,
47
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWith(this.#props.createTableNode, {
48
+ onCommit,
49
+ }),
50
+ });
51
+ }
25
52
  /**
26
53
  * Adds the "if not exists" modifier.
27
54
  *
@@ -30,13 +57,16 @@ class CreateTableBuilder {
30
57
  ifNotExists() {
31
58
  return new CreateTableBuilder({
32
59
  ...this.#props,
33
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithIfNotExists(this.#props.createTableNode, true),
60
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWith(this.#props.createTableNode, {
61
+ ifNotExists: true,
62
+ }),
34
63
  });
35
64
  }
36
65
  /**
37
66
  * Adds a column to the table.
38
67
  *
39
- * @example
68
+ * ### Examples
69
+ *
40
70
  * ```ts
41
71
  * await db.schema
42
72
  * .createTable('person')
@@ -56,7 +86,6 @@ class CreateTableBuilder {
56
86
  * foreign key constraints need to be defined in at the level of the `create table`
57
87
  * query. See the next example:
58
88
  *
59
- * @example
60
89
  * ```ts
61
90
  * .addColumn('parent_id', 'integer')
62
91
  * .addForeignKeyConstraint(
@@ -69,7 +98,6 @@ class CreateTableBuilder {
69
98
  * keyword and you need to define an autoincrementing column for example using
70
99
  * `serial`:
71
100
  *
72
- * @example
73
101
  * ```ts
74
102
  * await db.schema
75
103
  * .createTable('person')
@@ -89,7 +117,8 @@ class CreateTableBuilder {
89
117
  * The constraint name can be anything you want, but it must be unique
90
118
  * across the whole database.
91
119
  *
92
- * @example
120
+ * ### Examples
121
+ *
93
122
  * ```ts
94
123
  * addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])
95
124
  * ```
@@ -106,7 +135,8 @@ class CreateTableBuilder {
106
135
  * The constraint name can be anything you want, but it must be unique
107
136
  * across the whole database.
108
137
  *
109
- * @example
138
+ * ### Examples
139
+ *
110
140
  * ```ts
111
141
  * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
112
142
  * ```
@@ -123,7 +153,8 @@ class CreateTableBuilder {
123
153
  * The constraint name can be anything you want, but it must be unique
124
154
  * across the whole database.
125
155
  *
126
- * @example
156
+ * ### Examples
157
+ *
127
158
  * ```ts
128
159
  * addCheckConstraint('check_legs', 'number_of_legs < 5')
129
160
  * ```
@@ -140,7 +171,8 @@ class CreateTableBuilder {
140
171
  * The constraint name can be anything you want, but it must be unique
141
172
  * across the whole database.
142
173
  *
143
- * @example
174
+ * ### Examples
175
+ *
144
176
  * ```ts
145
177
  * addForeignKeyConstraint(
146
178
  * 'owner_id_foreign',
@@ -150,7 +182,8 @@ class CreateTableBuilder {
150
182
  * )
151
183
  * ```
152
184
  *
153
- * @example
185
+ * Add constraintfor multiple columns:
186
+ *
154
187
  * ```ts
155
188
  * addForeignKeyConstraint(
156
189
  * 'owner_id_foreign',
@@ -4,11 +4,16 @@ import { Compilable } from '../util/compilable.js';
4
4
  import { QueryExecutor } from '../query-executor/query-executor.js';
5
5
  import { QueryId } from '../util/query-id.js';
6
6
  import { CreateViewNode } from '../operation-node/create-view-node.js';
7
- import { AnyQueryBuilder } from '../index.js';
8
- import { AnyRawBuilder } from '../util/type-utils.js';
7
+ import { AnyRawBuilder, AnySelectQueryBuilder } from '../util/type-utils.js';
9
8
  export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
10
9
  #private;
11
10
  constructor(props: CreateViewBuilderProps);
11
+ /**
12
+ * Adds the "temporary" modifier.
13
+ *
14
+ * Use this to create a temporary view.
15
+ */
16
+ temporary(): CreateViewBuilder;
12
17
  materialized(): CreateViewBuilder;
13
18
  /**
14
19
  * Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.
@@ -16,7 +21,16 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
16
21
  ifNotExists(): CreateViewBuilder;
17
22
  orReplace(): CreateViewBuilder;
18
23
  columns(columns: string[]): CreateViewBuilder;
19
- as(query: AnyQueryBuilder | AnyRawBuilder): CreateViewBuilder;
24
+ /**
25
+ * Sets the select query or a `values` statement that creates the view.
26
+ *
27
+ * WARNING!
28
+ * Some dialects don't support parameterized queries in DDL statements and therefore
29
+ * the query or `raw` expression passed here is interpolated into a single string
30
+ * opening an SQL injection vulnerability. DO NOT pass unchecked user input into
31
+ * the query or `raw` expression passed to this method!
32
+ */
33
+ as(query: AnySelectQueryBuilder | AnyRawBuilder): CreateViewBuilder;
20
34
  toOperationNode(): CreateViewNode;
21
35
  compile(): CompiledQuery;
22
36
  execute(): Promise<void>;
@@ -5,22 +5,23 @@ const prevent_await_js_1 = require("../util/prevent-await.js");
5
5
  const object_utils_js_1 = require("../util/object-utils.js");
6
6
  const create_view_node_js_1 = require("../operation-node/create-view-node.js");
7
7
  const reference_parser_js_1 = require("../parser/reference-parser.js");
8
- const index_js_1 = require("../index.js");
9
8
  const immediate_value_plugin_js_1 = require("../plugin/immediate-value.ts/immediate-value-plugin.js");
10
9
  class CreateViewBuilder {
11
10
  #props;
12
11
  constructor(props) {
13
- this.#props = (0, object_utils_js_1.freeze)({
14
- ...props,
15
- // The select statement (defined using the `as` method) can't have parameters on some
16
- // dialects. We add the `ImmediateValuePlugin` to make all parameters "immediate"
17
- // meaning they are interpolated into the SQL instead of added as parameters.
18
- //
19
- // The values are therefore not escaped at all, which leads to SQL injection
20
- // vulnerabilities if user input is passed into the query. However, the use
21
- // case where user input is passed into a `create view` statement is a weird
22
- // one, and we can pretty safely just ignore it.
23
- executor: props.executor.withPlugin(new immediate_value_plugin_js_1.ImmediateValuePlugin()),
12
+ this.#props = (0, object_utils_js_1.freeze)(props);
13
+ }
14
+ /**
15
+ * Adds the "temporary" modifier.
16
+ *
17
+ * Use this to create a temporary view.
18
+ */
19
+ temporary() {
20
+ return new CreateViewBuilder({
21
+ ...this.#props,
22
+ createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
23
+ temporary: true,
24
+ }),
24
25
  });
25
26
  }
26
27
  materialized() {
@@ -58,11 +59,19 @@ class CreateViewBuilder {
58
59
  }),
59
60
  });
60
61
  }
62
+ /**
63
+ * Sets the select query or a `values` statement that creates the view.
64
+ *
65
+ * WARNING!
66
+ * Some dialects don't support parameterized queries in DDL statements and therefore
67
+ * the query or `raw` expression passed here is interpolated into a single string
68
+ * opening an SQL injection vulnerability. DO NOT pass unchecked user input into
69
+ * the query or `raw` expression passed to this method!
70
+ */
61
71
  as(query) {
62
- const queryNode = query.toOperationNode();
63
- if (index_js_1.QueryNode.isMutating(queryNode)) {
64
- throw new Error('only select statements are allowd in views');
65
- }
72
+ const queryNode = query
73
+ .withPlugin(new immediate_value_plugin_js_1.ImmediateValuePlugin())
74
+ .toOperationNode();
66
75
  return new CreateViewBuilder({
67
76
  ...this.#props,
68
77
  createViewNode: create_view_node_js_1.CreateViewNode.cloneWith(this.#props.createViewNode, {
@@ -17,7 +17,8 @@ export declare class SchemaModule {
17
17
  /**
18
18
  * Create a new table.
19
19
  *
20
- * @example
20
+ * ### Examples
21
+ *
21
22
  * This example creates a new table with columns `id`, `first_name`,
22
23
  * `last_name` and `gender`:
23
24
  *
@@ -31,7 +32,6 @@ export declare class SchemaModule {
31
32
  * .execute()
32
33
  * ```
33
34
  *
34
- * @example
35
35
  * This example creates a table with a foreign key. Not all database
36
36
  * engines support column-level foreign key constraint definitions.
37
37
  * For example if you are using MySQL 5.X see the next example after
@@ -48,7 +48,6 @@ export declare class SchemaModule {
48
48
  * .execute()
49
49
  * ```
50
50
  *
51
- * @example
52
51
  * This example adds a foreign key constraint for a columns just
53
52
  * like the previous example, but using a table-level statement.
54
53
  * On MySQL 5.X you need to define foreign key constraints like
@@ -70,7 +69,8 @@ export declare class SchemaModule {
70
69
  /**
71
70
  * Drop a table.
72
71
  *
73
- * @example
72
+ * ### Examples
73
+ *
74
74
  * ```ts
75
75
  * await db.schema
76
76
  * .dropTable('person')
@@ -81,7 +81,8 @@ export declare class SchemaModule {
81
81
  /**
82
82
  * Create a new index.
83
83
  *
84
- * @example
84
+ * ### Examples
85
+ *
85
86
  * ```ts
86
87
  * await db.schema
87
88
  * .createIndex('person_full_name_unique_index')
@@ -94,7 +95,8 @@ export declare class SchemaModule {
94
95
  /**
95
96
  * Drop an index.
96
97
  *
97
- * @example
98
+ * ### Examples
99
+ *
98
100
  * ```ts
99
101
  * await db.schema
100
102
  * .dropIndex('person_full_name_unique_index')
@@ -105,7 +107,8 @@ export declare class SchemaModule {
105
107
  /**
106
108
  * Create a new schema.
107
109
  *
108
- * @example
110
+ * ### Examples
111
+ *
109
112
  * ```ts
110
113
  * await db.schema
111
114
  * .createSchema('some_schema')
@@ -116,7 +119,8 @@ export declare class SchemaModule {
116
119
  /**
117
120
  * Drop a schema.
118
121
  *
119
- * @example
122
+ * ### Examples
123
+ *
120
124
  * ```ts
121
125
  * await db.schema
122
126
  * .dropSchema('some_schema')
@@ -127,7 +131,8 @@ export declare class SchemaModule {
127
131
  /**
128
132
  * Alter a table.
129
133
  *
130
- * @example
134
+ * ### Examples
135
+ *
131
136
  * ```ts
132
137
  * await db.schema
133
138
  * .alterTable('person')
@@ -140,7 +145,8 @@ export declare class SchemaModule {
140
145
  /**
141
146
  * Create a new view.
142
147
  *
143
- * @example
148
+ * ### Examples
149
+ *
144
150
  * ```ts
145
151
  * await db.schema
146
152
  * .createView('dogs')
@@ -153,7 +159,8 @@ export declare class SchemaModule {
153
159
  /**
154
160
  * Drop a view.
155
161
  *
156
- * @example
162
+ * ### Examples
163
+ *
157
164
  * ```ts
158
165
  * await db.schema
159
166
  * .dropView('dogs')
@@ -33,7 +33,8 @@ class SchemaModule {
33
33
  /**
34
34
  * Create a new table.
35
35
  *
36
- * @example
36
+ * ### Examples
37
+ *
37
38
  * This example creates a new table with columns `id`, `first_name`,
38
39
  * `last_name` and `gender`:
39
40
  *
@@ -47,7 +48,6 @@ class SchemaModule {
47
48
  * .execute()
48
49
  * ```
49
50
  *
50
- * @example
51
51
  * This example creates a table with a foreign key. Not all database
52
52
  * engines support column-level foreign key constraint definitions.
53
53
  * For example if you are using MySQL 5.X see the next example after
@@ -64,7 +64,6 @@ class SchemaModule {
64
64
  * .execute()
65
65
  * ```
66
66
  *
67
- * @example
68
67
  * This example adds a foreign key constraint for a columns just
69
68
  * like the previous example, but using a table-level statement.
70
69
  * On MySQL 5.X you need to define foreign key constraints like
@@ -92,7 +91,8 @@ class SchemaModule {
92
91
  /**
93
92
  * Drop a table.
94
93
  *
95
- * @example
94
+ * ### Examples
95
+ *
96
96
  * ```ts
97
97
  * await db.schema
98
98
  * .dropTable('person')
@@ -109,7 +109,8 @@ class SchemaModule {
109
109
  /**
110
110
  * Create a new index.
111
111
  *
112
- * @example
112
+ * ### Examples
113
+ *
113
114
  * ```ts
114
115
  * await db.schema
115
116
  * .createIndex('person_full_name_unique_index')
@@ -128,7 +129,8 @@ class SchemaModule {
128
129
  /**
129
130
  * Drop an index.
130
131
  *
131
- * @example
132
+ * ### Examples
133
+ *
132
134
  * ```ts
133
135
  * await db.schema
134
136
  * .dropIndex('person_full_name_unique_index')
@@ -145,7 +147,8 @@ class SchemaModule {
145
147
  /**
146
148
  * Create a new schema.
147
149
  *
148
- * @example
150
+ * ### Examples
151
+ *
149
152
  * ```ts
150
153
  * await db.schema
151
154
  * .createSchema('some_schema')
@@ -162,7 +165,8 @@ class SchemaModule {
162
165
  /**
163
166
  * Drop a schema.
164
167
  *
165
- * @example
168
+ * ### Examples
169
+ *
166
170
  * ```ts
167
171
  * await db.schema
168
172
  * .dropSchema('some_schema')
@@ -179,7 +183,8 @@ class SchemaModule {
179
183
  /**
180
184
  * Alter a table.
181
185
  *
182
- * @example
186
+ * ### Examples
187
+ *
183
188
  * ```ts
184
189
  * await db.schema
185
190
  * .alterTable('person')
@@ -198,7 +203,8 @@ class SchemaModule {
198
203
  /**
199
204
  * Create a new view.
200
205
  *
201
- * @example
206
+ * ### Examples
207
+ *
202
208
  * ```ts
203
209
  * await db.schema
204
210
  * .createView('dogs')
@@ -217,7 +223,8 @@ class SchemaModule {
217
223
  /**
218
224
  * Drop a view.
219
225
  *
220
- * @example
226
+ * ### Examples
227
+ *
221
228
  * ```ts
222
229
  * await db.schema
223
230
  * .dropView('dogs')
@@ -1,4 +1,4 @@
1
- import { CompiledQuery } from '../index.js';
1
+ import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
2
  import { ArrayItemType } from './type-utils.js';
3
3
  export declare const LOG_LEVELS: readonly ["query", "error"];
4
4
  export declare type LogLevel = ArrayItemType<typeof LOG_LEVELS>;
@@ -12,7 +12,8 @@ export interface ErrorLogEvent {
12
12
  readonly error: unknown;
13
13
  }
14
14
  export declare type LogEvent = QueryLogEvent | ErrorLogEvent;
15
- export declare type LogConfig = ReadonlyArray<LogLevel> | ((event: LogEvent) => void);
15
+ export declare type Logger = (event: LogEvent) => void;
16
+ export declare type LogConfig = ReadonlyArray<LogLevel> | Logger;
16
17
  export declare class Log {
17
18
  #private;
18
19
  constructor(config: LogConfig);
@@ -15,6 +15,7 @@ class Log {
15
15
  });
16
16
  }
17
17
  else {
18
+ this.#logger = defaultLogger;
18
19
  this.#levels = (0, object_utils_js_1.freeze)({
19
20
  query: config.includes('query'),
20
21
  error: config.includes('error'),
@@ -23,29 +24,22 @@ class Log {
23
24
  }
24
25
  query(getEvent) {
25
26
  if (this.#levels.query) {
26
- if (this.#logger) {
27
- this.#logger(getEvent());
28
- }
29
- else {
30
- this.#defaultQuery(getEvent());
31
- }
27
+ this.#logger(getEvent());
32
28
  }
33
29
  }
34
30
  error(getEvent) {
35
31
  if (this.#levels.error) {
36
- if (this.#logger) {
37
- this.#logger(getEvent());
38
- }
39
- else {
40
- this.#defaultError(getEvent());
41
- }
32
+ this.#logger(getEvent());
42
33
  }
43
34
  }
44
- #defaultQuery(event) {
35
+ }
36
+ exports.Log = Log;
37
+ function defaultLogger(event) {
38
+ if (event.level === 'query') {
45
39
  console.log(`kysely:query: ${event.query.sql}`);
46
40
  console.log(`kysely:query: duration: ${event.queryDurationMillis.toFixed(1)}ms`);
47
41
  }
48
- #defaultError(event) {
42
+ else if (event.level === 'error') {
49
43
  if (event.error instanceof Error) {
50
44
  console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);
51
45
  }
@@ -54,4 +48,3 @@ class Log {
54
48
  }
55
49
  }
56
50
  }
57
- exports.Log = Log;
@@ -1,5 +1,5 @@
1
1
  import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
2
- import { AliasedQueryBuilder, QueryBuilder } from '../query-builder/query-builder.js';
2
+ import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
3
3
  import { ExpressionBuilder } from '../query-builder/expression-builder.js';
4
4
  import { InsertResult } from '../query-builder/insert-result.js';
5
5
  import { DeleteResult } from '../query-builder/delete-result.js';
@@ -41,7 +41,7 @@ export declare type ValueType<T> = T[keyof T];
41
41
  */
42
42
  export declare type RowType<DB, TB extends keyof DB> = UnionToIntersection<DB[TB]>;
43
43
  /**
44
- * Evil typescript magic to convert a union type `A | B | C` into an
44
+ * Evil typescript magic to convert a union type `A | B | C` into an
45
45
  * intersection type `A & B & C`.
46
46
  */
47
47
  declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -73,12 +73,12 @@ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e
73
73
  *
74
74
  * type Columns = AnyColumn<Database, 'person' | 'pet'>
75
75
  *
76
- * // Columns == 'id' | 'name' | 'species'
76
+ * // Columns == 'id' | 'name' | 'species'
77
77
  * ```
78
78
  */
79
79
  export declare type AnyColumn<DB, TB extends keyof DB> = {
80
80
  [T in TB]: keyof DB[T];
81
- }[TB];
81
+ }[TB] & string;
82
82
  /**
83
83
  * Given a database type and a union of table names in that db, returns
84
84
  * a union type with all possible `table`.`column` combinations.
@@ -107,7 +107,7 @@ export declare type AnyColumn<DB, TB extends keyof DB> = {
107
107
  *
108
108
  * type Columns = AnyColumn<Database, 'person' | 'pet'>
109
109
  *
110
- * // Columns == 'person.id' | 'pet.name' | 'pet.species'
110
+ * // Columns == 'person.id' | 'pet.name' | 'pet.species'
111
111
  * ```
112
112
  */
113
113
  export declare type AnyColumnWithTable<DB, TB extends keyof DB> = {
@@ -129,11 +129,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
129
129
  * Extracts the item type of an array.
130
130
  */
131
131
  export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
132
- export declare type AnyQueryBuilder = QueryBuilder<any, any, any>;
132
+ export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
133
133
  export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
134
134
  export declare type AnyRawBuilder = RawBuilder<any>;
135
135
  export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
136
- export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => QueryBuilder<any, any, any>;
136
+ export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
137
137
  export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
138
138
  export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
139
139
  export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
@@ -7,8 +7,44 @@ import { DialectAdapter } from './dialect-adapter.js';
7
7
  * they are added and there will be less breaking changes.
8
8
  */
9
9
  export declare abstract class DialectAdapterBase implements DialectAdapter {
10
+ /**
11
+ * Whether or not this dialect supports transactional DDL.
12
+ *
13
+ * If this is true, migrations are executed inside a transaction.
14
+ */
10
15
  get supportsTransactionalDdl(): boolean;
16
+ /**
17
+ * Whether or not this dialect supports the `returning` in inserts
18
+ * updates and deletes.
19
+ */
11
20
  get supportsReturning(): boolean;
21
+ /**
22
+ * This method is used to acquire a lock for the migrations so that
23
+ * it's not possible for two migration processes to run in parallel.
24
+ *
25
+ * Most dialects have explicit locks that can be used, like advisory locks
26
+ * in PostgreSQL and the get_lock function in MySQL.
27
+ *
28
+ * If the dialect doesn't have explicit locks the {@link MIGRATION_LOCK_TABLE}
29
+ * created by Kysely can be used instead. {@link MIGRATION_LOCK_TABLE}
30
+ * has two columns `id` and `is_locked` and there's only one row in the
31
+ * table whose id is {@link MIGRATION_LOCK_ID}. `is_locked` is an integer.
32
+ * Kysely takes care of creating the lock table and inserting the one single
33
+ * row to it before this method is executed.
34
+ *
35
+ * If `supportsTransactionalDdl` is `true` then the `db` passed to this method
36
+ * is a transaction inside which the migrations will be executed. Otherwise
37
+ * `db` is a single connection (session) that will be used to execute the
38
+ * migrations.
39
+ */
12
40
  abstract acquireMigrationLock(db: Kysely<any>): Promise<void>;
41
+ /**
42
+ * Releases the migration lock. See {@link acquireMigrationLock}.
43
+ *
44
+ * If `supportsTransactionalDdl` is `true` then the `db` passed to this method
45
+ * is a transaction inside which the migrations were executed. Otherwise `db`
46
+ * is a single connection (session) that was used to execute the migrations
47
+ * and the `acquireMigrationLock` call.
48
+ */
13
49
  abstract releaseMigrationLock(db: Kysely<any>): Promise<void>;
14
50
  }