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
package/README.md CHANGED
@@ -67,7 +67,9 @@ import { Kysely, PostgresDialect } from 'kysely'
67
67
  interface Person {
68
68
  id: number
69
69
  first_name: string
70
- last_name: string
70
+ // If the column is nullable in the db, make its type nullable.
71
+ // Don't use optional properties.
72
+ last_name: string | null
71
73
  gender: 'male' | 'female' | 'other'
72
74
  }
73
75
 
@@ -172,9 +174,9 @@ export async function up(db: Kysely<any>): Promise<void> {
172
174
  await db.schema
173
175
  .createTable('person')
174
176
  .addColumn('id', 'serial', (col) => col.primaryKey())
175
- .addColumn('first_name', 'varchar')
177
+ .addColumn('first_name', 'varchar', (col) => col.notNull())
176
178
  .addColumn('last_name', 'varchar')
177
- .addColumn('gender', 'varchar(50)')
179
+ .addColumn('gender', 'varchar(50)', (col) => col.notNull())
178
180
  .execute()
179
181
 
180
182
  await db.schema
@@ -182,9 +184,9 @@ export async function up(db: Kysely<any>): Promise<void> {
182
184
  .addColumn('id', 'serial', (col) => col.primaryKey())
183
185
  .addColumn('name', 'varchar', (col) => col.notNull().unique())
184
186
  .addColumn('owner_id', 'integer', (col) =>
185
- col.references('person.id').onDelete('cascade')
187
+ col.references('person.id').onDelete('cascade').notNull()
186
188
  )
187
- .addColumn('species', 'varchar')
189
+ .addColumn('species', 'varchar', (col) => col.notNull())
188
190
  .execute()
189
191
 
190
192
  await db.schema
@@ -208,18 +210,18 @@ import { Kysely } from 'kysely'
208
210
  export async function up(db: Kysely<any>): Promise<void> {
209
211
  await db.schema
210
212
  .createTable('person')
211
- .addColumn('id', 'integer', (col) => col.increments().primaryKey())
212
- .addColumn('first_name', 'varchar')
213
- .addColumn('last_name', 'varchar')
214
- .addColumn('gender', 'varchar(50)')
213
+ .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
214
+ .addColumn('first_name', 'varchar(255)', (col) => col.notNull())
215
+ .addColumn('last_name', 'varchar(255)')
216
+ .addColumn('gender', 'varchar(50)', (col) => col.notNull())
215
217
  .execute()
216
218
 
217
219
  await db.schema
218
220
  .createTable('pet')
219
- .addColumn('id', 'integer', (col) => col.increments().primaryKey())
220
- .addColumn('name', 'varchar', (col) => col.notNull().unique())
221
- .addColumn('owner_id', 'integer')
222
- .addColumn('species', 'varchar')
221
+ .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())
222
+ .addColumn('name', 'varchar(255)', (col) => col.notNull().unique())
223
+ .addColumn('owner_id', 'integer', (col) => col.notNull())
224
+ .addColumn('species', 'varchar(255)', (col) => col.notNull())
223
225
  .addForeignKeyConstraint(
224
226
  'pet_owner_id_fk', ['owner_id'], 'person', ['id'],
225
227
  (cb) => cb.onDelete('cascade')
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RuntimeDriver = void 0;
4
+ const performance_now_js_1 = require("../util/performance-now.js");
4
5
  /**
5
6
  * A small wrapper around {@link Driver} that makes sure the driver is
6
7
  * initialized before it is used, only initialized and destroyed
@@ -75,7 +76,7 @@ class RuntimeConnection {
75
76
  this.#log = log;
76
77
  }
77
78
  async executeQuery(compiledQuery) {
78
- const startTime = process.hrtime.bigint();
79
+ const startTime = (0, performance_now_js_1.performanceNow)();
79
80
  try {
80
81
  return await this.#connection.executeQuery(compiledQuery);
81
82
  }
@@ -101,8 +102,6 @@ class RuntimeConnection {
101
102
  }));
102
103
  }
103
104
  #calculateDurationMillis(startTime) {
104
- const endTime = process.hrtime.bigint();
105
- const durationNanos = Number(endTime - startTime);
106
- return durationNanos / 1_000_000;
105
+ return (0, performance_now_js_1.performanceNow)() - startTime;
107
106
  }
108
107
  }
@@ -19,6 +19,8 @@ export * from './schema/drop-schema-builder.js';
19
19
  export * from './schema/column-definition-builder.js';
20
20
  export * from './schema/foreign-key-constraint-builder.js';
21
21
  export * from './schema/alter-table-builder.js';
22
+ export * from './schema/create-view-builder.js';
23
+ export * from './schema/drop-view-builder.js';
22
24
  export * from './dynamic/dynamic.js';
23
25
  export * from './driver/driver.js';
24
26
  export * from './driver/database-connection.js';
package/dist/cjs/index.js CHANGED
@@ -31,6 +31,8 @@ __exportStar(require("./schema/drop-schema-builder.js"), exports);
31
31
  __exportStar(require("./schema/column-definition-builder.js"), exports);
32
32
  __exportStar(require("./schema/foreign-key-constraint-builder.js"), exports);
33
33
  __exportStar(require("./schema/alter-table-builder.js"), exports);
34
+ __exportStar(require("./schema/create-view-builder.js"), exports);
35
+ __exportStar(require("./schema/drop-view-builder.js"), exports);
34
36
  __exportStar(require("./dynamic/dynamic.js"), exports);
35
37
  __exportStar(require("./driver/driver.js"), exports);
36
38
  __exportStar(require("./driver/database-connection.js"), exports);
@@ -1,10 +1,11 @@
1
1
  import { CheckConstraintNode } from './check-constraint-node.js';
2
2
  import { ColumnNode } from './column-node.js';
3
3
  import { DataTypeNode } from './data-type-node.js';
4
+ import { DefaultValueNode } from './default-value-node.js';
5
+ import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
4
6
  import { OperationNode } from './operation-node.js';
5
7
  import { RawNode } from './raw-node.js';
6
8
  import { ReferencesNode } from './references-node.js';
7
- import { ValueNode } from './value-node.js';
8
9
  export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind'>;
9
10
  export declare type ColumnDataTypeNode = DataTypeNode | RawNode;
10
11
  export interface ColumnDefinitionNode extends OperationNode {
@@ -12,12 +13,13 @@ export interface ColumnDefinitionNode extends OperationNode {
12
13
  readonly column: ColumnNode;
13
14
  readonly dataType: ColumnDataTypeNode;
14
15
  readonly references?: ReferencesNode;
15
- readonly isPrimaryKey: boolean;
16
- readonly isAutoIncrementing: boolean;
17
- readonly isUnique: boolean;
18
- readonly isNullable: boolean;
19
- readonly defaultTo?: ValueNode | RawNode;
16
+ readonly primaryKey: boolean;
17
+ readonly autoIncrement: boolean;
18
+ readonly unique: boolean;
19
+ readonly nullable: boolean;
20
+ readonly defaultTo?: DefaultValueNode;
20
21
  readonly check?: CheckConstraintNode;
22
+ readonly generatedAlwaysAs?: GeneratedAlwaysAsNode;
21
23
  }
22
24
  /**
23
25
  * @internal
@@ -15,10 +15,10 @@ exports.ColumnDefinitionNode = (0, object_utils_js_1.freeze)({
15
15
  kind: 'ColumnDefinitionNode',
16
16
  column: column_node_js_1.ColumnNode.create(column),
17
17
  dataType,
18
- isPrimaryKey: false,
19
- isAutoIncrementing: false,
20
- isUnique: false,
21
- isNullable: true,
18
+ primaryKey: false,
19
+ autoIncrement: false,
20
+ unique: false,
21
+ nullable: true,
22
22
  });
23
23
  },
24
24
  cloneWith(node, props) {
@@ -1,11 +1,10 @@
1
1
  import { IdentifierNode } from './identifier-node.js';
2
2
  import { OperationNode } from './operation-node.js';
3
- export declare type CreateSchemaNodeModifier = 'IfNotExists';
4
3
  export declare type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
5
4
  export interface CreateSchemaNode extends OperationNode {
6
5
  readonly kind: 'CreateSchemaNode';
7
6
  readonly schema: IdentifierNode;
8
- readonly modifier?: CreateSchemaNodeModifier;
7
+ readonly ifNotExists?: boolean;
9
8
  }
10
9
  /**
11
10
  * @internal
@@ -2,12 +2,11 @@ import { OperationNode } from './operation-node.js';
2
2
  import { TableNode } from './table-node.js';
3
3
  import { ConstraintNode } from './constraint-node.js';
4
4
  import { ColumnDefinitionNode } from './column-definition-node.js';
5
- export declare type CreateTableNodeModifier = 'IfNotExists';
6
5
  export interface CreateTableNode extends OperationNode {
7
6
  readonly kind: 'CreateTableNode';
8
7
  readonly table: TableNode;
9
8
  readonly columns: ReadonlyArray<ColumnDefinitionNode>;
10
- readonly modifier?: CreateTableNodeModifier;
9
+ readonly ifNotExists?: boolean;
11
10
  readonly constraints?: ReadonlyArray<ConstraintNode>;
12
11
  }
13
12
  /**
@@ -17,6 +16,6 @@ export declare const CreateTableNode: Readonly<{
17
16
  is(node: OperationNode): node is CreateTableNode;
18
17
  create(table: TableNode): CreateTableNode;
19
18
  cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
20
- cloneWithModifier(createTable: CreateTableNode, modifier: CreateTableNodeModifier): CreateTableNode;
19
+ cloneWithIfNotExists(createTable: CreateTableNode, ifNotExists: boolean): CreateTableNode;
21
20
  cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
22
21
  }>;
@@ -22,10 +22,10 @@ exports.CreateTableNode = (0, object_utils_js_1.freeze)({
22
22
  columns: (0, object_utils_js_1.freeze)([...createTable.columns, column]),
23
23
  });
24
24
  },
25
- cloneWithModifier(createTable, modifier) {
25
+ cloneWithIfNotExists(createTable, ifNotExists) {
26
26
  return (0, object_utils_js_1.freeze)({
27
27
  ...createTable,
28
- modifier,
28
+ ifNotExists,
29
29
  });
30
30
  },
31
31
  cloneWithConstraint(createTable, constraint) {
@@ -0,0 +1,22 @@
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 columns?: ReadonlyArray<ColumnNode>;
13
+ readonly as?: SelectQueryNode | RawNode;
14
+ }
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare const CreateViewNode: Readonly<{
19
+ is(node: OperationNode): node is CreateViewNode;
20
+ create(name: string): CreateViewNode;
21
+ cloneWith(createView: CreateViewNode, params: CreateViewNodeParams): CreateViewNode;
22
+ }>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateViewNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const identifier_node_js_1 = require("./identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.CreateViewNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'CreateViewNode';
12
+ },
13
+ create(name) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'CreateViewNode',
16
+ name: identifier_node_js_1.IdentifierNode.create(name),
17
+ });
18
+ },
19
+ cloneWith(createView, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...createView,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -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,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultValueNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ /**
6
+ * @internal
7
+ */
8
+ exports.DefaultValueNode = (0, object_utils_js_1.freeze)({
9
+ is(node) {
10
+ return node.kind === 'DefaultValueNode';
11
+ },
12
+ create(defaultValue) {
13
+ return (0, object_utils_js_1.freeze)({
14
+ kind: 'DefaultValueNode',
15
+ defaultValue,
16
+ });
17
+ },
18
+ });
@@ -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
  }>;
@@ -17,10 +17,10 @@ exports.DropSchemaNode = (0, object_utils_js_1.freeze)({
17
17
  ...params,
18
18
  });
19
19
  },
20
- cloneWithModifier(createSchema, modifier) {
20
+ cloneWith(dropSchema, params) {
21
21
  return (0, object_utils_js_1.freeze)({
22
- ...createSchema,
23
- modifier,
22
+ ...dropSchema,
23
+ ...params,
24
24
  });
25
25
  },
26
26
  });
@@ -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
  }>;
@@ -16,10 +16,10 @@ exports.DropTableNode = (0, object_utils_js_1.freeze)({
16
16
  ...params,
17
17
  });
18
18
  },
19
- cloneWithModifier(dropIndex, modifier) {
19
+ cloneWith(dropIndex, params) {
20
20
  return (0, object_utils_js_1.freeze)({
21
21
  ...dropIndex,
22
- modifier,
22
+ ...params,
23
23
  });
24
24
  },
25
25
  });
@@ -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,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropViewNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const identifier_node_js_1 = require("./identifier-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.DropViewNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'DropViewNode';
12
+ },
13
+ create(name) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'DropViewNode',
16
+ name: identifier_node_js_1.IdentifierNode.create(name),
17
+ });
18
+ },
19
+ cloneWith(dropView, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...dropView,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -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,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeneratedAlwaysAsNode = void 0;
4
+ const object_utils_js_1 = require("../util/object-utils.js");
5
+ const raw_node_js_1 = require("./raw-node.js");
6
+ /**
7
+ * @internal
8
+ */
9
+ exports.GeneratedAlwaysAsNode = (0, object_utils_js_1.freeze)({
10
+ is(node) {
11
+ return node.kind === 'GeneratedAlwaysAsNode';
12
+ },
13
+ create(expression) {
14
+ return (0, object_utils_js_1.freeze)({
15
+ kind: 'GeneratedAlwaysAsNode',
16
+ expression: raw_node_js_1.RawNode.createWithSql(expression),
17
+ });
18
+ },
19
+ cloneWith(node, params) {
20
+ return (0, object_utils_js_1.freeze)({
21
+ ...node,
22
+ ...params,
23
+ });
24
+ },
25
+ });
@@ -58,6 +58,10 @@ 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';
61
65
  /**
62
66
  * Transforms an operation node tree into another one.
63
67
  *
@@ -145,6 +149,10 @@ export declare class OperationNodeTransformer {
145
149
  protected transformModifyColumn(node: ModifyColumnNode): ModifyColumnNode;
146
150
  protected transformAddConstraint(node: AddConstraintNode): AddConstraintNode;
147
151
  protected transformDropConstraint(node: DropConstraintNode): DropConstraintNode;
152
+ protected transformCreateView(node: CreateViewNode): CreateViewNode;
153
+ protected transformDropView(node: DropViewNode): DropViewNode;
154
+ protected transformGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): GeneratedAlwaysAsNode;
155
+ protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
148
156
  protected transformDataType(node: DataTypeNode): DataTypeNode;
149
157
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
150
158
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -33,7 +33,7 @@ const object_utils_js_1 = require("../util/object-utils.js");
33
33
  */
34
34
  class OperationNodeTransformer {
35
35
  nodeStack = [];
36
- #transformers = {
36
+ #transformers = (0, object_utils_js_1.freeze)({
37
37
  AliasNode: this.transformAlias.bind(this),
38
38
  ColumnNode: this.transformColumn.bind(this),
39
39
  IdentifierNode: this.transformIdentifier.bind(this),
@@ -93,7 +93,11 @@ class OperationNodeTransformer {
93
93
  DropConstraintNode: this.transformDropConstraint.bind(this),
94
94
  ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
95
95
  UnionNode: this.transformUnion.bind(this),
96
- };
96
+ CreateViewNode: this.transformCreateView.bind(this),
97
+ DropViewNode: this.transformDropView.bind(this),
98
+ GeneratedAlwaysAsNode: this.transformGeneratedAlwaysAs.bind(this),
99
+ DefaultValueNode: this.transformDefaultValue.bind(this),
100
+ });
97
101
  transformNode = (node) => {
98
102
  if (!node) {
99
103
  return undefined;
@@ -115,7 +119,7 @@ class OperationNodeTransformer {
115
119
  from: this.transformNode(node.from),
116
120
  selections: this.transformNodeList(node.selections),
117
121
  distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
118
- isDistinct: node.isDistinct,
122
+ distinct: node.distinct,
119
123
  joins: this.transformNodeList(node.joins),
120
124
  groupBy: this.transformNode(node.groupBy),
121
125
  orderBy: this.transformNode(node.orderBy),
@@ -257,7 +261,7 @@ class OperationNodeTransformer {
257
261
  table: this.transformNode(node.table),
258
262
  columns: this.transformNodeList(node.columns),
259
263
  constraints: this.transformNodeList(node.constraints),
260
- modifier: node.modifier,
264
+ ifNotExists: node.ifNotExists,
261
265
  };
262
266
  }
263
267
  transformColumnDefinition(node) {
@@ -266,12 +270,13 @@ class OperationNodeTransformer {
266
270
  column: this.transformNode(node.column),
267
271
  dataType: this.transformNode(node.dataType),
268
272
  references: this.transformNode(node.references),
269
- isPrimaryKey: node.isPrimaryKey,
270
- isAutoIncrementing: node.isAutoIncrementing,
271
- isUnique: node.isUnique,
272
- isNullable: node.isNullable,
273
+ primaryKey: node.primaryKey,
274
+ autoIncrement: node.autoIncrement,
275
+ unique: node.unique,
276
+ nullable: node.nullable,
273
277
  defaultTo: this.transformNode(node.defaultTo),
274
278
  check: this.transformNode(node.check),
279
+ generatedAlwaysAs: this.transformNode(node.generatedAlwaysAs),
275
280
  };
276
281
  }
277
282
  transformAddColumn(node) {
@@ -284,7 +289,7 @@ class OperationNodeTransformer {
284
289
  return {
285
290
  kind: 'DropTableNode',
286
291
  table: this.transformNode(node.table),
287
- modifier: node.modifier,
292
+ ifExists: node.ifExists,
288
293
  };
289
294
  }
290
295
  transformOrderBy(node) {
@@ -378,7 +383,7 @@ class OperationNodeTransformer {
378
383
  kind: 'DropIndexNode',
379
384
  name: this.transformNode(node.name),
380
385
  table: this.transformNode(node.table),
381
- modifier: node.modifier,
386
+ ifExists: node.ifExists,
382
387
  };
383
388
  }
384
389
  transformPrimaryKeyConstraint(node) {
@@ -457,7 +462,7 @@ class OperationNodeTransformer {
457
462
  return {
458
463
  kind: 'DropSchemaNode',
459
464
  schema: this.transformNode(node.schema),
460
- modifier: node.modifier,
465
+ ifExists: node.ifExists,
461
466
  };
462
467
  }
463
468
  transformAlterTable(node) {
@@ -518,6 +523,37 @@ class OperationNodeTransformer {
518
523
  constraintName: this.transformNode(node.constraintName),
519
524
  };
520
525
  }
526
+ transformCreateView(node) {
527
+ return {
528
+ kind: 'CreateViewNode',
529
+ name: this.transformNode(node.name),
530
+ orReplace: node.orReplace,
531
+ materialized: node.materialized,
532
+ columns: this.transformNodeList(node.columns),
533
+ as: this.transformNode(node.as),
534
+ };
535
+ }
536
+ transformDropView(node) {
537
+ return {
538
+ kind: 'DropViewNode',
539
+ name: this.transformNode(node.name),
540
+ ifExists: node.ifExists,
541
+ materialized: node.materialized,
542
+ };
543
+ }
544
+ transformGeneratedAlwaysAs(node) {
545
+ return {
546
+ kind: 'GeneratedAlwaysAsNode',
547
+ expression: this.transformNode(node.expression),
548
+ stored: node.stored,
549
+ };
550
+ }
551
+ transformDefaultValue(node) {
552
+ return {
553
+ kind: 'DefaultValueNode',
554
+ defaultValue: this.transformNode(node.defaultValue),
555
+ };
556
+ }
521
557
  transformDataType(node) {
522
558
  // An Object.freezed leaf node. No need to clone.
523
559
  return node;
@@ -58,6 +58,10 @@ 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';
61
65
  export declare abstract class OperationNodeVisitor {
62
66
  #private;
63
67
  protected readonly nodeStack: OperationNode[];
@@ -121,4 +125,8 @@ export declare abstract class OperationNodeVisitor {
121
125
  protected abstract visitValue(_: ValueNode): void;
122
126
  protected abstract visitPrimitiveValueList(_: PrimitiveValueListNode): void;
123
127
  protected abstract visitOperator(node: OperatorNode): void;
128
+ protected abstract visitCreateView(node: CreateViewNode): void;
129
+ protected abstract visitDropView(node: DropViewNode): void;
130
+ protected abstract visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
131
+ protected abstract visitDefaultValue(node: DefaultValueNode): void;
124
132
  }