kysely 0.13.0 → 0.14.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 (87) hide show
  1. package/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
  2. package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
  3. package/dist/cjs/dialect/dialect.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
  7. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  8. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  10. package/dist/cjs/index.d.ts +2 -2
  11. package/dist/cjs/index.js +2 -2
  12. package/dist/cjs/kysely.d.ts +1 -1
  13. package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
  14. package/dist/cjs/operation-node/check-constraint-node.js +2 -3
  15. package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
  16. package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
  17. package/dist/cjs/operation-node/generated-node.d.ts +20 -0
  18. package/dist/cjs/operation-node/generated-node.js +31 -0
  19. package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
  20. package/dist/cjs/operation-node/on-conflict-node.js +39 -1
  21. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -2
  22. package/dist/cjs/operation-node/operation-node-transformer.js +11 -5
  23. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -2
  24. package/dist/cjs/operation-node/operation-node-visitor.js +1 -1
  25. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  26. package/dist/cjs/query-builder/insert-query-builder.d.ts +76 -75
  27. package/dist/cjs/query-builder/insert-query-builder.js +150 -15
  28. package/dist/cjs/query-builder/on-conflict-builder.d.ts +684 -0
  29. package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
  30. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -2
  31. package/dist/cjs/query-compiler/default-query-compiler.js +33 -7
  32. package/dist/cjs/schema/alter-table-builder.d.ts +29 -9
  33. package/dist/cjs/schema/alter-table-builder.js +33 -9
  34. package/dist/cjs/schema/column-definition-builder.d.ts +28 -8
  35. package/dist/cjs/schema/column-definition-builder.js +17 -7
  36. package/dist/cjs/schema/create-index-builder.d.ts +3 -2
  37. package/dist/cjs/schema/create-index-builder.js +2 -2
  38. package/dist/cjs/schema/create-table-builder.d.ts +3 -2
  39. package/dist/cjs/schema/create-table-builder.js +2 -2
  40. package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
  41. package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
  42. package/dist/esm/dialect/dialect.d.ts +1 -1
  43. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
  44. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  45. package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
  46. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  47. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
  48. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  49. package/dist/esm/index.d.ts +2 -2
  50. package/dist/esm/index.js +2 -2
  51. package/dist/esm/kysely.d.ts +1 -1
  52. package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
  53. package/dist/esm/operation-node/check-constraint-node.js +2 -3
  54. package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
  55. package/dist/esm/operation-node/data-type-node.d.ts +1 -1
  56. package/dist/esm/operation-node/generated-node.d.ts +20 -0
  57. package/dist/esm/operation-node/generated-node.js +28 -0
  58. package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
  59. package/dist/esm/operation-node/on-conflict-node.js +39 -1
  60. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -2
  61. package/dist/esm/operation-node/operation-node-transformer.js +11 -5
  62. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -2
  63. package/dist/esm/operation-node/operation-node-visitor.js +1 -1
  64. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  65. package/dist/esm/query-builder/insert-query-builder.d.ts +76 -75
  66. package/dist/esm/query-builder/insert-query-builder.js +150 -15
  67. package/dist/esm/query-builder/on-conflict-builder.d.ts +684 -0
  68. package/dist/esm/query-builder/on-conflict-builder.js +317 -0
  69. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -2
  70. package/dist/esm/query-compiler/default-query-compiler.js +33 -7
  71. package/dist/esm/schema/alter-table-builder.d.ts +29 -9
  72. package/dist/esm/schema/alter-table-builder.js +33 -9
  73. package/dist/esm/schema/column-definition-builder.d.ts +28 -8
  74. package/dist/esm/schema/column-definition-builder.js +17 -7
  75. package/dist/esm/schema/create-index-builder.d.ts +3 -2
  76. package/dist/esm/schema/create-index-builder.js +2 -2
  77. package/dist/esm/schema/create-table-builder.d.ts +3 -2
  78. package/dist/esm/schema/create-table-builder.js +2 -2
  79. package/package.json +1 -1
  80. package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
  81. package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
  82. package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
  83. package/dist/cjs/parser/on-conflict-parser.js +0 -35
  84. package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
  85. package/dist/esm/operation-node/generated-always-as-node.js +0 -22
  86. package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
  87. package/dist/esm/parser/on-conflict-parser.js +0 -30
@@ -9,7 +9,7 @@ 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");
12
+ const generated_node_js_1 = require("../operation-node/generated-node.js");
13
13
  const default_value_node_js_1 = require("../operation-node/default-value-node.js");
14
14
  class ColumnDefinitionBuilder {
15
15
  #node;
@@ -63,22 +63,32 @@ class ColumnDefinitionBuilder {
63
63
  defaultTo: default_value_node_js_1.DefaultValueNode.create((0, default_value_parser_js_1.parseDefaultValueExpression)(value)),
64
64
  }));
65
65
  }
66
- check(sql) {
66
+ check(expression) {
67
67
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
68
- check: check_constraint_node_js_1.CheckConstraintNode.create(sql),
68
+ check: check_constraint_node_js_1.CheckConstraintNode.create(expression.toOperationNode()),
69
69
  }));
70
70
  }
71
- generatedAlwaysAs(sql) {
71
+ generatedAlwaysAs(expression) {
72
72
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
73
- generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.create(sql),
73
+ generated: generated_node_js_1.GeneratedNode.createWithExpression(expression.toOperationNode()),
74
+ }));
75
+ }
76
+ generatedAlwaysAsIdentity() {
77
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
78
+ generated: generated_node_js_1.GeneratedNode.create({ identity: true, always: true }),
79
+ }));
80
+ }
81
+ generatedByDefaultAsIdentity() {
82
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
83
+ generated: generated_node_js_1.GeneratedNode.create({ identity: true, byDefault: true }),
74
84
  }));
75
85
  }
76
86
  stored() {
77
- if (!this.#node.generatedAlwaysAs) {
87
+ if (!this.#node.generated) {
78
88
  throw new Error('stored() can only be called after generatedAlwaysAs');
79
89
  }
80
90
  return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, {
81
- generatedAlwaysAs: generated_always_as_node_js_1.GeneratedAlwaysAsNode.cloneWith(this.#node.generatedAlwaysAs, {
91
+ generated: generated_node_js_1.GeneratedNode.cloneWith(this.#node.generated, {
82
92
  stored: true,
83
93
  }),
84
94
  }));
@@ -4,6 +4,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
4
4
  import { Compilable } from '../util/compilable.js';
5
5
  import { QueryExecutor } from '../query-executor/query-executor.js';
6
6
  import { QueryId } from '../util/query-id.js';
7
+ import { AnyRawBuilder } from '../util/type-utils.js';
7
8
  export declare class CreateIndexBuilder implements OperationNodeSource, Compilable {
8
9
  #private;
9
10
  constructor(props: CreateIndexBuilderProps);
@@ -36,11 +37,11 @@ export declare class CreateIndexBuilder implements OperationNodeSource, Compilab
36
37
  * await db.schema
37
38
  * .createIndex('person_first_name_index')
38
39
  * .on('person')
39
- * .expression('first_name COLLATE "fi_FI"')
40
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
40
41
  * .execute()
41
42
  * ```
42
43
  */
43
- expression(expression: string): CreateIndexBuilder;
44
+ expression(expression: AnyRawBuilder): CreateIndexBuilder;
44
45
  /**
45
46
  * Specifies the index type.
46
47
  */
@@ -70,7 +70,7 @@ class CreateIndexBuilder {
70
70
  * await db.schema
71
71
  * .createIndex('person_first_name_index')
72
72
  * .on('person')
73
- * .expression('first_name COLLATE "fi_FI"')
73
+ * .expression(db.raw('first_name COLLATE "fi_FI"'))
74
74
  * .execute()
75
75
  * ```
76
76
  */
@@ -78,7 +78,7 @@ class CreateIndexBuilder {
78
78
  return new CreateIndexBuilder({
79
79
  ...this.#props,
80
80
  createIndexNode: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.createIndexNode, {
81
- expression: raw_node_js_1.RawNode.createWithSql(expression),
81
+ expression: expression.toOperationNode(),
82
82
  }),
83
83
  });
84
84
  }
@@ -7,6 +7,7 @@ import { ColumnDefinitionBuilder } from './column-definition-builder.js';
7
7
  import { QueryId } from '../util/query-id.js';
8
8
  import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
9
9
  import { DataTypeExpression } from '../parser/data-type-parser.js';
10
+ import { AnyRawBuilder } from '../util/type-utils.js';
10
11
  /**
11
12
  * This builder can be used to create a `create table` query.
12
13
  */
@@ -110,10 +111,10 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
110
111
  * ### Examples
111
112
  *
112
113
  * ```ts
113
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
114
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
114
115
  * ```
115
116
  */
116
- addCheckConstraint(constraintName: string, checkExpression: string): CreateTableBuilder<TB, C>;
117
+ addCheckConstraint(constraintName: string, checkExpression: AnyRawBuilder): CreateTableBuilder<TB, C>;
117
118
  /**
118
119
  * Adds a foreign key constraint.
119
120
  *
@@ -156,13 +156,13 @@ class CreateTableBuilder {
156
156
  * ### Examples
157
157
  *
158
158
  * ```ts
159
- * addCheckConstraint('check_legs', 'number_of_legs < 5')
159
+ * addCheckConstraint('check_legs', db.raw('number_of_legs < 5'))
160
160
  * ```
161
161
  */
162
162
  addCheckConstraint(constraintName, checkExpression) {
163
163
  return new CreateTableBuilder({
164
164
  ...this.#props,
165
- createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression, constraintName)),
165
+ createTableNode: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.createTableNode, check_constraint_node_js_1.CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)),
166
166
  });
167
167
  }
168
168
  /**
@@ -1,7 +1,7 @@
1
1
  import { Driver } from '../driver/driver.js';
2
2
  import { Kysely } from '../kysely.js';
3
3
  import { QueryCompiler } from '../query-compiler/query-compiler.js';
4
- import { DatabaseIntrospector } from '../introspection/database-introspector.js';
4
+ import { DatabaseIntrospector } from './database-introspector.js';
5
5
  import { DialectAdapter } from './dialect-adapter.js';
6
6
  /**
7
7
  * A Dialect is the glue between Kysely and the underlying database engine.
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
5
+ import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
7
  import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class MysqlIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -5,7 +5,7 @@ import { Driver } from '../../driver/driver.js';
5
5
  import { Kysely } from '../../kysely.js';
6
6
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
7
7
  import { Dialect } from '../dialect.js';
8
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
8
+ import { DatabaseIntrospector } from '../database-introspector.js';
9
9
  import { DialectAdapter } from '../dialect-adapter.js';
10
10
  import { DatabaseConnection } from '../../driver/database-connection.js';
11
11
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class PostgresIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -2,7 +2,7 @@ import { Driver } from '../../driver/driver.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  import { QueryCompiler } from '../../query-compiler/query-compiler.js';
4
4
  import { Dialect } from '../dialect.js';
5
- import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
5
+ import { DatabaseIntrospector } from '../database-introspector.js';
6
6
  import { DialectAdapter } from '../dialect-adapter.js';
7
7
  import { DatabaseConnection } from '../../driver/database-connection.js';
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
1
+ import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../database-introspector.js';
2
2
  import { Kysely } from '../../kysely.js';
3
3
  export declare class SqliteIntrospector implements DatabaseIntrospector {
4
4
  #private;
@@ -91,7 +91,7 @@ export * from './operation-node/drop-view-node.js';
91
91
  export * from './operation-node/filter-node.js';
92
92
  export * from './operation-node/foreign-key-constraint-node.js';
93
93
  export * from './operation-node/from-node.js';
94
- export * from './operation-node/generated-always-as-node.js';
94
+ export * from './operation-node/generated-node.js';
95
95
  export * from './operation-node/group-by-item-node.js';
96
96
  export * from './operation-node/group-by-node.js';
97
97
  export * from './operation-node/having-node.js';
@@ -136,7 +136,7 @@ export * from './operation-node/value-node.js';
136
136
  export * from './operation-node/values-node.js';
137
137
  export * from './operation-node/where-node.js';
138
138
  export * from './operation-node/with-node.js';
139
- export * from './introspection/database-introspector.js';
139
+ export * from './dialect/database-introspector.js';
140
140
  export * from './util/compilable.js';
141
141
  export * from './util/log.js';
142
142
  export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
package/dist/esm/index.js CHANGED
@@ -91,7 +91,7 @@ export * from './operation-node/drop-view-node.js';
91
91
  export * from './operation-node/filter-node.js';
92
92
  export * from './operation-node/foreign-key-constraint-node.js';
93
93
  export * from './operation-node/from-node.js';
94
- export * from './operation-node/generated-always-as-node.js';
94
+ export * from './operation-node/generated-node.js';
95
95
  export * from './operation-node/group-by-item-node.js';
96
96
  export * from './operation-node/group-by-node.js';
97
97
  export * from './operation-node/having-node.js';
@@ -136,6 +136,6 @@ export * from './operation-node/value-node.js';
136
136
  export * from './operation-node/values-node.js';
137
137
  export * from './operation-node/where-node.js';
138
138
  export * from './operation-node/with-node.js';
139
- export * from './introspection/database-introspector.js';
139
+ export * from './dialect/database-introspector.js';
140
140
  export * from './util/compilable.js';
141
141
  export * from './util/log.js';
@@ -6,7 +6,7 @@ import { QueryExecutor } from './query-executor/query-executor.js';
6
6
  import { QueryCreator } from './query-creator.js';
7
7
  import { KyselyPlugin } from './plugin/kysely-plugin.js';
8
8
  import { GeneratedPlaceholder } from './util/type-utils.js';
9
- import { DatabaseIntrospector } from './introspection/database-introspector.js';
9
+ import { DatabaseIntrospector } from './dialect/database-introspector.js';
10
10
  import { Driver, IsolationLevel } from './driver/driver.js';
11
11
  import { ParseContext } from './parser/parse-context.js';
12
12
  import { FunctionBuilder } from './query-builder/function-builder.js';
@@ -11,5 +11,5 @@ export interface CheckConstraintNode extends OperationNode {
11
11
  */
12
12
  export declare const CheckConstraintNode: Readonly<{
13
13
  is(node: OperationNode): node is CheckConstraintNode;
14
- create(expressionSql: string, constraintName?: string | undefined): CheckConstraintNode;
14
+ create(expression: RawNode, constraintName?: string | undefined): CheckConstraintNode;
15
15
  }>;
@@ -1,5 +1,4 @@
1
1
  import { freeze } from '../util/object-utils.js';
2
- import { RawNode } from './raw-node.js';
3
2
  import { IdentifierNode } from './identifier-node.js';
4
3
  /**
5
4
  * @internal
@@ -8,10 +7,10 @@ export const CheckConstraintNode = freeze({
8
7
  is(node) {
9
8
  return node.kind === 'CheckConstraintNode';
10
9
  },
11
- create(expressionSql, constraintName) {
10
+ create(expression, constraintName) {
12
11
  return freeze({
13
12
  kind: 'CheckConstraintNode',
14
- expression: RawNode.createWithSql(expressionSql),
13
+ expression,
15
14
  name: constraintName ? IdentifierNode.create(constraintName) : undefined,
16
15
  });
17
16
  },
@@ -2,7 +2,7 @@ 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
4
  import { DefaultValueNode } from './default-value-node.js';
5
- import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
5
+ import { GeneratedNode } from './generated-node.js';
6
6
  import { OperationNode } from './operation-node.js';
7
7
  import { RawNode } from './raw-node.js';
8
8
  import { ReferencesNode } from './references-node.js';
@@ -19,7 +19,7 @@ export interface ColumnDefinitionNode extends OperationNode {
19
19
  readonly notNull?: boolean;
20
20
  readonly defaultTo?: DefaultValueNode;
21
21
  readonly check?: CheckConstraintNode;
22
- readonly generatedAlwaysAs?: GeneratedAlwaysAsNode;
22
+ readonly generated?: GeneratedNode;
23
23
  readonly unsigned?: boolean;
24
24
  }
25
25
  /**
@@ -1,5 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare type ColumnDataType = 'varchar' | `varchar(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | 'date' | 'datetime' | 'time' | 'timetz' | 'timestamp' | 'timestamptz' | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb';
2
+ export declare type ColumnDataType = 'varchar' | `varchar(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | 'date' | 'datetime' | 'time' | 'timetz' | 'timestamp' | 'timestamptz' | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
3
3
  export declare type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
4
4
  export interface DataTypeNode extends OperationNode {
5
5
  readonly kind: 'DataTypeNode';
@@ -0,0 +1,20 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { RawNode } from './raw-node.js';
3
+ export declare type GeneratedNodeParams = Omit<GeneratedNode, 'kind' | 'expression'>;
4
+ export interface GeneratedNode extends OperationNode {
5
+ readonly kind: 'GeneratedNode';
6
+ readonly byDefault?: boolean;
7
+ readonly always?: boolean;
8
+ readonly identity?: boolean;
9
+ readonly stored?: boolean;
10
+ readonly expression?: RawNode;
11
+ }
12
+ /**
13
+ * @internal
14
+ */
15
+ export declare const GeneratedNode: Readonly<{
16
+ is(node: OperationNode): node is GeneratedNode;
17
+ create(params: GeneratedNodeParams): GeneratedNode;
18
+ createWithExpression(expression: RawNode): GeneratedNode;
19
+ cloneWith(node: GeneratedNode, params: GeneratedNodeParams): GeneratedNode;
20
+ }>;
@@ -0,0 +1,28 @@
1
+ import { freeze } from '../util/object-utils.js';
2
+ /**
3
+ * @internal
4
+ */
5
+ export const GeneratedNode = freeze({
6
+ is(node) {
7
+ return node.kind === 'GeneratedNode';
8
+ },
9
+ create(params) {
10
+ return freeze({
11
+ kind: 'GeneratedNode',
12
+ ...params,
13
+ });
14
+ },
15
+ createWithExpression(expression) {
16
+ return freeze({
17
+ kind: 'GeneratedNode',
18
+ always: true,
19
+ expression,
20
+ });
21
+ },
22
+ cloneWith(node, params) {
23
+ return freeze({
24
+ ...node,
25
+ ...params,
26
+ });
27
+ },
28
+ });
@@ -1,13 +1,19 @@
1
1
  import { ColumnNode } from './column-node.js';
2
2
  import { ColumnUpdateNode } from './column-update-node.js';
3
3
  import { IdentifierNode } from './identifier-node.js';
4
+ import { FilterExpressionNode } from './operation-node-utils.js';
4
5
  import { OperationNode } from './operation-node.js';
5
- export declare type OnConflictNodeProps = Omit<OnConflictNode, 'kind'>;
6
+ import { RawNode } from './raw-node.js';
7
+ import { WhereNode } from './where-node.js';
8
+ export declare type OnConflictNodeProps = Omit<OnConflictNode, 'kind' | 'indexWhere' | 'updateWhere'>;
6
9
  export interface OnConflictNode extends OperationNode {
7
10
  readonly kind: 'OnConflictNode';
8
11
  readonly columns?: ReadonlyArray<ColumnNode>;
9
12
  readonly constraint?: IdentifierNode;
13
+ readonly indexExpression?: RawNode;
14
+ readonly indexWhere?: WhereNode;
10
15
  readonly updates?: ReadonlyArray<ColumnUpdateNode>;
16
+ readonly updateWhere?: WhereNode;
11
17
  readonly doNothing?: boolean;
12
18
  }
13
19
  /**
@@ -15,5 +21,10 @@ export interface OnConflictNode extends OperationNode {
15
21
  */
16
22
  export declare const OnConflictNode: Readonly<{
17
23
  is(node: OperationNode): node is OnConflictNode;
18
- create(props: OnConflictNodeProps): OnConflictNode;
24
+ create(): OnConflictNode;
25
+ cloneWith(node: OnConflictNode, props: OnConflictNodeProps): OnConflictNode;
26
+ cloneWithIndexWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
27
+ cloneWithIndexOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
28
+ cloneWithUpdateWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
29
+ cloneWithUpdateOrWhere(node: OnConflictNode, filter: FilterExpressionNode): OnConflictNode;
19
30
  }>;
@@ -1,4 +1,5 @@
1
1
  import { freeze } from '../util/object-utils.js';
2
+ import { WhereNode } from './where-node.js';
2
3
  /**
3
4
  * @internal
4
5
  */
@@ -6,10 +7,47 @@ export const OnConflictNode = freeze({
6
7
  is(node) {
7
8
  return node.kind === 'OnConflictNode';
8
9
  },
9
- create(props) {
10
+ create() {
10
11
  return freeze({
11
12
  kind: 'OnConflictNode',
13
+ });
14
+ },
15
+ cloneWith(node, props) {
16
+ return freeze({
17
+ ...node,
12
18
  ...props,
13
19
  });
14
20
  },
21
+ cloneWithIndexWhere(node, filter) {
22
+ return freeze({
23
+ ...node,
24
+ indexWhere: node.indexWhere
25
+ ? WhereNode.cloneWithFilter(node.indexWhere, 'And', filter)
26
+ : WhereNode.create(filter),
27
+ });
28
+ },
29
+ cloneWithIndexOrWhere(node, filter) {
30
+ return freeze({
31
+ ...node,
32
+ indexWhere: node.indexWhere
33
+ ? WhereNode.cloneWithFilter(node.indexWhere, 'Or', filter)
34
+ : WhereNode.create(filter),
35
+ });
36
+ },
37
+ cloneWithUpdateWhere(node, filter) {
38
+ return freeze({
39
+ ...node,
40
+ updateWhere: node.updateWhere
41
+ ? WhereNode.cloneWithFilter(node.updateWhere, 'And', filter)
42
+ : WhereNode.create(filter),
43
+ });
44
+ },
45
+ cloneWithUpdateOrWhere(node, filter) {
46
+ return freeze({
47
+ ...node,
48
+ updateWhere: node.updateWhere
49
+ ? WhereNode.cloneWithFilter(node.updateWhere, 'Or', filter)
50
+ : WhereNode.create(filter),
51
+ });
52
+ },
15
53
  });
@@ -61,7 +61,7 @@ import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
61
61
  import { UnionNode } from './union-node.js';
62
62
  import { CreateViewNode } from './create-view-node.js';
63
63
  import { DropViewNode } from './drop-view-node.js';
64
- import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
64
+ import { GeneratedNode } from './generated-node.js';
65
65
  import { DefaultValueNode } from './default-value-node.js';
66
66
  import { OnNode } from './on-node.js';
67
67
  import { ValuesNode } from './values-node.js';
@@ -156,7 +156,7 @@ export declare class OperationNodeTransformer {
156
156
  protected transformDropConstraint(node: DropConstraintNode): DropConstraintNode;
157
157
  protected transformCreateView(node: CreateViewNode): CreateViewNode;
158
158
  protected transformDropView(node: DropViewNode): DropViewNode;
159
- protected transformGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): GeneratedAlwaysAsNode;
159
+ protected transformGenerated(node: GeneratedNode): GeneratedNode;
160
160
  protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
161
161
  protected transformOn(node: OnNode): OnNode;
162
162
  protected transformDataType(node: DataTypeNode): DataTypeNode;
@@ -93,7 +93,7 @@ export class OperationNodeTransformer {
93
93
  UnionNode: this.transformUnion.bind(this),
94
94
  CreateViewNode: this.transformCreateView.bind(this),
95
95
  DropViewNode: this.transformDropView.bind(this),
96
- GeneratedAlwaysAsNode: this.transformGeneratedAlwaysAs.bind(this),
96
+ GeneratedNode: this.transformGenerated.bind(this),
97
97
  DefaultValueNode: this.transformDefaultValue.bind(this),
98
98
  OnNode: this.transformOn.bind(this),
99
99
  ValuesNode: this.transformValues.bind(this),
@@ -285,7 +285,7 @@ export class OperationNodeTransformer {
285
285
  unsigned: node.unsigned,
286
286
  defaultTo: this.transformNode(node.defaultTo),
287
287
  check: this.transformNode(node.check),
288
- generatedAlwaysAs: this.transformNode(node.generatedAlwaysAs),
288
+ generated: this.transformNode(node.generated),
289
289
  };
290
290
  }
291
291
  transformAddColumn(node) {
@@ -361,7 +361,10 @@ export class OperationNodeTransformer {
361
361
  kind: 'OnConflictNode',
362
362
  columns: this.transformNodeList(node.columns),
363
363
  constraint: this.transformNode(node.constraint),
364
+ indexExpression: this.transformNode(node.indexExpression),
365
+ indexWhere: this.transformNode(node.indexWhere),
364
366
  updates: this.transformNodeList(node.updates),
367
+ updateWhere: this.transformNode(node.updateWhere),
365
368
  doNothing: node.doNothing,
366
369
  };
367
370
  }
@@ -560,11 +563,14 @@ export class OperationNodeTransformer {
560
563
  materialized: node.materialized,
561
564
  };
562
565
  }
563
- transformGeneratedAlwaysAs(node) {
566
+ transformGenerated(node) {
564
567
  return {
565
- kind: 'GeneratedAlwaysAsNode',
566
- expression: this.transformNode(node.expression),
568
+ kind: 'GeneratedNode',
569
+ byDefault: node.byDefault,
570
+ always: node.always,
571
+ identity: node.identity,
567
572
  stored: node.stored,
573
+ expression: this.transformNode(node.expression),
568
574
  };
569
575
  }
570
576
  transformDefaultValue(node) {
@@ -61,7 +61,7 @@ import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
61
61
  import { UnionNode } from './union-node.js';
62
62
  import { CreateViewNode } from './create-view-node.js';
63
63
  import { DropViewNode } from './drop-view-node.js';
64
- import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
64
+ import { GeneratedNode } from './generated-node.js';
65
65
  import { DefaultValueNode } from './default-value-node.js';
66
66
  import { OnNode } from './on-node.js';
67
67
  import { ValuesNode } from './values-node.js';
@@ -132,7 +132,7 @@ export declare abstract class OperationNodeVisitor {
132
132
  protected abstract visitOperator(node: OperatorNode): void;
133
133
  protected abstract visitCreateView(node: CreateViewNode): void;
134
134
  protected abstract visitDropView(node: DropViewNode): void;
135
- protected abstract visitGeneratedAlwaysAs(node: GeneratedAlwaysAsNode): void;
135
+ protected abstract visitGenerated(node: GeneratedNode): void;
136
136
  protected abstract visitDefaultValue(node: DefaultValueNode): void;
137
137
  protected abstract visitOn(node: OnNode): void;
138
138
  protected abstract visitValues(node: ValuesNode): void;
@@ -67,7 +67,7 @@ export class OperationNodeVisitor {
67
67
  UnionNode: this.visitUnion.bind(this),
68
68
  CreateViewNode: this.visitCreateView.bind(this),
69
69
  DropViewNode: this.visitDropView.bind(this),
70
- GeneratedAlwaysAsNode: this.visitGeneratedAlwaysAs.bind(this),
70
+ GeneratedNode: this.visitGenerated.bind(this),
71
71
  DefaultValueNode: this.visitDefaultValue.bind(this),
72
72
  OnNode: this.visitOn.bind(this),
73
73
  ValuesNode: this.visitValues.bind(this),
@@ -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' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedAlwaysAsNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode';
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' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }