kysely 0.12.2 → 0.15.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.
- package/README.md +115 -31
- package/dist/cjs/{introspection → dialect}/database-introspector.d.ts +0 -0
- package/dist/cjs/{introspection → dialect}/database-introspector.js +0 -0
- package/dist/cjs/dialect/dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +2 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +3 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -3
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +3 -3
- package/dist/cjs/index.d.ts +7 -4
- package/dist/cjs/index.js +6 -3
- package/dist/cjs/kysely.d.ts +8 -40
- package/dist/cjs/kysely.js +8 -40
- package/dist/cjs/migration/file-migration-provider.d.ts +52 -0
- package/dist/cjs/migration/file-migration-provider.js +52 -0
- package/dist/cjs/migration/migrator.d.ts +234 -0
- package/dist/cjs/migration/migrator.js +417 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/check-constraint-node.js +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -7
- package/dist/cjs/operation-node/column-definition-node.js +0 -4
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/generated-node.d.ts +20 -0
- package/dist/cjs/operation-node/generated-node.js +31 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +13 -2
- package/dist/cjs/operation-node/on-conflict-node.js +39 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +13 -6
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
- package/dist/cjs/parser/insert-values-parser.js +2 -3
- package/dist/cjs/parser/reference-parser.d.ts +4 -3
- package/dist/cjs/parser/select-parser.d.ts +10 -4
- package/dist/cjs/parser/update-set-parser.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +0 -3
- package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -94
- package/dist/cjs/query-builder/insert-query-builder.js +145 -15
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +686 -0
- package/dist/cjs/query-builder/on-conflict-builder.js +323 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +0 -3
- package/dist/cjs/query-builder/update-query-builder.d.ts +0 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -8
- package/dist/cjs/query-creator.d.ts +0 -2
- package/dist/cjs/query-creator.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -9
- package/dist/cjs/schema/alter-table-builder.js +45 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +40 -8
- package/dist/cjs/schema/column-definition-builder.js +21 -8
- package/dist/cjs/schema/create-index-builder.d.ts +3 -2
- package/dist/cjs/schema/create-index-builder.js +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +3 -2
- package/dist/cjs/schema/create-table-builder.js +2 -2
- package/dist/cjs/util/column-type.d.ts +165 -0
- package/dist/cjs/util/column-type.js +2 -0
- package/dist/cjs/util/private-symbols.d.ts +5 -0
- package/dist/cjs/util/private-symbols.js +8 -0
- package/dist/cjs/util/type-utils.d.ts +6 -42
- package/dist/esm/{introspection → dialect}/database-introspector.d.ts +0 -0
- package/dist/esm/{introspection → dialect}/database-introspector.js +0 -0
- package/dist/esm/dialect/dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +2 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.js +1 -1
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +2 -2
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/index.d.ts +7 -4
- package/dist/esm/index.js +6 -3
- package/dist/esm/kysely.d.ts +8 -40
- package/dist/esm/kysely.js +8 -40
- package/dist/esm/migration/file-migration-provider.d.ts +52 -0
- package/dist/esm/migration/file-migration-provider.js +48 -0
- package/dist/esm/migration/migrator.d.ts +234 -0
- package/dist/esm/migration/migrator.js +413 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/check-constraint-node.js +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -7
- package/dist/esm/operation-node/column-definition-node.js +0 -4
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/generated-node.d.ts +20 -0
- package/dist/esm/operation-node/generated-node.js +28 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +13 -2
- package/dist/esm/operation-node/on-conflict-node.js +39 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -2
- package/dist/esm/operation-node/operation-node-transformer.js +13 -6
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -2
- package/dist/esm/operation-node/operation-node-visitor.js +1 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.d.ts +4 -4
- package/dist/esm/parser/insert-values-parser.js +2 -3
- package/dist/esm/parser/reference-parser.d.ts +4 -3
- package/dist/esm/parser/select-parser.d.ts +10 -4
- package/dist/esm/parser/update-set-parser.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +2 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +0 -3
- package/dist/esm/query-builder/insert-query-builder.d.ts +78 -94
- package/dist/esm/query-builder/insert-query-builder.js +145 -15
- package/dist/esm/query-builder/on-conflict-builder.d.ts +686 -0
- package/dist/esm/query-builder/on-conflict-builder.js +317 -0
- package/dist/esm/query-builder/returning-interface.d.ts +0 -3
- package/dist/esm/query-builder/update-query-builder.d.ts +0 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -2
- package/dist/esm/query-compiler/default-query-compiler.js +37 -8
- package/dist/esm/query-creator.d.ts +0 -2
- package/dist/esm/query-creator.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +41 -9
- package/dist/esm/schema/alter-table-builder.js +45 -9
- package/dist/esm/schema/column-definition-builder.d.ts +40 -8
- package/dist/esm/schema/column-definition-builder.js +21 -8
- package/dist/esm/schema/create-index-builder.d.ts +3 -2
- package/dist/esm/schema/create-index-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +3 -2
- package/dist/esm/schema/create-table-builder.js +2 -2
- package/dist/esm/util/column-type.d.ts +165 -0
- package/dist/esm/util/column-type.js +1 -0
- package/dist/esm/util/private-symbols.d.ts +5 -0
- package/dist/esm/util/private-symbols.js +5 -0
- package/dist/esm/util/type-utils.d.ts +6 -42
- package/package.json +1 -1
- package/dist/cjs/migration/migration.d.ts +0 -66
- package/dist/cjs/migration/migration.js +0 -187
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +0 -16
- package/dist/cjs/operation-node/generated-always-as-node.js +0 -25
- package/dist/cjs/parser/on-conflict-parser.d.ts +0 -10
- package/dist/cjs/parser/on-conflict-parser.js +0 -35
- package/dist/cjs/util/generated-placeholder.d.ts +0 -3
- package/dist/cjs/util/generated-placeholder.js +0 -11
- package/dist/esm/migration/migration.d.ts +0 -66
- package/dist/esm/migration/migration.js +0 -183
- package/dist/esm/operation-node/generated-always-as-node.d.ts +0 -16
- package/dist/esm/operation-node/generated-always-as-node.js +0 -22
- package/dist/esm/parser/on-conflict-parser.d.ts +0 -10
- package/dist/esm/parser/on-conflict-parser.js +0 -30
- package/dist/esm/util/generated-placeholder.d.ts +0 -3
- package/dist/esm/util/generated-placeholder.js +0 -7
|
@@ -2,24 +2,25 @@ 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 {
|
|
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';
|
|
9
|
-
export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind'>;
|
|
9
|
+
export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind' | 'dataType'>;
|
|
10
10
|
export declare type ColumnDataTypeNode = DataTypeNode | RawNode;
|
|
11
11
|
export interface ColumnDefinitionNode extends OperationNode {
|
|
12
12
|
readonly kind: 'ColumnDefinitionNode';
|
|
13
13
|
readonly column: ColumnNode;
|
|
14
14
|
readonly dataType: ColumnDataTypeNode;
|
|
15
15
|
readonly references?: ReferencesNode;
|
|
16
|
-
readonly primaryKey
|
|
17
|
-
readonly autoIncrement
|
|
18
|
-
readonly unique
|
|
19
|
-
readonly
|
|
16
|
+
readonly primaryKey?: boolean;
|
|
17
|
+
readonly autoIncrement?: boolean;
|
|
18
|
+
readonly unique?: boolean;
|
|
19
|
+
readonly notNull?: boolean;
|
|
20
20
|
readonly defaultTo?: DefaultValueNode;
|
|
21
21
|
readonly check?: CheckConstraintNode;
|
|
22
|
-
readonly
|
|
22
|
+
readonly generated?: GeneratedNode;
|
|
23
|
+
readonly unsigned?: boolean;
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* @internal
|
|
@@ -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
|
-
|
|
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(
|
|
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(
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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),
|
|
@@ -281,10 +281,11 @@ export class OperationNodeTransformer {
|
|
|
281
281
|
primaryKey: node.primaryKey,
|
|
282
282
|
autoIncrement: node.autoIncrement,
|
|
283
283
|
unique: node.unique,
|
|
284
|
-
|
|
284
|
+
notNull: node.notNull,
|
|
285
|
+
unsigned: node.unsigned,
|
|
285
286
|
defaultTo: this.transformNode(node.defaultTo),
|
|
286
287
|
check: this.transformNode(node.check),
|
|
287
|
-
|
|
288
|
+
generated: this.transformNode(node.generated),
|
|
288
289
|
};
|
|
289
290
|
}
|
|
290
291
|
transformAddColumn(node) {
|
|
@@ -360,7 +361,10 @@ export class OperationNodeTransformer {
|
|
|
360
361
|
kind: 'OnConflictNode',
|
|
361
362
|
columns: this.transformNodeList(node.columns),
|
|
362
363
|
constraint: this.transformNode(node.constraint),
|
|
364
|
+
indexExpression: this.transformNode(node.indexExpression),
|
|
365
|
+
indexWhere: this.transformNode(node.indexWhere),
|
|
363
366
|
updates: this.transformNodeList(node.updates),
|
|
367
|
+
updateWhere: this.transformNode(node.updateWhere),
|
|
364
368
|
doNothing: node.doNothing,
|
|
365
369
|
};
|
|
366
370
|
}
|
|
@@ -559,11 +563,14 @@ export class OperationNodeTransformer {
|
|
|
559
563
|
materialized: node.materialized,
|
|
560
564
|
};
|
|
561
565
|
}
|
|
562
|
-
|
|
566
|
+
transformGenerated(node) {
|
|
563
567
|
return {
|
|
564
|
-
kind: '
|
|
565
|
-
|
|
568
|
+
kind: 'GeneratedNode',
|
|
569
|
+
byDefault: node.byDefault,
|
|
570
|
+
always: node.always,
|
|
571
|
+
identity: node.identity,
|
|
566
572
|
stored: node.stored,
|
|
573
|
+
expression: this.transformNode(node.expression),
|
|
567
574
|
};
|
|
568
575
|
}
|
|
569
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 {
|
|
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
|
|
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
|
-
|
|
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' | '
|
|
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
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
|
-
import { GeneratedPlaceholder } from '../util/type-utils.js';
|
|
3
2
|
import { ParseContext } from './parse-context.js';
|
|
4
3
|
import { ValueExpression } from './value-parser.js';
|
|
5
4
|
import { ValuesNode } from '../operation-node/values-node.js';
|
|
5
|
+
import { NonNullableInsertKeys, NullableInsertKeys, InsertType } from '../util/column-type.js';
|
|
6
6
|
export declare type InsertObject<DB, TB extends keyof DB> = {
|
|
7
|
-
[C in
|
|
7
|
+
[C in NonNullableInsertKeys<DB[TB]>]: ValueExpression<DB, TB, InsertType<DB[TB][C]>>;
|
|
8
|
+
} & {
|
|
9
|
+
[C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]>>;
|
|
8
10
|
};
|
|
9
11
|
export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
|
|
10
|
-
declare type InsertValueExpression<DB, TB extends keyof DB, T> = ValueExpression<DB, TB, T> | GeneratedPlaceholder;
|
|
11
12
|
export declare function parseInsertObjectOrList(ctx: ParseContext, args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
|
|
12
|
-
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
2
|
import { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';
|
|
3
3
|
import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
4
|
-
import { isGeneratedPlaceholder } from '../util/generated-placeholder.js';
|
|
5
4
|
import { freeze, isPrimitive } from '../util/object-utils.js';
|
|
6
5
|
import { parseValueExpression } from './value-parser.js';
|
|
7
6
|
import { ValuesNode } from '../operation-node/values-node.js';
|
|
@@ -20,7 +19,7 @@ function parseColumnNamesAndIndexes(rows) {
|
|
|
20
19
|
for (const row of rows) {
|
|
21
20
|
const cols = Object.keys(row);
|
|
22
21
|
for (const col of cols) {
|
|
23
|
-
if (!columns.has(col) &&
|
|
22
|
+
if (!columns.has(col) && row[col] !== undefined) {
|
|
24
23
|
columns.set(col, columns.size);
|
|
25
24
|
}
|
|
26
25
|
}
|
|
@@ -33,7 +32,7 @@ function parseRowValues(ctx, row, columns) {
|
|
|
33
32
|
for (const col of rowColumns) {
|
|
34
33
|
const columnIdx = columns.get(col);
|
|
35
34
|
const value = row[col];
|
|
36
|
-
if (columnIdx !== undefined
|
|
35
|
+
if (columnIdx !== undefined) {
|
|
37
36
|
rowValues[columnIdx] = value;
|
|
38
37
|
}
|
|
39
38
|
}
|
|
@@ -3,17 +3,18 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
3
3
|
import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
4
4
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
5
|
import { PrimitiveValue } from '../util/object-utils.js';
|
|
6
|
-
import { AnyColumn, AnyColumnWithTable,
|
|
6
|
+
import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
7
7
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
8
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
9
9
|
import { ParseContext } from './parse-context.js';
|
|
10
10
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
11
11
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
12
|
+
import { SelectType } from '../util/column-type.js';
|
|
12
13
|
export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
|
|
13
14
|
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
14
15
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
15
|
-
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE
|
|
16
|
-
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string
|
|
16
|
+
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
|
|
17
|
+
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : PrimitiveValue;
|
|
17
18
|
export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
|
|
18
19
|
export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
|
|
19
20
|
export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
2
2
|
import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
|
-
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable,
|
|
4
|
+
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
import { ParseContext } from './parse-context.js';
|
|
7
7
|
import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
8
|
+
import { Selectable, SelectType } from '../util/column-type.js';
|
|
8
9
|
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedComplexExpression<DB, TB>;
|
|
9
10
|
export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpression<DB, TB> | ReadonlyArray<SelectExpression<DB, TB>>;
|
|
10
11
|
/**
|
|
@@ -15,14 +16,19 @@ export declare type QueryBuilderWithSelection<DB, TB extends keyof DB, O, SE> =
|
|
|
15
16
|
/**
|
|
16
17
|
* `selectAll` output query builder type.
|
|
17
18
|
*/
|
|
18
|
-
export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends keyof DB> = SelectQueryBuilder<DB, TB, O &
|
|
19
|
+
export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends keyof DB> = SelectQueryBuilder<DB, TB, O & AllSelection<DB, S>>;
|
|
19
20
|
export declare type Selection<DB, TB extends keyof DB, SE> = {
|
|
20
|
-
[A in ExtractAliasFromSelectExpression<SE>]: ExtractTypeFromSelectExpression<DB, TB, SE, A
|
|
21
|
+
[A in ExtractAliasFromSelectExpression<SE>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, SE, A>>;
|
|
21
22
|
};
|
|
22
23
|
declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedRawBuilder<any, infer RA> ? RA : SE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : SE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
23
24
|
declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
24
25
|
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : SE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
|
|
25
|
-
declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any
|
|
26
|
+
declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
|
|
27
|
+
declare type AllSelection<DB, TB extends keyof DB> = Selectable<{
|
|
28
|
+
[C in AnyColumn<DB, TB>]: {
|
|
29
|
+
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
|
|
30
|
+
}[TB];
|
|
31
|
+
}>;
|
|
26
32
|
export declare function parseSelectExpressionOrList(ctx: ParseContext, selection: SelectExpressionOrList<any, any>): SelectionNode[];
|
|
27
33
|
export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
|
|
28
34
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
2
|
+
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|
2
3
|
import { ParseContext } from './parse-context.js';
|
|
3
4
|
import { ValueExpression } from './value-parser.js';
|
|
4
5
|
export declare type MutationObject<DB, TB extends keyof DB> = {
|
|
5
|
-
[C in
|
|
6
|
+
[C in UpdateKeys<DB[TB]>]?: ValueExpression<DB, TB, UpdateType<DB[TB][C]>>;
|
|
6
7
|
};
|
|
7
8
|
export declare function parseUpdateObject(ctx: ParseContext, row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
@@ -12,8 +12,8 @@ export interface CamelCasePluginOptions {
|
|
|
12
12
|
upperCase?: boolean;
|
|
13
13
|
/**
|
|
14
14
|
* If true, an underscore is added before each digit when converting
|
|
15
|
-
* camelCase to snake_case. For example `
|
|
16
|
-
* `
|
|
15
|
+
* camelCase to snake_case. For example `foo12Bar => foo_12_bar` and
|
|
16
|
+
* `foo_12_bar => foo12Bar`
|
|
17
17
|
*
|
|
18
18
|
* Defaults to false.
|
|
19
19
|
*/
|
|
@@ -539,7 +539,6 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
539
539
|
* const { id } = await db
|
|
540
540
|
* .insertInto('person')
|
|
541
541
|
* .values({
|
|
542
|
-
* id: db.generated,
|
|
543
542
|
* first_name: 'Jennifer',
|
|
544
543
|
* last_name: 'Aniston'
|
|
545
544
|
* })
|
|
@@ -553,7 +552,6 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
553
552
|
* const { id, first_name } = await db
|
|
554
553
|
* .insertInto('person')
|
|
555
554
|
* .values({
|
|
556
|
-
* id: db.generated,
|
|
557
555
|
* first_name: 'Jennifer',
|
|
558
556
|
* last_name: 'Aniston'
|
|
559
557
|
* })
|
|
@@ -569,7 +567,6 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
569
567
|
* const { id, full_name, first_pet_id } = await db
|
|
570
568
|
* .insertInto('person')
|
|
571
569
|
* .values({
|
|
572
|
-
* id: db.generated,
|
|
573
570
|
* first_name: 'Jennifer',
|
|
574
571
|
* last_name: 'Aniston'
|
|
575
572
|
* })
|