kysely 0.9.8 → 0.11.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 (220) hide show
  1. package/README.md +22 -16
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
  3. package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
  5. package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
  6. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
  7. package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
  8. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
  9. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
  10. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
  14. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
  15. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +31 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
  17. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
  18. package/dist/cjs/driver/database-connection.d.ts +2 -2
  19. package/dist/cjs/driver/runtime-driver.js +3 -4
  20. package/dist/cjs/index.d.ts +10 -0
  21. package/dist/cjs/index.js +10 -0
  22. package/dist/cjs/kysely.d.ts +6 -4
  23. package/dist/cjs/kysely.js +6 -4
  24. package/dist/cjs/migration/migration.d.ts +1 -1
  25. package/dist/cjs/migration/migration.js +3 -3
  26. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
  27. package/dist/cjs/operation-node/column-definition-node.js +4 -4
  28. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
  29. package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
  30. package/dist/cjs/operation-node/create-table-node.js +2 -2
  31. package/dist/cjs/operation-node/create-view-node.d.ts +23 -0
  32. package/dist/cjs/operation-node/create-view-node.js +25 -0
  33. package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
  34. package/dist/cjs/operation-node/default-value-node.js +18 -0
  35. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
  36. package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
  37. package/dist/cjs/operation-node/drop-schema-node.js +3 -3
  38. package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
  39. package/dist/cjs/operation-node/drop-table-node.js +2 -2
  40. package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
  41. package/dist/cjs/operation-node/drop-view-node.js +25 -0
  42. package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
  43. package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
  44. package/dist/cjs/operation-node/having-node.d.ts +4 -8
  45. package/dist/cjs/operation-node/having-node.js +3 -3
  46. package/dist/cjs/operation-node/join-node.d.ts +6 -9
  47. package/dist/cjs/operation-node/join-node.js +10 -7
  48. package/dist/cjs/operation-node/on-node.d.ts +14 -0
  49. package/dist/cjs/operation-node/on-node.js +28 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
  51. package/dist/cjs/operation-node/operation-node-transformer.js +55 -11
  52. package/dist/cjs/operation-node/operation-node-visitor.d.ts +11 -0
  53. package/dist/cjs/operation-node/operation-node-visitor.js +11 -2
  54. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  55. package/dist/cjs/operation-node/query-node.d.ts +3 -3
  56. package/dist/cjs/operation-node/raw-node.d.ts +1 -1
  57. package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
  58. package/dist/cjs/operation-node/select-query-node.js +1 -1
  59. package/dist/cjs/operation-node/where-node.d.ts +4 -8
  60. package/dist/cjs/operation-node/where-node.js +3 -3
  61. package/dist/cjs/parser/filter-parser.js +1 -1
  62. package/dist/cjs/parser/returning-parser.d.ts +4 -2
  63. package/dist/cjs/parser/select-parser.d.ts +2 -2
  64. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  65. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
  66. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  67. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
  68. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  69. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
  70. package/dist/cjs/query-builder/delete-result.d.ts +5 -0
  71. package/dist/cjs/query-builder/delete-result.js +13 -0
  72. package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
  73. package/dist/cjs/query-builder/expression-builder.js +1 -1
  74. package/dist/cjs/query-builder/function-builder.d.ts +5 -5
  75. package/dist/cjs/query-builder/function-builder.js +3 -3
  76. package/dist/cjs/query-builder/insert-result.d.ts +27 -0
  77. package/dist/cjs/query-builder/insert-result.js +35 -0
  78. package/dist/cjs/query-builder/query-builder.d.ts +91 -81
  79. package/dist/cjs/query-builder/query-builder.js +38 -41
  80. package/dist/cjs/query-builder/update-result.d.ts +5 -0
  81. package/dist/cjs/query-builder/update-result.js +13 -0
  82. package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
  83. package/dist/cjs/query-compiler/compiled-query.js +12 -0
  84. package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
  85. package/dist/cjs/query-compiler/default-query-compiler.js +82 -23
  86. package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
  87. package/dist/cjs/query-creator.d.ts +36 -26
  88. package/dist/cjs/query-creator.js +25 -17
  89. package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
  90. package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
  91. package/dist/cjs/schema/alter-table-builder.js +28 -4
  92. package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
  93. package/dist/cjs/schema/column-definition-builder.js +23 -6
  94. package/dist/cjs/schema/create-schema-builder.js +1 -1
  95. package/dist/cjs/schema/create-table-builder.d.ts +7 -8
  96. package/dist/cjs/schema/create-table-builder.js +8 -9
  97. package/dist/cjs/schema/create-view-builder.d.ts +28 -0
  98. package/dist/cjs/schema/create-view-builder.js +84 -0
  99. package/dist/cjs/schema/drop-index-builder.js +1 -1
  100. package/dist/cjs/schema/drop-schema-builder.js +3 -1
  101. package/dist/cjs/schema/drop-table-builder.js +3 -1
  102. package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
  103. package/dist/cjs/schema/drop-view-builder.js +39 -0
  104. package/dist/cjs/schema/schema.d.ts +30 -3
  105. package/dist/cjs/schema/schema.js +44 -3
  106. package/dist/cjs/util/dynamic-import.d.ts +2 -0
  107. package/dist/cjs/util/dynamic-import.js +32 -0
  108. package/dist/cjs/util/performance-now.d.ts +1 -0
  109. package/dist/cjs/util/performance-now.js +13 -0
  110. package/dist/cjs/util/type-utils.d.ts +4 -15
  111. package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
  112. package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
  113. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
  114. package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
  115. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
  116. package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
  117. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
  118. package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
  119. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
  120. package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
  121. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
  122. package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
  123. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
  124. package/dist/esm/dialect/sqlite/sqlite-introspector.js +27 -0
  125. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
  126. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
  127. package/dist/esm/driver/database-connection.d.ts +2 -2
  128. package/dist/esm/driver/runtime-driver.js +3 -4
  129. package/dist/esm/index.d.ts +10 -0
  130. package/dist/esm/index.js +10 -0
  131. package/dist/esm/kysely.d.ts +6 -4
  132. package/dist/esm/kysely.js +6 -4
  133. package/dist/esm/migration/migration.d.ts +1 -1
  134. package/dist/esm/migration/migration.js +3 -3
  135. package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
  136. package/dist/esm/operation-node/column-definition-node.js +4 -4
  137. package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
  138. package/dist/esm/operation-node/create-table-node.d.ts +2 -3
  139. package/dist/esm/operation-node/create-table-node.js +2 -2
  140. package/dist/esm/operation-node/create-view-node.d.ts +23 -0
  141. package/dist/esm/operation-node/create-view-node.js +22 -0
  142. package/dist/esm/operation-node/default-value-node.d.ts +14 -0
  143. package/dist/esm/operation-node/default-value-node.js +15 -0
  144. package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
  145. package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
  146. package/dist/esm/operation-node/drop-schema-node.js +3 -3
  147. package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
  148. package/dist/esm/operation-node/drop-table-node.js +2 -2
  149. package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
  150. package/dist/esm/operation-node/drop-view-node.js +22 -0
  151. package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
  152. package/dist/esm/operation-node/generated-always-as-node.js +22 -0
  153. package/dist/esm/operation-node/having-node.d.ts +4 -8
  154. package/dist/esm/operation-node/having-node.js +3 -3
  155. package/dist/esm/operation-node/join-node.d.ts +6 -9
  156. package/dist/esm/operation-node/join-node.js +10 -7
  157. package/dist/esm/operation-node/on-node.d.ts +14 -0
  158. package/dist/esm/operation-node/on-node.js +25 -0
  159. package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
  160. package/dist/esm/operation-node/operation-node-transformer.js +55 -11
  161. package/dist/esm/operation-node/operation-node-visitor.d.ts +11 -0
  162. package/dist/esm/operation-node/operation-node-visitor.js +11 -2
  163. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  164. package/dist/esm/operation-node/query-node.d.ts +3 -3
  165. package/dist/esm/operation-node/raw-node.d.ts +1 -1
  166. package/dist/esm/operation-node/select-query-node.d.ts +5 -5
  167. package/dist/esm/operation-node/select-query-node.js +1 -1
  168. package/dist/esm/operation-node/where-node.d.ts +4 -8
  169. package/dist/esm/operation-node/where-node.js +3 -3
  170. package/dist/esm/parser/filter-parser.js +1 -1
  171. package/dist/esm/parser/returning-parser.d.ts +4 -2
  172. package/dist/esm/parser/select-parser.d.ts +2 -2
  173. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  174. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
  175. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  176. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
  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 +6 -0
  179. package/dist/esm/query-builder/delete-result.d.ts +5 -0
  180. package/dist/esm/query-builder/delete-result.js +9 -0
  181. package/dist/esm/query-builder/expression-builder.d.ts +2 -2
  182. package/dist/esm/query-builder/expression-builder.js +1 -1
  183. package/dist/esm/query-builder/function-builder.d.ts +5 -5
  184. package/dist/esm/query-builder/function-builder.js +3 -3
  185. package/dist/esm/query-builder/insert-result.d.ts +27 -0
  186. package/dist/esm/query-builder/insert-result.js +31 -0
  187. package/dist/esm/query-builder/query-builder.d.ts +91 -81
  188. package/dist/esm/query-builder/query-builder.js +38 -41
  189. package/dist/esm/query-builder/update-result.d.ts +5 -0
  190. package/dist/esm/query-builder/update-result.js +9 -0
  191. package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
  192. package/dist/esm/query-compiler/compiled-query.js +11 -1
  193. package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
  194. package/dist/esm/query-compiler/default-query-compiler.js +82 -23
  195. package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
  196. package/dist/esm/query-creator.d.ts +36 -26
  197. package/dist/esm/query-creator.js +25 -17
  198. package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
  199. package/dist/esm/schema/alter-table-builder.d.ts +6 -2
  200. package/dist/esm/schema/alter-table-builder.js +28 -4
  201. package/dist/esm/schema/column-definition-builder.d.ts +43 -2
  202. package/dist/esm/schema/column-definition-builder.js +23 -6
  203. package/dist/esm/schema/create-schema-builder.js +1 -1
  204. package/dist/esm/schema/create-table-builder.d.ts +7 -8
  205. package/dist/esm/schema/create-table-builder.js +8 -9
  206. package/dist/esm/schema/create-view-builder.d.ts +28 -0
  207. package/dist/esm/schema/create-view-builder.js +80 -0
  208. package/dist/esm/schema/drop-index-builder.js +1 -1
  209. package/dist/esm/schema/drop-schema-builder.js +3 -1
  210. package/dist/esm/schema/drop-table-builder.js +3 -1
  211. package/dist/esm/schema/drop-view-builder.d.ts +20 -0
  212. package/dist/esm/schema/drop-view-builder.js +35 -0
  213. package/dist/esm/schema/schema.d.ts +30 -3
  214. package/dist/esm/schema/schema.js +44 -3
  215. package/dist/esm/util/dynamic-import.d.ts +2 -0
  216. package/dist/esm/util/dynamic-import.js +27 -0
  217. package/dist/esm/util/performance-now.d.ts +1 -0
  218. package/dist/esm/util/performance-now.js +9 -0
  219. package/dist/esm/util/type-utils.d.ts +4 -15
  220. package/package.json +5 -3
@@ -19,10 +19,10 @@ export const CreateTableNode = freeze({
19
19
  columns: freeze([...createTable.columns, column]),
20
20
  });
21
21
  },
22
- cloneWithModifier(createTable, modifier) {
22
+ cloneWithIfNotExists(createTable, ifNotExists) {
23
23
  return freeze({
24
24
  ...createTable,
25
- modifier,
25
+ ifNotExists,
26
26
  });
27
27
  },
28
28
  cloneWithConstraint(createTable, constraint) {
@@ -0,0 +1,23 @@
1
+ import { ColumnNode } from './column-node.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ import { OperationNode } from './operation-node.js';
4
+ import { RawNode } from './raw-node.js';
5
+ import { SelectQueryNode } from './select-query-node.js';
6
+ export declare type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
7
+ export interface CreateViewNode extends OperationNode {
8
+ readonly kind: 'CreateViewNode';
9
+ readonly name: IdentifierNode;
10
+ readonly materialized?: boolean;
11
+ readonly orReplace?: boolean;
12
+ readonly ifNotExists?: boolean;
13
+ readonly columns?: ReadonlyArray<ColumnNode>;
14
+ readonly as?: SelectQueryNode | RawNode;
15
+ }
16
+ /**
17
+ * @internal
18
+ */
19
+ export declare const CreateViewNode: Readonly<{
20
+ is(node: OperationNode): node is CreateViewNode;
21
+ create(name: string): CreateViewNode;
22
+ cloneWith(createView: CreateViewNode, params: CreateViewNodeParams): CreateViewNode;
23
+ }>;
@@ -0,0 +1,22 @@
1
+ import { freeze } from '../util/object-utils.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const CreateViewNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'CreateViewNode';
9
+ },
10
+ create(name) {
11
+ return freeze({
12
+ kind: 'CreateViewNode',
13
+ name: IdentifierNode.create(name),
14
+ });
15
+ },
16
+ cloneWith(createView, params) {
17
+ return freeze({
18
+ ...createView,
19
+ ...params,
20
+ });
21
+ },
22
+ });
@@ -0,0 +1,14 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { RawNode } from './raw-node.js';
3
+ import { ValueNode } from './value-node.js';
4
+ export interface DefaultValueNode extends OperationNode {
5
+ readonly kind: 'DefaultValueNode';
6
+ readonly defaultValue: ValueNode | RawNode;
7
+ }
8
+ /**
9
+ * @internal
10
+ */
11
+ export declare const DefaultValueNode: Readonly<{
12
+ is(node: OperationNode): node is DefaultValueNode;
13
+ create(defaultValue: ValueNode | RawNode): DefaultValueNode;
14
+ }>;
@@ -0,0 +1,15 @@
1
+ import { freeze } from '../util/object-utils.js';
2
+ /**
3
+ * @internal
4
+ */
5
+ export const DefaultValueNode = freeze({
6
+ is(node) {
7
+ return node.kind === 'DefaultValueNode';
8
+ },
9
+ create(defaultValue) {
10
+ return freeze({
11
+ kind: 'DefaultValueNode',
12
+ defaultValue,
13
+ });
14
+ },
15
+ });
@@ -2,12 +2,11 @@ import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
3
  import { TableNode } from './table-node.js';
4
4
  export declare type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
5
- export declare type DropIndexNodeModifier = 'IfExists';
6
5
  export interface DropIndexNode extends OperationNode {
7
6
  readonly kind: 'DropIndexNode';
8
7
  readonly name: IdentifierNode;
9
8
  readonly table?: TableNode;
10
- readonly modifier?: DropIndexNodeModifier;
9
+ readonly ifExists?: boolean;
11
10
  }
12
11
  /**
13
12
  * @internal
@@ -1,11 +1,10 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type DropSchemaNodeModifier = 'IfExists';
4
3
  export declare type DropSchemaNodeParams = Omit<Partial<DropSchemaNode>, 'kind' | 'schema'>;
5
4
  export interface DropSchemaNode extends OperationNode {
6
5
  readonly kind: 'DropSchemaNode';
7
6
  readonly schema: IdentifierNode;
8
- readonly modifier?: DropSchemaNodeModifier;
7
+ readonly ifExists?: boolean;
9
8
  }
10
9
  /**
11
10
  * @internal
@@ -13,5 +12,5 @@ export interface DropSchemaNode extends OperationNode {
13
12
  export declare const DropSchemaNode: Readonly<{
14
13
  is(node: OperationNode): node is DropSchemaNode;
15
14
  create(schema: string, params?: DropSchemaNodeParams | undefined): DropSchemaNode;
16
- cloneWithModifier(createSchema: DropSchemaNode, modifier: DropSchemaNodeModifier): DropSchemaNode;
15
+ cloneWith(dropSchema: DropSchemaNode, params: DropSchemaNodeParams): DropSchemaNode;
17
16
  }>;
@@ -14,10 +14,10 @@ export const DropSchemaNode = freeze({
14
14
  ...params,
15
15
  });
16
16
  },
17
- cloneWithModifier(createSchema, modifier) {
17
+ cloneWith(dropSchema, params) {
18
18
  return freeze({
19
- ...createSchema,
20
- modifier,
19
+ ...dropSchema,
20
+ ...params,
21
21
  });
22
22
  },
23
23
  });
@@ -1,11 +1,10 @@
1
1
  import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
3
  export declare type DropTablexNodeParams = Omit<Partial<DropTableNode>, 'kind' | 'table'>;
4
- export declare type DropTableNodeModifier = 'IfExists';
5
4
  export interface DropTableNode extends OperationNode {
6
5
  readonly kind: 'DropTableNode';
7
6
  readonly table: TableNode;
8
- readonly modifier?: DropTableNodeModifier;
7
+ readonly ifExists?: boolean;
9
8
  }
10
9
  /**
11
10
  * @internal
@@ -13,5 +12,5 @@ export interface DropTableNode extends OperationNode {
13
12
  export declare const DropTableNode: Readonly<{
14
13
  is(node: OperationNode): node is DropTableNode;
15
14
  create(table: TableNode, params?: DropTablexNodeParams | undefined): DropTableNode;
16
- cloneWithModifier(dropIndex: DropTableNode, modifier: DropTableNodeModifier): DropTableNode;
15
+ cloneWith(dropIndex: DropTableNode, params: DropTablexNodeParams): DropTableNode;
17
16
  }>;
@@ -13,10 +13,10 @@ export const DropTableNode = freeze({
13
13
  ...params,
14
14
  });
15
15
  },
16
- cloneWithModifier(dropIndex, modifier) {
16
+ cloneWith(dropIndex, params) {
17
17
  return freeze({
18
18
  ...dropIndex,
19
- modifier,
19
+ ...params,
20
20
  });
21
21
  },
22
22
  });
@@ -0,0 +1,17 @@
1
+ import { IdentifierNode } from './identifier-node.js';
2
+ import { OperationNode } from './operation-node.js';
3
+ export declare type DropViewNodeParams = Omit<Partial<DropViewNode>, 'kind' | 'name'>;
4
+ export interface DropViewNode extends OperationNode {
5
+ readonly kind: 'DropViewNode';
6
+ readonly name: IdentifierNode;
7
+ readonly ifExists?: boolean;
8
+ readonly materialized?: boolean;
9
+ }
10
+ /**
11
+ * @internal
12
+ */
13
+ export declare const DropViewNode: Readonly<{
14
+ is(node: OperationNode): node is DropViewNode;
15
+ create(name: string): DropViewNode;
16
+ cloneWith(dropView: DropViewNode, params: DropViewNodeParams): DropViewNode;
17
+ }>;
@@ -0,0 +1,22 @@
1
+ import { freeze } from '../util/object-utils.js';
2
+ import { IdentifierNode } from './identifier-node.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const DropViewNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'DropViewNode';
9
+ },
10
+ create(name) {
11
+ return freeze({
12
+ kind: 'DropViewNode',
13
+ name: IdentifierNode.create(name),
14
+ });
15
+ },
16
+ cloneWith(dropView, params) {
17
+ return freeze({
18
+ ...dropView,
19
+ ...params,
20
+ });
21
+ },
22
+ });
@@ -0,0 +1,16 @@
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
+ }>;
@@ -0,0 +1,22 @@
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,18 +1,14 @@
1
- import { AndNode } from './and-node.js';
2
- import { FilterNode } from './filter-node.js';
1
+ import { FilterExpressionNode } from './operation-node-utils.js';
3
2
  import { OperationNode } from './operation-node.js';
4
- import { OrNode } from './or-node.js';
5
- import { ParensNode } from './parens-node.js';
6
- export declare type HavingNodeChild = FilterNode | AndNode | OrNode | ParensNode;
7
3
  export interface HavingNode extends OperationNode {
8
4
  readonly kind: 'HavingNode';
9
- readonly having: HavingNodeChild;
5
+ readonly having: FilterExpressionNode;
10
6
  }
11
7
  /**
12
8
  * @internal
13
9
  */
14
10
  export declare const HavingNode: Readonly<{
15
11
  is(node: OperationNode): node is HavingNode;
16
- create(filter: HavingNodeChild): HavingNode;
17
- cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or', having: HavingNodeChild): HavingNode;
12
+ create(filter: FilterExpressionNode): HavingNode;
13
+ cloneWithFilter(havingNode: HavingNode, op: 'And' | 'Or', filter: FilterExpressionNode): HavingNode;
18
14
  }>;
@@ -14,12 +14,12 @@ export const HavingNode = freeze({
14
14
  having: filter,
15
15
  });
16
16
  },
17
- cloneWithFilter(havingNode, op, having) {
17
+ cloneWithFilter(havingNode, op, filter) {
18
18
  return freeze({
19
19
  ...havingNode,
20
20
  having: op === 'And'
21
- ? AndNode.create(havingNode.having, having)
22
- : OrNode.create(havingNode.having, having),
21
+ ? AndNode.create(havingNode.having, filter)
22
+ : OrNode.create(havingNode.having, filter),
23
23
  });
24
24
  },
25
25
  });
@@ -1,18 +1,15 @@
1
1
  import { AliasNode } from './alias-node.js';
2
- import { AndNode } from './and-node.js';
3
- import { FilterNode } from './filter-node.js';
2
+ import { OnNode } from './on-node.js';
3
+ import { FilterExpressionNode } from './operation-node-utils.js';
4
4
  import { OperationNode } from './operation-node.js';
5
- import { OrNode } from './or-node.js';
6
- import { ParensNode } from './parens-node.js';
7
5
  import { TableNode } from './table-node.js';
8
6
  export declare type JoinTableNode = TableNode | AliasNode;
9
7
  export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin';
10
- export declare type JoinNodeOnNode = FilterNode | AndNode | OrNode | ParensNode;
11
8
  export interface JoinNode extends OperationNode {
12
9
  readonly kind: 'JoinNode';
13
10
  readonly joinType: JoinType;
14
11
  readonly table: JoinTableNode;
15
- readonly on?: JoinNodeOnNode;
12
+ readonly on?: OnNode;
16
13
  }
17
14
  /**
18
15
  * @internal
@@ -20,7 +17,7 @@ export interface JoinNode extends OperationNode {
20
17
  export declare const JoinNode: Readonly<{
21
18
  is(node: OperationNode): node is JoinNode;
22
19
  create(joinType: JoinType, table: JoinTableNode): JoinNode;
23
- createWithOn(joinType: JoinType, table: JoinTableNode, on: JoinNodeOnNode): JoinNode;
24
- cloneWithOn(joinNode: JoinNode, on: JoinNodeOnNode): JoinNode;
25
- cloneWithOrOn(joinNode: JoinNode, on: JoinNodeOnNode): JoinNode;
20
+ createWithOn(joinType: JoinType, table: JoinTableNode, on: FilterExpressionNode): JoinNode;
21
+ cloneWithOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
22
+ cloneWithOrOn(joinNode: JoinNode, filter: FilterExpressionNode): JoinNode;
26
23
  }>;
@@ -1,6 +1,5 @@
1
1
  import { freeze } from '../util/object-utils.js';
2
- import { AndNode } from './and-node.js';
3
- import { OrNode } from './or-node.js';
2
+ import { OnNode } from './on-node.js';
4
3
  /**
5
4
  * @internal
6
5
  */
@@ -21,19 +20,23 @@ export const JoinNode = freeze({
21
20
  kind: 'JoinNode',
22
21
  joinType,
23
22
  table,
24
- on,
23
+ on: OnNode.create(on),
25
24
  });
26
25
  },
27
- cloneWithOn(joinNode, on) {
26
+ cloneWithOn(joinNode, filter) {
28
27
  return freeze({
29
28
  ...joinNode,
30
- on: joinNode.on ? AndNode.create(joinNode.on, on) : on,
29
+ on: joinNode.on
30
+ ? OnNode.cloneWithFilter(joinNode.on, 'And', filter)
31
+ : OnNode.create(filter),
31
32
  });
32
33
  },
33
- cloneWithOrOn(joinNode, on) {
34
+ cloneWithOrOn(joinNode, filter) {
34
35
  return freeze({
35
36
  ...joinNode,
36
- on: joinNode.on ? OrNode.create(joinNode.on, on) : on,
37
+ on: joinNode.on
38
+ ? OnNode.cloneWithFilter(joinNode.on, 'Or', filter)
39
+ : OnNode.create(filter),
37
40
  });
38
41
  },
39
42
  });
@@ -0,0 +1,14 @@
1
+ import { FilterExpressionNode } from './operation-node-utils.js';
2
+ import { OperationNode } from './operation-node.js';
3
+ export interface OnNode extends OperationNode {
4
+ readonly kind: 'OnNode';
5
+ readonly on: FilterExpressionNode;
6
+ }
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const OnNode: Readonly<{
11
+ is(node: OperationNode): node is OnNode;
12
+ create(filter: FilterExpressionNode): OnNode;
13
+ cloneWithFilter(onNode: OnNode, op: 'And' | 'Or', filter: FilterExpressionNode): OnNode;
14
+ }>;
@@ -0,0 +1,25 @@
1
+ import { freeze } from '../util/object-utils.js';
2
+ import { AndNode } from './and-node.js';
3
+ import { OrNode } from './or-node.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export const OnNode = freeze({
8
+ is(node) {
9
+ return node.kind === 'OnNode';
10
+ },
11
+ create(filter) {
12
+ return freeze({
13
+ kind: 'OnNode',
14
+ on: filter,
15
+ });
16
+ },
17
+ cloneWithFilter(onNode, op, filter) {
18
+ return freeze({
19
+ ...onNode,
20
+ on: op === 'And'
21
+ ? AndNode.create(onNode.on, filter)
22
+ : OrNode.create(onNode.on, filter),
23
+ });
24
+ },
25
+ });
@@ -58,6 +58,11 @@ import { ColumnDefinitionNode } from './column-definition-node.js';
58
58
  import { ModifyColumnNode } from './modify-column-node.js';
59
59
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
60
60
  import { UnionNode } from './union-node.js';
61
+ import { CreateViewNode } from './create-view-node.js';
62
+ import { DropViewNode } from './drop-view-node.js';
63
+ import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
64
+ import { DefaultValueNode } from './default-value-node.js';
65
+ import { OnNode } from './on-node.js';
61
66
  /**
62
67
  * Transforms an operation node tree into another one.
63
68
  *
@@ -145,6 +150,11 @@ export declare class OperationNodeTransformer {
145
150
  protected transformModifyColumn(node: ModifyColumnNode): ModifyColumnNode;
146
151
  protected transformAddConstraint(node: AddConstraintNode): AddConstraintNode;
147
152
  protected transformDropConstraint(node: DropConstraintNode): DropConstraintNode;
153
+ protected transformCreateView(node: CreateViewNode): CreateViewNode;
154
+ protected transformDropView(node: DropViewNode): DropViewNode;
155
+ protected transformGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): GeneratedAlwaysAsNode;
156
+ protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
157
+ protected transformOn(node: OnNode): OnNode;
148
158
  protected transformDataType(node: DataTypeNode): DataTypeNode;
149
159
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
150
160
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -30,7 +30,7 @@ import { freeze } from '../util/object-utils.js';
30
30
  */
31
31
  export class OperationNodeTransformer {
32
32
  nodeStack = [];
33
- #transformers = {
33
+ #transformers = freeze({
34
34
  AliasNode: this.transformAlias.bind(this),
35
35
  ColumnNode: this.transformColumn.bind(this),
36
36
  IdentifierNode: this.transformIdentifier.bind(this),
@@ -90,7 +90,12 @@ export class OperationNodeTransformer {
90
90
  DropConstraintNode: this.transformDropConstraint.bind(this),
91
91
  ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
92
92
  UnionNode: this.transformUnion.bind(this),
93
- };
93
+ CreateViewNode: this.transformCreateView.bind(this),
94
+ DropViewNode: this.transformDropView.bind(this),
95
+ GeneratedAlwaysAsNode: this.transformGeneratedAlwaysAs.bind(this),
96
+ DefaultValueNode: this.transformDefaultValue.bind(this),
97
+ OnNode: this.transformOn.bind(this),
98
+ });
94
99
  transformNode = (node) => {
95
100
  if (!node) {
96
101
  return undefined;
@@ -112,7 +117,7 @@ export class OperationNodeTransformer {
112
117
  from: this.transformNode(node.from),
113
118
  selections: this.transformNodeList(node.selections),
114
119
  distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
115
- isDistinct: node.isDistinct,
120
+ distinct: node.distinct,
116
121
  joins: this.transformNodeList(node.joins),
117
122
  groupBy: this.transformNode(node.groupBy),
118
123
  orderBy: this.transformNode(node.orderBy),
@@ -254,7 +259,7 @@ export class OperationNodeTransformer {
254
259
  table: this.transformNode(node.table),
255
260
  columns: this.transformNodeList(node.columns),
256
261
  constraints: this.transformNodeList(node.constraints),
257
- modifier: node.modifier,
262
+ ifNotExists: node.ifNotExists,
258
263
  };
259
264
  }
260
265
  transformColumnDefinition(node) {
@@ -263,12 +268,13 @@ export class OperationNodeTransformer {
263
268
  column: this.transformNode(node.column),
264
269
  dataType: this.transformNode(node.dataType),
265
270
  references: this.transformNode(node.references),
266
- isPrimaryKey: node.isPrimaryKey,
267
- isAutoIncrementing: node.isAutoIncrementing,
268
- isUnique: node.isUnique,
269
- isNullable: node.isNullable,
271
+ primaryKey: node.primaryKey,
272
+ autoIncrement: node.autoIncrement,
273
+ unique: node.unique,
274
+ nullable: node.nullable,
270
275
  defaultTo: this.transformNode(node.defaultTo),
271
276
  check: this.transformNode(node.check),
277
+ generatedAlwaysAs: this.transformNode(node.generatedAlwaysAs),
272
278
  };
273
279
  }
274
280
  transformAddColumn(node) {
@@ -281,7 +287,7 @@ export class OperationNodeTransformer {
281
287
  return {
282
288
  kind: 'DropTableNode',
283
289
  table: this.transformNode(node.table),
284
- modifier: node.modifier,
290
+ ifExists: node.ifExists,
285
291
  };
286
292
  }
287
293
  transformOrderBy(node) {
@@ -375,7 +381,7 @@ export class OperationNodeTransformer {
375
381
  kind: 'DropIndexNode',
376
382
  name: this.transformNode(node.name),
377
383
  table: this.transformNode(node.table),
378
- modifier: node.modifier,
384
+ ifExists: node.ifExists,
379
385
  };
380
386
  }
381
387
  transformPrimaryKeyConstraint(node) {
@@ -454,7 +460,7 @@ export class OperationNodeTransformer {
454
460
  return {
455
461
  kind: 'DropSchemaNode',
456
462
  schema: this.transformNode(node.schema),
457
- modifier: node.modifier,
463
+ ifExists: node.ifExists,
458
464
  };
459
465
  }
460
466
  transformAlterTable(node) {
@@ -515,6 +521,44 @@ export class OperationNodeTransformer {
515
521
  constraintName: this.transformNode(node.constraintName),
516
522
  };
517
523
  }
524
+ transformCreateView(node) {
525
+ return {
526
+ kind: 'CreateViewNode',
527
+ name: this.transformNode(node.name),
528
+ orReplace: node.orReplace,
529
+ ifNotExists: node.ifNotExists,
530
+ materialized: node.materialized,
531
+ columns: this.transformNodeList(node.columns),
532
+ as: this.transformNode(node.as),
533
+ };
534
+ }
535
+ transformDropView(node) {
536
+ return {
537
+ kind: 'DropViewNode',
538
+ name: this.transformNode(node.name),
539
+ ifExists: node.ifExists,
540
+ materialized: node.materialized,
541
+ };
542
+ }
543
+ transformGeneratedAlwaysAs(node) {
544
+ return {
545
+ kind: 'GeneratedAlwaysAsNode',
546
+ expression: this.transformNode(node.expression),
547
+ stored: node.stored,
548
+ };
549
+ }
550
+ transformDefaultValue(node) {
551
+ return {
552
+ kind: 'DefaultValueNode',
553
+ defaultValue: this.transformNode(node.defaultValue),
554
+ };
555
+ }
556
+ transformOn(node) {
557
+ return {
558
+ kind: 'OnNode',
559
+ on: this.transformNode(node.on),
560
+ };
561
+ }
518
562
  transformDataType(node) {
519
563
  // An Object.freezed leaf node. No need to clone.
520
564
  return node;
@@ -58,9 +58,15 @@ import { ColumnDefinitionNode } from './column-definition-node.js';
58
58
  import { ModifyColumnNode } from './modify-column-node.js';
59
59
  import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
60
60
  import { UnionNode } from './union-node.js';
61
+ import { CreateViewNode } from './create-view-node.js';
62
+ import { DropViewNode } from './drop-view-node.js';
63
+ import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
64
+ import { DefaultValueNode } from './default-value-node.js';
65
+ import { OnNode } from './on-node.js';
61
66
  export declare abstract class OperationNodeVisitor {
62
67
  #private;
63
68
  protected readonly nodeStack: OperationNode[];
69
+ protected get parentNode(): OperationNode | undefined;
64
70
  protected readonly visitNode: (node: OperationNode) => void;
65
71
  protected abstract visitSelectQuery(node: SelectQueryNode): void;
66
72
  protected abstract visitSelection(node: SelectionNode): void;
@@ -121,4 +127,9 @@ export declare abstract class OperationNodeVisitor {
121
127
  protected abstract visitValue(_: ValueNode): void;
122
128
  protected abstract visitPrimitiveValueList(_: PrimitiveValueListNode): void;
123
129
  protected abstract visitOperator(node: OperatorNode): void;
130
+ protected abstract visitCreateView(node: CreateViewNode): void;
131
+ protected abstract visitDropView(node: DropViewNode): void;
132
+ protected abstract visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
133
+ protected abstract visitDefaultValue(node: DefaultValueNode): void;
134
+ protected abstract visitOn(node: OnNode): void;
124
135
  }
@@ -1,6 +1,10 @@
1
+ import { freeze } from '../util/object-utils.js';
1
2
  export class OperationNodeVisitor {
2
3
  nodeStack = [];
3
- #visitors = {
4
+ get parentNode() {
5
+ return this.nodeStack[this.nodeStack.length - 2];
6
+ }
7
+ #visitors = freeze({
4
8
  AliasNode: this.visitAlias.bind(this),
5
9
  ColumnNode: this.visitColumn.bind(this),
6
10
  IdentifierNode: this.visitIdentifier.bind(this),
@@ -60,7 +64,12 @@ export class OperationNodeVisitor {
60
64
  DropConstraintNode: this.visitDropConstraint.bind(this),
61
65
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
62
66
  UnionNode: this.visitUnion.bind(this),
63
- };
67
+ CreateViewNode: this.visitCreateView.bind(this),
68
+ DropViewNode: this.visitDropView.bind(this),
69
+ GeneratedAlwaysAsNode: this.visitGeneratedAlwaysAs.bind(this),
70
+ DefaultValueNode: this.visitDefaultValue.bind(this),
71
+ OnNode: this.visitOn.bind(this),
72
+ });
64
73
  visitNode = (node) => {
65
74
  this.nodeStack.push(node);
66
75
  this.#visitors[node.kind](node);
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedAlwaysAsNode' | 'DefaultValueNode' | 'OnNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }