kysely 0.9.7 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +15 -13
  2. package/dist/cjs/driver/runtime-driver.js +3 -4
  3. package/dist/cjs/index.d.ts +2 -0
  4. package/dist/cjs/index.js +2 -0
  5. package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
  6. package/dist/cjs/operation-node/column-definition-node.js +4 -4
  7. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
  8. package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
  9. package/dist/cjs/operation-node/create-table-node.js +2 -2
  10. package/dist/cjs/operation-node/create-view-node.d.ts +22 -0
  11. package/dist/cjs/operation-node/create-view-node.js +25 -0
  12. package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
  13. package/dist/cjs/operation-node/default-value-node.js +18 -0
  14. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
  15. package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
  16. package/dist/cjs/operation-node/drop-schema-node.js +3 -3
  17. package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
  18. package/dist/cjs/operation-node/drop-table-node.js +2 -2
  19. package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
  20. package/dist/cjs/operation-node/drop-view-node.js +25 -0
  21. package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
  22. package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
  23. package/dist/cjs/operation-node/operation-node-transformer.d.ts +8 -0
  24. package/dist/cjs/operation-node/operation-node-transformer.js +47 -11
  25. package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -0
  26. package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
  27. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/operator-node.d.ts +1 -1
  29. package/dist/cjs/operation-node/operator-node.js +5 -0
  30. package/dist/cjs/operation-node/raw-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
  32. package/dist/cjs/operation-node/select-query-node.js +1 -1
  33. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  34. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
  35. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  36. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
  37. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  38. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
  39. package/dist/cjs/query-compiler/default-query-compiler.d.ts +8 -0
  40. package/dist/cjs/query-compiler/default-query-compiler.js +59 -11
  41. package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
  42. package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
  43. package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
  44. package/dist/cjs/schema/alter-table-builder.js +28 -4
  45. package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
  46. package/dist/cjs/schema/column-definition-builder.js +23 -6
  47. package/dist/cjs/schema/create-schema-builder.js +1 -1
  48. package/dist/cjs/schema/create-table-builder.d.ts +7 -8
  49. package/dist/cjs/schema/create-table-builder.js +8 -9
  50. package/dist/cjs/schema/create-view-builder.d.ts +24 -0
  51. package/dist/cjs/schema/create-view-builder.js +73 -0
  52. package/dist/cjs/schema/drop-index-builder.js +1 -1
  53. package/dist/cjs/schema/drop-schema-builder.js +3 -1
  54. package/dist/cjs/schema/drop-table-builder.js +3 -1
  55. package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
  56. package/dist/cjs/schema/drop-view-builder.js +39 -0
  57. package/dist/cjs/schema/schema.d.ts +30 -3
  58. package/dist/cjs/schema/schema.js +44 -3
  59. package/dist/cjs/util/performance-now.d.ts +1 -0
  60. package/dist/cjs/util/performance-now.js +13 -0
  61. package/dist/esm/driver/runtime-driver.js +3 -4
  62. package/dist/esm/index.d.ts +2 -0
  63. package/dist/esm/index.js +2 -0
  64. package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
  65. package/dist/esm/operation-node/column-definition-node.js +4 -4
  66. package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
  67. package/dist/esm/operation-node/create-table-node.d.ts +2 -3
  68. package/dist/esm/operation-node/create-table-node.js +2 -2
  69. package/dist/esm/operation-node/create-view-node.d.ts +22 -0
  70. package/dist/esm/operation-node/create-view-node.js +22 -0
  71. package/dist/esm/operation-node/default-value-node.d.ts +14 -0
  72. package/dist/esm/operation-node/default-value-node.js +15 -0
  73. package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
  74. package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
  75. package/dist/esm/operation-node/drop-schema-node.js +3 -3
  76. package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
  77. package/dist/esm/operation-node/drop-table-node.js +2 -2
  78. package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
  79. package/dist/esm/operation-node/drop-view-node.js +22 -0
  80. package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
  81. package/dist/esm/operation-node/generated-always-as-node.js +22 -0
  82. package/dist/esm/operation-node/operation-node-transformer.d.ts +8 -0
  83. package/dist/esm/operation-node/operation-node-transformer.js +47 -11
  84. package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -0
  85. package/dist/esm/operation-node/operation-node-visitor.js +7 -2
  86. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  87. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  88. package/dist/esm/operation-node/operator-node.js +5 -0
  89. package/dist/esm/operation-node/raw-node.d.ts +1 -1
  90. package/dist/esm/operation-node/select-query-node.d.ts +1 -1
  91. package/dist/esm/operation-node/select-query-node.js +1 -1
  92. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  93. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
  94. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  95. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
  96. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  97. package/dist/esm/plugin/with-schema/with-schema-transformer.js +6 -0
  98. package/dist/esm/query-compiler/default-query-compiler.d.ts +8 -0
  99. package/dist/esm/query-compiler/default-query-compiler.js +59 -11
  100. package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
  101. package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
  102. package/dist/esm/schema/alter-table-builder.d.ts +6 -2
  103. package/dist/esm/schema/alter-table-builder.js +28 -4
  104. package/dist/esm/schema/column-definition-builder.d.ts +43 -2
  105. package/dist/esm/schema/column-definition-builder.js +23 -6
  106. package/dist/esm/schema/create-schema-builder.js +1 -1
  107. package/dist/esm/schema/create-table-builder.d.ts +7 -8
  108. package/dist/esm/schema/create-table-builder.js +8 -9
  109. package/dist/esm/schema/create-view-builder.d.ts +24 -0
  110. package/dist/esm/schema/create-view-builder.js +69 -0
  111. package/dist/esm/schema/drop-index-builder.js +1 -1
  112. package/dist/esm/schema/drop-schema-builder.js +3 -1
  113. package/dist/esm/schema/drop-table-builder.js +3 -1
  114. package/dist/esm/schema/drop-view-builder.d.ts +20 -0
  115. package/dist/esm/schema/drop-view-builder.js +35 -0
  116. package/dist/esm/schema/schema.d.ts +30 -3
  117. package/dist/esm/schema/schema.js +44 -3
  118. package/dist/esm/util/performance-now.d.ts +1 -0
  119. package/dist/esm/util/performance-now.js +9 -0
  120. package/package.json +3 -3
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OperationNodeVisitor = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
4
5
  class OperationNodeVisitor {
5
6
  nodeStack = [];
6
- #visitors = {
7
+ #visitors = (0, object_utils_js_1.freeze)({
7
8
  AliasNode: this.visitAlias.bind(this),
8
9
  ColumnNode: this.visitColumn.bind(this),
9
10
  IdentifierNode: this.visitIdentifier.bind(this),
@@ -63,7 +64,11 @@ class OperationNodeVisitor {
63
64
  DropConstraintNode: this.visitDropConstraint.bind(this),
64
65
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
65
66
  UnionNode: this.visitUnion.bind(this),
66
- };
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
+ });
67
72
  visitNode = (node) => {
68
73
  this.nodeStack.push(node);
69
74
  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';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,6 +1,6 @@
1
1
  import { ArrayItemType } from '../util/type-utils.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "exists", "not exists", "&&"];
3
+ export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "exists", "not exists", "&&", "||", "@@", "@@@", "!!", "<->"];
4
4
  export declare type Operator = ArrayItemType<typeof OPERATORS>;
5
5
  export interface OperatorNode extends OperationNode {
6
6
  readonly kind: 'OperatorNode';
@@ -34,6 +34,11 @@ exports.OPERATORS = [
34
34
  'exists',
35
35
  'not exists',
36
36
  '&&',
37
+ '||',
38
+ '@@',
39
+ '@@@',
40
+ '!!',
41
+ '<->',
37
42
  ];
38
43
  /**
39
44
  * @internal
@@ -9,6 +9,6 @@ export interface RawNode extends OperationNode {
9
9
  */
10
10
  export declare const RawNode: Readonly<{
11
11
  is(node: OperationNode): node is RawNode;
12
- create(sqlFragments: string[], params: ReadonlyArray<OperationNode>): RawNode;
12
+ create(sqlFragments: ReadonlyArray<string>, params: ReadonlyArray<OperationNode>): RawNode;
13
13
  createWithSql(sql: string): RawNode;
14
14
  }>;
@@ -19,7 +19,7 @@ export interface SelectQueryNode extends OperationNode {
19
19
  readonly from: FromNode;
20
20
  readonly selections?: ReadonlyArray<SelectionNode>;
21
21
  readonly distinctOnSelections?: ReadonlyArray<SelectionNode>;
22
- readonly isDistinct?: boolean;
22
+ readonly distinct?: boolean;
23
23
  readonly joins?: ReadonlyArray<JoinNode>;
24
24
  readonly groupBy?: GroupByNode;
25
25
  readonly orderBy?: OrderByNode;
@@ -91,7 +91,7 @@ exports.SelectQueryNode = (0, object_utils_js_1.freeze)({
91
91
  cloneWithDistinct(selectNode) {
92
92
  return (0, object_utils_js_1.freeze)({
93
93
  ...selectNode,
94
- isDistinct: true,
94
+ distinct: true,
95
95
  });
96
96
  },
97
97
  cloneWithUnion(selectNode, union) {
@@ -0,0 +1,17 @@
1
+ import { QueryResult } from '../../driver/database-connection.js';
2
+ import { UnknownRow } from '../../index.js';
3
+ import { RootOperationNode } from '../../query-compiler/query-compiler.js';
4
+ import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
5
+ /**
6
+ * Transforms all ValueNodes to immediate.
7
+ *
8
+ * WARNING! This should never be part of the public API. Users should never use this.
9
+ * This is an internal helper.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare class ImmediateValuePlugin implements KyselyPlugin {
14
+ #private;
15
+ transformQuery(args: PluginTransformQueryArgs): RootOperationNode;
16
+ transformResult(args: PluginTransformResultArgs): Promise<QueryResult<UnknownRow>>;
17
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImmediateValuePlugin = void 0;
4
+ const immediate_value_transformer_js_1 = require("./immediate-value-transformer.js");
5
+ /**
6
+ * Transforms all ValueNodes to immediate.
7
+ *
8
+ * WARNING! This should never be part of the public API. Users should never use this.
9
+ * This is an internal helper.
10
+ *
11
+ * @internal
12
+ */
13
+ class ImmediateValuePlugin {
14
+ #transformer = new immediate_value_transformer_js_1.ImmediateValueTransformer();
15
+ transformQuery(args) {
16
+ return this.#transformer.transformNode(args.node);
17
+ }
18
+ async transformResult(args) {
19
+ return args.result;
20
+ }
21
+ }
22
+ exports.ImmediateValuePlugin = ImmediateValuePlugin;
@@ -0,0 +1,13 @@
1
+ import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
2
+ import { ValueNode } from '../../operation-node/value-node.js';
3
+ /**
4
+ * Transforms all ValueNodes to immediate.
5
+ *
6
+ * WARNING! This should never be part of the public API. Users should never use this.
7
+ * This is an internal helper.
8
+ *
9
+ * @internal
10
+ */
11
+ export declare class ImmediateValueTransformer extends OperationNodeTransformer {
12
+ transformValue(node: ValueNode): ValueNode;
13
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImmediateValueTransformer = void 0;
4
+ const operation_node_transformer_js_1 = require("../../operation-node/operation-node-transformer.js");
5
+ /**
6
+ * Transforms all ValueNodes to immediate.
7
+ *
8
+ * WARNING! This should never be part of the public API. Users should never use this.
9
+ * This is an internal helper.
10
+ *
11
+ * @internal
12
+ */
13
+ class ImmediateValueTransformer extends operation_node_transformer_js_1.OperationNodeTransformer {
14
+ transformValue(node) {
15
+ return {
16
+ ...super.transformValue(node),
17
+ immediate: true,
18
+ };
19
+ }
20
+ }
21
+ exports.ImmediateValueTransformer = ImmediateValueTransformer;
@@ -1,9 +1,11 @@
1
1
  import { AlterTableNode } from '../../operation-node/alter-table-node.js';
2
2
  import { CreateIndexNode } from '../../operation-node/create-index-node.js';
3
3
  import { CreateTableNode } from '../../operation-node/create-table-node.js';
4
+ import { CreateViewNode } from '../../operation-node/create-view-node.js';
4
5
  import { DeleteQueryNode } from '../../operation-node/delete-query-node.js';
5
6
  import { DropIndexNode } from '../../operation-node/drop-index-node.js';
6
7
  import { DropTableNode } from '../../operation-node/drop-table-node.js';
8
+ import { DropViewNode } from '../../operation-node/drop-view-node.js';
7
9
  import { InsertQueryNode } from '../../operation-node/insert-query-node.js';
8
10
  import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
9
11
  import { SelectQueryNode } from '../../operation-node/select-query-node.js';
@@ -20,6 +22,8 @@ export declare class WithSchemaTransformer extends OperationNodeTransformer {
20
22
  protected transformDropTable(node: DropTableNode): DropTableNode;
21
23
  protected transformCreateIndex(node: CreateIndexNode): CreateIndexNode;
22
24
  protected transformDropIndex(node: DropIndexNode): DropIndexNode;
25
+ protected transformCreateView(node: CreateViewNode): CreateViewNode;
26
+ protected transformDropView(node: DropViewNode): DropViewNode;
23
27
  protected transformAlterTable(node: AlterTableNode): AlterTableNode;
24
28
  protected transformTable(node: TableNode): TableNode;
25
29
  }
@@ -35,6 +35,12 @@ class WithSchemaTransformer extends operation_node_transformer_js_1.OperationNod
35
35
  transformDropIndex(node) {
36
36
  return this.#transformRoot(node, (node) => super.transformDropIndex(node));
37
37
  }
38
+ transformCreateView(node) {
39
+ return this.#transformRoot(node, (node) => super.transformCreateView(node));
40
+ }
41
+ transformDropView(node) {
42
+ return this.#transformRoot(node, (node) => super.transformDropView(node));
43
+ }
38
44
  transformAlterTable(node) {
39
45
  return this.#transformRoot(node, (node) => super.transformAlterTable(node));
40
46
  }
@@ -62,6 +62,10 @@ import { ModifyColumnNode } from '../operation-node/modify-column-node.js';
62
62
  import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
63
63
  import { ColumnNode } from '../operation-node/column-node.js';
64
64
  import { UnionNode } from '../operation-node/union-node.js';
65
+ import { CreateViewNode } from '../operation-node/create-view-node.js';
66
+ import { DropViewNode } from '../operation-node/drop-view-node.js';
67
+ import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
68
+ import { DefaultValueNode } from '../operation-node/default-value-node.js';
65
69
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
66
70
  #private;
67
71
  protected get numParameters(): number;
@@ -130,6 +134,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
130
134
  protected visitAddConstraint(node: AddConstraintNode): void;
131
135
  protected visitDropConstraint(node: DropConstraintNode): void;
132
136
  protected visitUnion(node: UnionNode): void;
137
+ protected visitCreateView(node: CreateViewNode): void;
138
+ protected visitDropView(node: DropViewNode): void;
139
+ protected visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
140
+ protected visitDefaultValue(node: DefaultValueNode): void;
133
141
  protected append(str: string): void;
134
142
  protected appendValue(parameter: unknown): void;
135
143
  protected getLeftIdentifierWrapper(): string;
@@ -38,7 +38,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
38
38
  this.compileDistinctOn(node.distinctOnSelections);
39
39
  this.append(' ');
40
40
  }
41
- if (node.isDistinct) {
41
+ if (node.distinct) {
42
42
  this.append('distinct');
43
43
  this.append(' ');
44
44
  }
@@ -290,7 +290,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
290
290
  }
291
291
  visitCreateTable(node) {
292
292
  this.append('create table ');
293
- if (node.modifier === 'IfNotExists') {
293
+ if (node.ifNotExists) {
294
294
  this.append('if not exists ');
295
295
  }
296
296
  this.visitNode(node.table);
@@ -302,21 +302,25 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
302
302
  this.visitNode(node.column);
303
303
  this.append(' ');
304
304
  this.visitNode(node.dataType);
305
+ if (node.generatedAlwaysAs) {
306
+ this.append(' ');
307
+ this.visitNode(node.generatedAlwaysAs);
308
+ }
305
309
  if (node.defaultTo) {
306
- this.append(' default ');
310
+ this.append(' ');
307
311
  this.visitNode(node.defaultTo);
308
312
  }
309
- if (!node.isNullable) {
313
+ if (!node.nullable) {
310
314
  this.append(' not null');
311
315
  }
312
- if (node.isAutoIncrementing) {
316
+ if (node.autoIncrement) {
313
317
  this.append(' ');
314
318
  this.append(this.getAutoIncrement());
315
319
  }
316
- if (node.isUnique) {
320
+ if (node.unique) {
317
321
  this.append(' unique');
318
322
  }
319
- if (node.isPrimaryKey) {
323
+ if (node.primaryKey) {
320
324
  this.append(' primary key');
321
325
  }
322
326
  if (node.references) {
@@ -348,7 +352,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
348
352
  }
349
353
  visitDropTable(node) {
350
354
  this.append('drop table ');
351
- if (node.modifier === 'IfExists') {
355
+ if (node.ifExists) {
352
356
  this.append('if exists ');
353
357
  }
354
358
  this.visitNode(node.table);
@@ -470,7 +474,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
470
474
  }
471
475
  visitDropIndex(node) {
472
476
  this.append('drop index ');
473
- if (node.modifier === 'IfExists') {
477
+ if (node.ifExists) {
474
478
  this.append('if exists ');
475
479
  }
476
480
  this.visitNode(node.name);
@@ -481,14 +485,14 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
481
485
  }
482
486
  visitCreateSchema(node) {
483
487
  this.append('create schema ');
484
- if (node.modifier === 'IfNotExists') {
488
+ if (node.ifNotExists) {
485
489
  this.append('if not exists ');
486
490
  }
487
491
  this.visitNode(node.schema);
488
492
  }
489
493
  visitDropSchema(node) {
490
494
  this.append('drop schema ');
491
- if (node.modifier === 'IfExists') {
495
+ if (node.ifExists) {
492
496
  this.append('if exists ');
493
497
  }
494
498
  this.visitNode(node.schema);
@@ -647,6 +651,50 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
647
651
  }
648
652
  this.visitNode(node.union);
649
653
  }
654
+ visitCreateView(node) {
655
+ this.append('create ');
656
+ if (node.orReplace) {
657
+ this.append('or replace ');
658
+ }
659
+ if (node.materialized) {
660
+ this.append('materialized ');
661
+ }
662
+ this.append('view ');
663
+ this.visitNode(node.name);
664
+ this.append(' ');
665
+ if (node.columns) {
666
+ this.append('(');
667
+ this.compileList(node.columns);
668
+ this.append(') ');
669
+ }
670
+ if (node.as) {
671
+ this.append('as ');
672
+ this.visitNode(node.as);
673
+ }
674
+ }
675
+ visitDropView(node) {
676
+ this.append('drop ');
677
+ if (node.materialized) {
678
+ this.append('materialized ');
679
+ }
680
+ this.append('view ');
681
+ if (node.ifExists) {
682
+ this.append('if exists ');
683
+ }
684
+ this.visitNode(node.name);
685
+ }
686
+ visitGeneratedAlwaysAs(node) {
687
+ this.append('generated always as (');
688
+ this.visitNode(node.expression);
689
+ this.append(')');
690
+ if (node.stored) {
691
+ this.append(' stored');
692
+ }
693
+ }
694
+ visitDefaultValue(node) {
695
+ this.append('default ');
696
+ this.visitNode(node.defaultValue);
697
+ }
650
698
  append(str) {
651
699
  this.#sql += str;
652
700
  }
@@ -2,13 +2,15 @@ import { AlterTableNode } from '../operation-node/alter-table-node.js';
2
2
  import { CreateIndexNode } from '../operation-node/create-index-node.js';
3
3
  import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
4
4
  import { CreateTableNode } from '../operation-node/create-table-node.js';
5
+ import { CreateViewNode } from '../operation-node/create-view-node.js';
5
6
  import { DropIndexNode } from '../operation-node/drop-index-node.js';
6
7
  import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
7
8
  import { DropTableNode } from '../operation-node/drop-table-node.js';
9
+ import { DropViewNode } from '../operation-node/drop-view-node.js';
8
10
  import { QueryNode } from '../operation-node/query-node.js';
9
11
  import { RawNode } from '../operation-node/raw-node.js';
10
12
  import { CompiledQuery } from './compiled-query.js';
11
- export declare type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | AlterTableNode | DropTableNode | DropIndexNode | CreateSchemaNode | DropSchemaNode | RawNode;
13
+ export declare type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode;
12
14
  /**
13
15
  * a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
14
16
  */
@@ -41,5 +41,5 @@ export interface RawBuilderProps {
41
41
  readonly queryId: QueryId;
42
42
  readonly executor: QueryExecutor;
43
43
  readonly sql: string;
44
- readonly parameters?: any;
44
+ readonly parameters?: ReadonlyArray<unknown>;
45
45
  }
@@ -63,7 +63,7 @@ export interface AlterTableExecutorProps extends AlterTableBuilderProps {
63
63
  export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableAddColumnBuilder>, OperationNodeSource, Compilable {
64
64
  #private;
65
65
  constructor(props: AlterTableAddColumnBuilderProps);
66
- increments(): AlterTableAddColumnBuilder;
66
+ autoIncrement(): AlterTableAddColumnBuilder;
67
67
  primaryKey(): AlterTableAddColumnBuilder;
68
68
  references(ref: string): AlterTableAddColumnBuilder;
69
69
  onDelete(onDelete: OnModifyForeignAction): AlterTableAddColumnBuilder;
@@ -72,6 +72,8 @@ export declare class AlterTableAddColumnBuilder implements ColumnDefinitionBuild
72
72
  notNull(): AlterTableAddColumnBuilder;
73
73
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableAddColumnBuilder;
74
74
  check(sql: string): AlterTableAddColumnBuilder;
75
+ generatedAlwaysAs(sql: string): AlterTableAddColumnBuilder;
76
+ stored(): AlterTableAddColumnBuilder;
75
77
  toOperationNode(): AlterTableNode;
76
78
  compile(): CompiledQuery;
77
79
  execute(): Promise<void>;
@@ -82,7 +84,7 @@ export interface AlterTableAddColumnBuilderProps extends AlterTableBuilderProps
82
84
  export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBuilderInterface<AlterTableModifyColumnBuilder>, OperationNodeSource, Compilable {
83
85
  #private;
84
86
  constructor(props: AlterTableModifyColumnBuilderProps);
85
- increments(): AlterTableModifyColumnBuilder;
87
+ autoIncrement(): AlterTableModifyColumnBuilder;
86
88
  primaryKey(): AlterTableModifyColumnBuilder;
87
89
  references(ref: string): AlterTableModifyColumnBuilder;
88
90
  onDelete(onDelete: OnModifyForeignAction): AlterTableModifyColumnBuilder;
@@ -91,6 +93,8 @@ export declare class AlterTableModifyColumnBuilder implements ColumnDefinitionBu
91
93
  notNull(): AlterTableModifyColumnBuilder;
92
94
  defaultTo(value: PrimitiveValue | AnyRawBuilder): AlterTableModifyColumnBuilder;
93
95
  check(sql: string): AlterTableModifyColumnBuilder;
96
+ generatedAlwaysAs(sql: string): AlterTableModifyColumnBuilder;
97
+ stored(): AlterTableModifyColumnBuilder;
94
98
  toOperationNode(): AlterTableNode;
95
99
  compile(): CompiledQuery;
96
100
  execute(): Promise<void>;
@@ -190,10 +190,10 @@ class AlterTableAddColumnBuilder {
190
190
  constructor(props) {
191
191
  this.#props = (0, object_utils_js_1.freeze)(props);
192
192
  }
193
- increments() {
193
+ autoIncrement() {
194
194
  return new AlterTableAddColumnBuilder({
195
195
  ...this.#props,
196
- columnBuilder: this.#props.columnBuilder.increments(),
196
+ columnBuilder: this.#props.columnBuilder.autoIncrement(),
197
197
  });
198
198
  }
199
199
  primaryKey() {
@@ -244,6 +244,18 @@ class AlterTableAddColumnBuilder {
244
244
  columnBuilder: this.#props.columnBuilder.check(sql),
245
245
  });
246
246
  }
247
+ generatedAlwaysAs(sql) {
248
+ return new AlterTableAddColumnBuilder({
249
+ ...this.#props,
250
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
251
+ });
252
+ }
253
+ stored() {
254
+ return new AlterTableAddColumnBuilder({
255
+ ...this.#props,
256
+ columnBuilder: this.#props.columnBuilder.stored(),
257
+ });
258
+ }
247
259
  toOperationNode() {
248
260
  return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
249
261
  addColumn: add_column_node_js_1.AddColumnNode.create(this.#props.columnBuilder.toOperationNode()),
@@ -262,10 +274,10 @@ class AlterTableModifyColumnBuilder {
262
274
  constructor(props) {
263
275
  this.#props = (0, object_utils_js_1.freeze)(props);
264
276
  }
265
- increments() {
277
+ autoIncrement() {
266
278
  return new AlterTableModifyColumnBuilder({
267
279
  ...this.#props,
268
- columnBuilder: this.#props.columnBuilder.increments(),
280
+ columnBuilder: this.#props.columnBuilder.autoIncrement(),
269
281
  });
270
282
  }
271
283
  primaryKey() {
@@ -316,6 +328,18 @@ class AlterTableModifyColumnBuilder {
316
328
  columnBuilder: this.#props.columnBuilder.check(sql),
317
329
  });
318
330
  }
331
+ generatedAlwaysAs(sql) {
332
+ return new AlterTableModifyColumnBuilder({
333
+ ...this.#props,
334
+ columnBuilder: this.#props.columnBuilder.generatedAlwaysAs(sql),
335
+ });
336
+ }
337
+ stored() {
338
+ return new AlterTableModifyColumnBuilder({
339
+ ...this.#props,
340
+ columnBuilder: this.#props.columnBuilder.stored(),
341
+ });
342
+ }
319
343
  toOperationNode() {
320
344
  return this.#props.executor.transformQuery(alter_table_node_js_1.AlterTableNode.cloneWith(this.#props.alterTableNode, {
321
345
  modifyColumn: modify_column_node_js_1.ModifyColumnNode.create(this.#props.columnBuilder.toOperationNode()),
@@ -12,7 +12,7 @@ export interface ColumnDefinitionBuilderInterface<R> {
12
12
  * Some dialects like PostgreSQL don't support this. On PostgreSQL
13
13
  * you can use the `serial` or `bigserial` data type instead.
14
14
  */
15
- increments(): R;
15
+ autoIncrement(): R;
16
16
  /**
17
17
  * Makes the column the primary key.
18
18
  *
@@ -40,10 +40,19 @@ export interface ColumnDefinitionBuilderInterface<R> {
40
40
  * column definition (like MySQL 5) you need to call the table level
41
41
  * {@link TableBuilder.addForeignKeyConstraint} method instead.
42
42
  *
43
+ * @example
44
+ * ```ts
45
+ * col.references('person.id').onDelete('cascade')
46
+ * ```
43
47
  */
44
48
  onDelete(onDelete: OnModifyForeignAction): R;
45
49
  /**
46
50
  * Adds an `on update` constraint for the foreign key column.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * col.references('person.id').onUpdate('cascade')
55
+ * ```
47
56
  */
48
57
  onUpdate(onUpdate: OnModifyForeignAction): R;
49
58
  /**
@@ -78,11 +87,41 @@ export interface ColumnDefinitionBuilderInterface<R> {
78
87
  * ```
79
88
  */
80
89
  check(sql: string): R;
90
+ /**
91
+ * Makes the column a generated column using a `generated always as` statement.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * db.schema
96
+ * .createTable('person')
97
+ * .addColumn('full_name', 'varchar(255)',
98
+ * (col) => col.generatedAlwaysAs("concat(first_name, ' ', last_name)")
99
+ * )
100
+ * .execute()
101
+ * ```
102
+ */
103
+ generatedAlwaysAs(sql: string): R;
104
+ /**
105
+ * Makes a generated column stored instead of virtual. This method can only
106
+ * be used with {@link generatedAlwaysAs}
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * db.schema
111
+ * .createTable('person')
112
+ * .addColumn('full_name', 'varchar(255)', (col) => col
113
+ * .generatedAlwaysAs("concat(first_name, ' ', last_name)")
114
+ * .stored()
115
+ * )
116
+ * .execute()
117
+ * ```
118
+ */
119
+ stored(): R;
81
120
  }
82
121
  export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderInterface<ColumnDefinitionBuilder>, OperationNodeSource {
83
122
  #private;
84
123
  constructor(node: ColumnDefinitionNode);
85
- increments(): ColumnDefinitionBuilder;
124
+ autoIncrement(): ColumnDefinitionBuilder;
86
125
  primaryKey(): ColumnDefinitionBuilder;
87
126
  references(ref: string): ColumnDefinitionBuilder;
88
127
  onDelete(onDelete: OnModifyForeignAction): ColumnDefinitionBuilder;
@@ -91,5 +130,7 @@ export declare class ColumnDefinitionBuilder implements ColumnDefinitionBuilderI
91
130
  notNull(): ColumnDefinitionBuilder;
92
131
  defaultTo(value: DefaultValueExpression): ColumnDefinitionBuilder;
93
132
  check(sql: string): ColumnDefinitionBuilder;
133
+ generatedAlwaysAs(sql: string): ColumnDefinitionBuilder;
134
+ stored(): ColumnDefinitionBuilder;
94
135
  toOperationNode(): ColumnDefinitionNode;
95
136
  }
@@ -9,16 +9,18 @@ const reference_parser_js_1 = require("../parser/reference-parser.js");
9
9
  const prevent_await_js_1 = require("../util/prevent-await.js");
10
10
  const column_definition_node_js_1 = require("../operation-node/column-definition-node.js");
11
11
  const default_value_parser_js_1 = require("../parser/default-value-parser.js");
12
+ const generated_always_as_node_js_1 = require("../operation-node/generated-always-as-node.js");
13
+ const default_value_node_js_1 = require("../operation-node/default-value-node.js");
12
14
  class ColumnDefinitionBuilder {
13
15
  #node;
14
16
  constructor(node) {
15
17
  this.#node = node;
16
18
  }
17
- increments() {
18
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isAutoIncrementing: true }));
19
+ autoIncrement() {
20
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));
19
21
  }
20
22
  primaryKey() {
21
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isPrimaryKey: true }));
23
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));
22
24
  }
23
25
  references(ref) {
24
26
  const references = (0, reference_parser_js_1.parseStringReference)(ref);
@@ -48,14 +50,14 @@ class ColumnDefinitionBuilder {
48
50
  }));
49
51
  }
50
52
  unique() {
51
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isUnique: true }));
53
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));
52
54
  }
53
55
  notNull() {
54
- return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { isNullable: false }));
56
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { nullable: false }));
55
57
  }
56
58
  defaultTo(value) {
57
59
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
58
- defaultTo: (0, default_value_parser_js_1.parseDefaultValueExpression)(value),
60
+ defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
59
61
  }));
60
62
  }
61
63
  check(sql) {
@@ -63,6 +65,21 @@ class ColumnDefinitionBuilder {
63
65
  check: check_constraint_node_js_1.CheckConstraintNode.create(sql),
64
66
  }));
65
67
  }
68
+ generatedAlwaysAs(sql) {
69
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
70
+ generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.create(sql),
71
+ }));
72
+ }
73
+ stored() {
74
+ if (!this.#node.generatedAlwaysAs) {
75
+ throw new Error('stored() can only be called after generatedAlwaysAs');
76
+ }
77
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
78
+ generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
79
+ stored: true,
80
+ }),
81
+ }));
82
+ }
66
83
  toOperationNode() {
67
84
  return this.#node;
68
85
  }
@@ -12,7 +12,7 @@ class CreateSchemaBuilder {
12
12
  ifNotExists() {
13
13
  return new CreateSchemaBuilder({
14
14
  ...this.#props,
15
- createSchemaNode: create_schema_node_js_1.CreateSchemaNode.cloneWith(this.#props.createSchemaNode, { modifier: 'IfNotExists' }),
15
+ createSchemaNode: create_schema_node_js_1.CreateSchemaNode.cloneWith(this.#props.createSchemaNode, { ifNotExists: true }),
16
16
  });
17
17
  }
18
18
  toOperationNode() {