kysely 0.9.6 → 0.10.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 (102) hide show
  1. package/README.md +15 -13
  2. package/dist/cjs/index.d.ts +2 -0
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/operation-node/column-definition-node.d.ts +4 -4
  5. package/dist/cjs/operation-node/column-definition-node.js +4 -4
  6. package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
  7. package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
  8. package/dist/cjs/operation-node/create-table-node.js +2 -2
  9. package/dist/cjs/operation-node/create-view-node.d.ts +22 -0
  10. package/dist/cjs/operation-node/create-view-node.js +25 -0
  11. package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
  12. package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
  13. package/dist/cjs/operation-node/drop-schema-node.js +3 -3
  14. package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
  15. package/dist/cjs/operation-node/drop-table-node.js +2 -2
  16. package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
  17. package/dist/cjs/operation-node/drop-view-node.js +25 -0
  18. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -0
  19. package/dist/cjs/operation-node/operation-node-transformer.js +29 -9
  20. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -0
  21. package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
  22. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/operator-node.d.ts +1 -1
  24. package/dist/cjs/operation-node/operator-node.js +5 -0
  25. package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
  26. package/dist/cjs/operation-node/select-query-node.js +1 -1
  27. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  28. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
  29. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  30. package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
  31. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  32. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
  33. package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -0
  34. package/dist/cjs/query-compiler/default-query-compiler.js +42 -10
  35. package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
  36. package/dist/cjs/schema/alter-table-builder.d.ts +2 -2
  37. package/dist/cjs/schema/alter-table-builder.js +4 -4
  38. package/dist/cjs/schema/column-definition-builder.d.ts +2 -2
  39. package/dist/cjs/schema/column-definition-builder.js +5 -5
  40. package/dist/cjs/schema/create-schema-builder.js +1 -1
  41. package/dist/cjs/schema/create-table-builder.d.ts +1 -1
  42. package/dist/cjs/schema/create-table-builder.js +2 -2
  43. package/dist/cjs/schema/create-view-builder.d.ts +24 -0
  44. package/dist/cjs/schema/create-view-builder.js +73 -0
  45. package/dist/cjs/schema/drop-index-builder.js +1 -1
  46. package/dist/cjs/schema/drop-schema-builder.js +3 -1
  47. package/dist/cjs/schema/drop-table-builder.js +3 -1
  48. package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
  49. package/dist/cjs/schema/drop-view-builder.js +39 -0
  50. package/dist/cjs/schema/schema.d.ts +30 -3
  51. package/dist/cjs/schema/schema.js +44 -3
  52. package/dist/esm/index.d.ts +2 -0
  53. package/dist/esm/index.js +2 -0
  54. package/dist/esm/operation-node/column-definition-node.d.ts +4 -4
  55. package/dist/esm/operation-node/column-definition-node.js +4 -4
  56. package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
  57. package/dist/esm/operation-node/create-table-node.d.ts +2 -3
  58. package/dist/esm/operation-node/create-table-node.js +2 -2
  59. package/dist/esm/operation-node/create-view-node.d.ts +22 -0
  60. package/dist/esm/operation-node/create-view-node.js +22 -0
  61. package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
  62. package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
  63. package/dist/esm/operation-node/drop-schema-node.js +3 -3
  64. package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
  65. package/dist/esm/operation-node/drop-table-node.js +2 -2
  66. package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
  67. package/dist/esm/operation-node/drop-view-node.js +22 -0
  68. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -0
  69. package/dist/esm/operation-node/operation-node-transformer.js +29 -9
  70. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -0
  71. package/dist/esm/operation-node/operation-node-visitor.js +2 -0
  72. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  73. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  74. package/dist/esm/operation-node/operator-node.js +5 -0
  75. package/dist/esm/operation-node/select-query-node.d.ts +1 -1
  76. package/dist/esm/operation-node/select-query-node.js +1 -1
  77. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
  78. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
  79. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
  80. package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
  81. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
  82. package/dist/esm/plugin/with-schema/with-schema-transformer.js +6 -0
  83. package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -0
  84. package/dist/esm/query-compiler/default-query-compiler.js +42 -10
  85. package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
  86. package/dist/esm/schema/alter-table-builder.d.ts +2 -2
  87. package/dist/esm/schema/alter-table-builder.js +4 -4
  88. package/dist/esm/schema/column-definition-builder.d.ts +2 -2
  89. package/dist/esm/schema/column-definition-builder.js +5 -5
  90. package/dist/esm/schema/create-schema-builder.js +1 -1
  91. package/dist/esm/schema/create-table-builder.d.ts +1 -1
  92. package/dist/esm/schema/create-table-builder.js +2 -2
  93. package/dist/esm/schema/create-view-builder.d.ts +24 -0
  94. package/dist/esm/schema/create-view-builder.js +69 -0
  95. package/dist/esm/schema/drop-index-builder.js +1 -1
  96. package/dist/esm/schema/drop-schema-builder.js +3 -1
  97. package/dist/esm/schema/drop-table-builder.js +3 -1
  98. package/dist/esm/schema/drop-view-builder.d.ts +20 -0
  99. package/dist/esm/schema/drop-view-builder.js +35 -0
  100. package/dist/esm/schema/schema.d.ts +30 -3
  101. package/dist/esm/schema/schema.js +44 -3
  102. package/package.json +4 -1
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')
@@ -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);
@@ -12,10 +12,10 @@ export interface ColumnDefinitionNode extends OperationNode {
12
12
  readonly column: ColumnNode;
13
13
  readonly dataType: ColumnDataTypeNode;
14
14
  readonly references?: ReferencesNode;
15
- readonly isPrimaryKey: boolean;
16
- readonly isAutoIncrementing: boolean;
17
- readonly isUnique: boolean;
18
- readonly isNullable: boolean;
15
+ readonly primaryKey: boolean;
16
+ readonly autoIncrement: boolean;
17
+ readonly unique: boolean;
18
+ readonly nullable: boolean;
19
19
  readonly defaultTo?: ValueNode | RawNode;
20
20
  readonly check?: CheckConstraintNode;
21
21
  }
@@ -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
+ });
@@ -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
+ });
@@ -58,6 +58,8 @@ 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';
61
63
  /**
62
64
  * Transforms an operation node tree into another one.
63
65
  *
@@ -145,6 +147,8 @@ export declare class OperationNodeTransformer {
145
147
  protected transformModifyColumn(node: ModifyColumnNode): ModifyColumnNode;
146
148
  protected transformAddConstraint(node: AddConstraintNode): AddConstraintNode;
147
149
  protected transformDropConstraint(node: DropConstraintNode): DropConstraintNode;
150
+ protected transformCreateView(node: CreateViewNode): CreateViewNode;
151
+ protected transformDropView(node: DropViewNode): DropViewNode;
148
152
  protected transformDataType(node: DataTypeNode): DataTypeNode;
149
153
  protected transformSelectAll(node: SelectAllNode): SelectAllNode;
150
154
  protected transformIdentifier(node: IdentifierNode): IdentifierNode;
@@ -93,6 +93,8 @@ class OperationNodeTransformer {
93
93
  DropConstraintNode: this.transformDropConstraint.bind(this),
94
94
  ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),
95
95
  UnionNode: this.transformUnion.bind(this),
96
+ CreateViewNode: this.transformCreateView.bind(this),
97
+ DropViewNode: this.transformDropView.bind(this),
96
98
  };
97
99
  transformNode = (node) => {
98
100
  if (!node) {
@@ -115,7 +117,7 @@ class OperationNodeTransformer {
115
117
  from: this.transformNode(node.from),
116
118
  selections: this.transformNodeList(node.selections),
117
119
  distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
118
- isDistinct: node.isDistinct,
120
+ distinct: node.distinct,
119
121
  joins: this.transformNodeList(node.joins),
120
122
  groupBy: this.transformNode(node.groupBy),
121
123
  orderBy: this.transformNode(node.orderBy),
@@ -257,7 +259,7 @@ class OperationNodeTransformer {
257
259
  table: this.transformNode(node.table),
258
260
  columns: this.transformNodeList(node.columns),
259
261
  constraints: this.transformNodeList(node.constraints),
260
- modifier: node.modifier,
262
+ ifNotExists: node.ifNotExists,
261
263
  };
262
264
  }
263
265
  transformColumnDefinition(node) {
@@ -266,10 +268,10 @@ class OperationNodeTransformer {
266
268
  column: this.transformNode(node.column),
267
269
  dataType: this.transformNode(node.dataType),
268
270
  references: this.transformNode(node.references),
269
- isPrimaryKey: node.isPrimaryKey,
270
- isAutoIncrementing: node.isAutoIncrementing,
271
- isUnique: node.isUnique,
272
- isNullable: node.isNullable,
271
+ primaryKey: node.primaryKey,
272
+ autoIncrement: node.autoIncrement,
273
+ unique: node.unique,
274
+ nullable: node.nullable,
273
275
  defaultTo: this.transformNode(node.defaultTo),
274
276
  check: this.transformNode(node.check),
275
277
  };
@@ -284,7 +286,7 @@ class OperationNodeTransformer {
284
286
  return {
285
287
  kind: 'DropTableNode',
286
288
  table: this.transformNode(node.table),
287
- modifier: node.modifier,
289
+ ifExists: node.ifExists,
288
290
  };
289
291
  }
290
292
  transformOrderBy(node) {
@@ -378,7 +380,7 @@ class OperationNodeTransformer {
378
380
  kind: 'DropIndexNode',
379
381
  name: this.transformNode(node.name),
380
382
  table: this.transformNode(node.table),
381
- modifier: node.modifier,
383
+ ifExists: node.ifExists,
382
384
  };
383
385
  }
384
386
  transformPrimaryKeyConstraint(node) {
@@ -457,7 +459,7 @@ class OperationNodeTransformer {
457
459
  return {
458
460
  kind: 'DropSchemaNode',
459
461
  schema: this.transformNode(node.schema),
460
- modifier: node.modifier,
462
+ ifExists: node.ifExists,
461
463
  };
462
464
  }
463
465
  transformAlterTable(node) {
@@ -518,6 +520,24 @@ class OperationNodeTransformer {
518
520
  constraintName: this.transformNode(node.constraintName),
519
521
  };
520
522
  }
523
+ transformCreateView(node) {
524
+ return {
525
+ kind: 'CreateViewNode',
526
+ name: this.transformNode(node.name),
527
+ orReplace: node.orReplace,
528
+ materialized: node.materialized,
529
+ columns: this.transformNodeList(node.columns),
530
+ as: this.transformNode(node.as),
531
+ };
532
+ }
533
+ transformDropView(node) {
534
+ return {
535
+ kind: 'DropViewNode',
536
+ name: this.transformNode(node.name),
537
+ ifExists: node.ifExists,
538
+ materialized: node.materialized,
539
+ };
540
+ }
521
541
  transformDataType(node) {
522
542
  // An Object.freezed leaf node. No need to clone.
523
543
  return node;
@@ -58,6 +58,8 @@ 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';
61
63
  export declare abstract class OperationNodeVisitor {
62
64
  #private;
63
65
  protected readonly nodeStack: OperationNode[];
@@ -121,4 +123,6 @@ export declare abstract class OperationNodeVisitor {
121
123
  protected abstract visitValue(_: ValueNode): void;
122
124
  protected abstract visitPrimitiveValueList(_: PrimitiveValueListNode): void;
123
125
  protected abstract visitOperator(node: OperatorNode): void;
126
+ protected abstract visitCreateView(node: CreateViewNode): void;
127
+ protected abstract visitDropView(node: DropViewNode): void;
124
128
  }
@@ -63,6 +63,8 @@ class OperationNodeVisitor {
63
63
  DropConstraintNode: this.visitDropConstraint.bind(this),
64
64
  ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
65
65
  UnionNode: this.visitUnion.bind(this),
66
+ CreateViewNode: this.visitCreateView.bind(this),
67
+ DropViewNode: this.visitDropView.bind(this),
66
68
  };
67
69
  visitNode = (node) => {
68
70
  this.nodeStack.push(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';
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
@@ -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
  }