kysely 0.16.1 → 0.16.5
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 +4 -4
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +205 -0
- package/dist/cjs/dialect/mysql/mysql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -205
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +10 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +103 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.js +2 -0
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -103
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +11 -2
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -43
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +10 -2
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/migration/migrator.d.ts +2 -2
- package/dist/cjs/operation-node/primitive-value-list-node.d.ts +2 -3
- package/dist/cjs/operation-node/value-node.d.ts +3 -4
- package/dist/cjs/parser/complex-expression-parser.d.ts +1 -0
- package/dist/cjs/parser/complex-expression-parser.js +5 -1
- package/dist/cjs/parser/default-value-parser.d.ts +2 -3
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.js +4 -3
- package/dist/cjs/parser/reference-parser.d.ts +2 -3
- package/dist/cjs/parser/value-parser.d.ts +2 -3
- package/dist/cjs/parser/value-parser.js +6 -7
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/expression-builder.d.ts +42 -0
- package/dist/cjs/query-builder/expression-builder.js +48 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +16 -0
- package/dist/cjs/query-builder/insert-query-builder.js +16 -0
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +5 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +1 -2
- package/dist/cjs/query-creator.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +30 -4
- package/dist/cjs/schema/alter-table-builder.js +2 -5
- package/dist/cjs/schema/column-definition-builder.d.ts +27 -2
- package/dist/cjs/util/object-utils.d.ts +4 -5
- package/dist/cjs/util/object-utils.js +8 -16
- package/dist/esm/dialect/database-introspector.js +1 -0
- package/dist/esm/dialect/dialect-adapter-base.js +1 -0
- package/dist/esm/dialect/dialect-adapter.js +1 -0
- package/dist/esm/dialect/dialect.js +1 -0
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -0
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +205 -0
- package/dist/esm/dialect/mysql/mysql-dialect-config.js +2 -0
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -205
- package/dist/esm/dialect/mysql/mysql-dialect.js +1 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +12 -3
- package/dist/esm/dialect/mysql/mysql-introspector.js +1 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +1 -0
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +103 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.js +2 -0
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -103
- package/dist/esm/dialect/postgres/postgres-dialect.js +1 -0
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +12 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -0
- package/dist/esm/dialect/postgres/postgres-query-compiler.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -43
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-driver.js +11 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +1 -0
- package/dist/esm/driver/connection-provider.js +1 -0
- package/dist/esm/driver/database-connection.js +1 -0
- package/dist/esm/driver/default-connection-provider.js +1 -0
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +1 -0
- package/dist/esm/driver/single-connection-provider.js +1 -0
- package/dist/esm/dynamic/dynamic-reference-builder.js +1 -0
- package/dist/esm/dynamic/dynamic.js +1 -0
- package/dist/esm/index-nodeless.js +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/kysely.js +1 -0
- package/dist/esm/migration/file-migration-provider.js +1 -0
- package/dist/esm/migration/migrator.d.ts +2 -2
- package/dist/esm/migration/migrator.js +1 -0
- package/dist/esm/operation-node/add-column-node.js +1 -0
- package/dist/esm/operation-node/add-constraint-node.js +1 -0
- package/dist/esm/operation-node/alias-node.js +1 -0
- package/dist/esm/operation-node/alter-column-node.js +1 -0
- package/dist/esm/operation-node/alter-table-node.js +1 -0
- package/dist/esm/operation-node/and-node.js +1 -0
- package/dist/esm/operation-node/check-constraint-node.js +1 -0
- package/dist/esm/operation-node/column-definition-node.js +1 -0
- package/dist/esm/operation-node/column-node.js +1 -0
- package/dist/esm/operation-node/column-update-node.js +1 -0
- package/dist/esm/operation-node/common-table-expression-name-node.js +1 -0
- package/dist/esm/operation-node/common-table-expression-node.js +1 -0
- package/dist/esm/operation-node/constraint-node.js +1 -0
- package/dist/esm/operation-node/create-index-node.js +1 -0
- package/dist/esm/operation-node/create-schema-node.js +1 -0
- package/dist/esm/operation-node/create-table-node.js +1 -0
- package/dist/esm/operation-node/create-view-node.js +1 -0
- package/dist/esm/operation-node/data-type-node.js +1 -0
- package/dist/esm/operation-node/default-value-node.js +1 -0
- package/dist/esm/operation-node/delete-query-node.js +1 -0
- package/dist/esm/operation-node/drop-column-node.js +1 -0
- package/dist/esm/operation-node/drop-constraint-node.js +1 -0
- package/dist/esm/operation-node/drop-index-node.js +1 -0
- package/dist/esm/operation-node/drop-schema-node.js +1 -0
- package/dist/esm/operation-node/drop-table-node.js +1 -0
- package/dist/esm/operation-node/drop-view-node.js +1 -0
- package/dist/esm/operation-node/filter-node.js +1 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.js +1 -0
- package/dist/esm/operation-node/from-node.js +1 -0
- package/dist/esm/operation-node/generated-node.js +1 -0
- package/dist/esm/operation-node/group-by-item-node.js +1 -0
- package/dist/esm/operation-node/group-by-node.js +1 -0
- package/dist/esm/operation-node/having-node.js +1 -0
- package/dist/esm/operation-node/identifier-node.js +1 -0
- package/dist/esm/operation-node/insert-query-node.js +1 -0
- package/dist/esm/operation-node/join-node.js +1 -0
- package/dist/esm/operation-node/limit-node.js +1 -0
- package/dist/esm/operation-node/list-node.js +1 -0
- package/dist/esm/operation-node/modify-column-node.js +1 -0
- package/dist/esm/operation-node/offset-node.js +1 -0
- package/dist/esm/operation-node/on-conflict-node.js +1 -0
- package/dist/esm/operation-node/on-duplicate-key-node.js +1 -0
- package/dist/esm/operation-node/on-node.js +1 -0
- package/dist/esm/operation-node/operation-node-source.js +1 -0
- package/dist/esm/operation-node/operation-node-transformer.js +1 -0
- package/dist/esm/operation-node/operation-node-utils.js +1 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.js +1 -0
- package/dist/esm/operation-node/operator-node.js +1 -0
- package/dist/esm/operation-node/or-node.js +1 -0
- package/dist/esm/operation-node/order-by-item-node.js +1 -0
- package/dist/esm/operation-node/order-by-node.js +1 -0
- package/dist/esm/operation-node/parens-node.js +1 -0
- package/dist/esm/operation-node/primary-constraint-node.js +1 -0
- package/dist/esm/operation-node/primitive-value-list-node.d.ts +2 -3
- package/dist/esm/operation-node/primitive-value-list-node.js +1 -0
- package/dist/esm/operation-node/query-node.js +1 -0
- package/dist/esm/operation-node/raw-node.js +1 -0
- package/dist/esm/operation-node/reference-node.js +1 -0
- package/dist/esm/operation-node/references-node.js +1 -0
- package/dist/esm/operation-node/rename-column-node.js +1 -0
- package/dist/esm/operation-node/returning-node.js +1 -0
- package/dist/esm/operation-node/select-all-node.js +1 -0
- package/dist/esm/operation-node/select-query-node.js +1 -0
- package/dist/esm/operation-node/selection-node.js +1 -0
- package/dist/esm/operation-node/table-node.js +1 -0
- package/dist/esm/operation-node/union-node.js +1 -0
- package/dist/esm/operation-node/unique-constraint-node.js +1 -0
- package/dist/esm/operation-node/update-query-node.js +1 -0
- package/dist/esm/operation-node/value-list-node.js +1 -0
- package/dist/esm/operation-node/value-node.d.ts +3 -4
- package/dist/esm/operation-node/value-node.js +1 -0
- package/dist/esm/operation-node/values-node.js +1 -0
- package/dist/esm/operation-node/where-node.js +1 -0
- package/dist/esm/operation-node/with-node.js +1 -0
- package/dist/esm/parser/complex-expression-parser.d.ts +1 -0
- package/dist/esm/parser/complex-expression-parser.js +4 -0
- package/dist/esm/parser/data-type-parser.js +1 -0
- package/dist/esm/parser/default-value-parser.d.ts +2 -3
- package/dist/esm/parser/default-value-parser.js +3 -2
- package/dist/esm/parser/filter-parser.js +1 -0
- package/dist/esm/parser/group-by-parser.js +1 -0
- package/dist/esm/parser/insert-values-parser.js +6 -4
- package/dist/esm/parser/join-parser.js +1 -0
- package/dist/esm/parser/order-by-parser.js +1 -0
- package/dist/esm/parser/parse-context.js +1 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.js +2 -1
- package/dist/esm/parser/returning-parser.js +1 -0
- package/dist/esm/parser/select-parser.js +1 -0
- package/dist/esm/parser/table-parser.js +1 -0
- package/dist/esm/parser/union-parser.js +1 -0
- package/dist/esm/parser/update-set-parser.js +1 -0
- package/dist/esm/parser/value-parser.d.ts +2 -3
- package/dist/esm/parser/value-parser.js +9 -9
- package/dist/esm/parser/with-parser.js +1 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +3 -2
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -0
- package/dist/esm/plugin/camel-case/camel-case.js +1 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +1 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +1 -0
- package/dist/esm/plugin/kysely-plugin.js +1 -0
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +1 -0
- package/dist/esm/query-builder/delete-query-builder.js +1 -0
- package/dist/esm/query-builder/delete-result.js +1 -0
- package/dist/esm/query-builder/expression-builder.d.ts +42 -0
- package/dist/esm/query-builder/expression-builder.js +49 -0
- package/dist/esm/query-builder/function-builder.js +1 -0
- package/dist/esm/query-builder/having-interface.js +1 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +16 -0
- package/dist/esm/query-builder/insert-query-builder.js +17 -0
- package/dist/esm/query-builder/insert-result.js +1 -0
- package/dist/esm/query-builder/join-builder.js +1 -0
- package/dist/esm/query-builder/join-interface.js +1 -0
- package/dist/esm/query-builder/no-result-error.js +1 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +5 -3
- package/dist/esm/query-builder/on-conflict-builder.js +1 -0
- package/dist/esm/query-builder/returning-interface.js +1 -0
- package/dist/esm/query-builder/select-query-builder.js +1 -0
- package/dist/esm/query-builder/update-query-builder.js +1 -0
- package/dist/esm/query-builder/update-result.js +1 -0
- package/dist/esm/query-builder/where-interface.js +1 -0
- package/dist/esm/query-compiler/compiled-query.js +1 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +1 -2
- package/dist/esm/query-compiler/default-query-compiler.js +1 -0
- package/dist/esm/query-compiler/query-compiler.js +1 -0
- package/dist/esm/query-creator.d.ts +1 -1
- package/dist/esm/query-creator.js +1 -0
- package/dist/esm/query-executor/default-query-executor.js +1 -0
- package/dist/esm/query-executor/noop-query-executor.js +1 -0
- package/dist/esm/query-executor/query-executor.js +1 -0
- package/dist/esm/raw-builder/raw-builder.js +1 -0
- package/dist/esm/schema/alter-table-builder.d.ts +30 -4
- package/dist/esm/schema/alter-table-builder.js +3 -5
- package/dist/esm/schema/column-definition-builder.d.ts +27 -2
- package/dist/esm/schema/column-definition-builder.js +1 -0
- package/dist/esm/schema/create-index-builder.js +1 -0
- package/dist/esm/schema/create-schema-builder.js +1 -0
- package/dist/esm/schema/create-table-builder.js +1 -0
- package/dist/esm/schema/create-view-builder.js +1 -0
- package/dist/esm/schema/drop-index-builder.js +1 -0
- package/dist/esm/schema/drop-schema-builder.js +1 -0
- package/dist/esm/schema/drop-table-builder.js +1 -0
- package/dist/esm/schema/drop-view-builder.js +1 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +1 -0
- package/dist/esm/schema/schema.js +1 -0
- package/dist/esm/util/assert.js +1 -0
- package/dist/esm/util/column-type.js +1 -0
- package/dist/esm/util/compilable.js +1 -0
- package/dist/esm/util/log.js +1 -0
- package/dist/esm/util/object-utils.d.ts +4 -5
- package/dist/esm/util/object-utils.js +6 -12
- package/dist/esm/util/performance-now.js +1 -0
- package/dist/esm/util/prevent-await.js +1 -0
- package/dist/esm/util/private-symbols.js +1 -0
- package/dist/esm/util/query-id.js +1 -0
- package/dist/esm/util/random-string.js +1 -0
- package/dist/esm/util/type-utils.js +1 -0
- package/package.json +3 -2
- package/.prettierignore +0 -1
- package/dist/cjs/util/dynamic-import.d.ts +0 -2
- package/dist/cjs/util/dynamic-import.js +0 -32
- package/dist/esm/util/dynamic-import.d.ts +0 -2
- package/dist/esm/util/dynamic-import.js +0 -27
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
2
|
export interface ValueNode extends OperationNode {
|
|
4
3
|
readonly kind: 'ValueNode';
|
|
5
|
-
readonly value:
|
|
4
|
+
readonly value: unknown;
|
|
6
5
|
readonly immediate?: boolean;
|
|
7
6
|
}
|
|
8
7
|
/**
|
|
@@ -10,6 +9,6 @@ export interface ValueNode extends OperationNode {
|
|
|
10
9
|
*/
|
|
11
10
|
export declare const ValueNode: Readonly<{
|
|
12
11
|
is(node: OperationNode): node is ValueNode;
|
|
13
|
-
create(value:
|
|
14
|
-
createImmediate(value:
|
|
12
|
+
create(value: unknown): ValueNode;
|
|
13
|
+
createImmediate(value: unknown): ValueNode;
|
|
15
14
|
}>;
|
|
@@ -7,3 +7,4 @@ export declare type ComplexExpression<DB, TB extends keyof DB> = AnySelectQueryB
|
|
|
7
7
|
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
|
|
8
8
|
export declare function parseComplexExpression(ctx: ParseContext, exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
|
|
9
9
|
export declare function parseAliasedComplexExpression(ctx: ParseContext, exp: AliasedComplexExpression<any, any>): AliasNode;
|
|
10
|
+
export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./complex-expression-parser.d.ts" />
|
|
1
2
|
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
3
|
import { isFunction } from '../util/object-utils.js';
|
|
3
4
|
export function parseComplexExpression(ctx, exp) {
|
|
@@ -18,3 +19,6 @@ export function parseAliasedComplexExpression(ctx, exp) {
|
|
|
18
19
|
}
|
|
19
20
|
throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
|
|
20
21
|
}
|
|
22
|
+
export function isComplexExpression(obj) {
|
|
23
|
+
return isOperationNodeSource(obj) || isFunction(obj);
|
|
24
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
2
2
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export declare type DefaultValueExpression = PrimitiveValue | AnyRawBuilder;
|
|
3
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
|
+
export declare type DefaultValueExpression = unknown | RawBuilder;
|
|
6
5
|
export declare function parseDefaultValueExpression(value: DefaultValueExpression): ValueNode | RawNode;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="./default-value-parser.d.ts" />
|
|
2
2
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
3
4
|
export function parseDefaultValueExpression(value) {
|
|
4
|
-
return
|
|
5
|
+
return value instanceof RawBuilder
|
|
5
6
|
? value.toOperationNode()
|
|
6
7
|
: ValueNode.createImmediate(value);
|
|
7
8
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./filter-parser.d.ts" />
|
|
1
2
|
import { FilterNode } from '../operation-node/filter-node.js';
|
|
2
3
|
import { freeze, isBoolean, isFunction, isNull, isString, } from '../util/object-utils.js';
|
|
3
4
|
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/// <reference types="./insert-values-parser.d.ts" />
|
|
1
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
3
|
import { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';
|
|
3
4
|
import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
4
|
-
import { freeze
|
|
5
|
+
import { freeze } from '../util/object-utils.js';
|
|
5
6
|
import { parseValueExpression } from './value-parser.js';
|
|
6
7
|
import { ValuesNode } from '../operation-node/values-node.js';
|
|
8
|
+
import { isComplexExpression } from './complex-expression-parser.js';
|
|
7
9
|
export function parseInsertObjectOrList(ctx, args) {
|
|
8
10
|
return parseInsertColumnsAndValues(ctx, Array.isArray(args) ? args : [args]);
|
|
9
11
|
}
|
|
@@ -36,8 +38,8 @@ function parseRowValues(ctx, row, columns) {
|
|
|
36
38
|
rowValues[columnIdx] = value;
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
|
-
if (rowValues.
|
|
40
|
-
return
|
|
41
|
+
if (rowValues.some(isComplexExpression)) {
|
|
42
|
+
return ValueListNode.create(rowValues.map((it) => parseValueExpression(ctx, it)));
|
|
41
43
|
}
|
|
42
|
-
return
|
|
44
|
+
return PrimitiveValueListNode.create(rowValues);
|
|
43
45
|
}
|
|
@@ -2,7 +2,6 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
2
2
|
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
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
6
5
|
import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
7
6
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
7
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
@@ -13,8 +12,8 @@ import { SelectType } from '../util/column-type.js';
|
|
|
13
12
|
export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
|
|
14
13
|
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
15
14
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
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> :
|
|
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> :
|
|
15
|
+
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> : unknown;
|
|
16
|
+
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> : unknown;
|
|
18
17
|
export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
|
|
19
18
|
export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
|
|
20
19
|
export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
/// <reference types="./reference-parser.d.ts" />
|
|
1
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
3
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
4
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
4
5
|
import { TableNode } from '../operation-node/table-node.js';
|
|
5
|
-
import { isReadonlyArray, isString
|
|
6
|
+
import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
6
7
|
import { parseComplexExpression, } from './complex-expression-parser.js';
|
|
7
8
|
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
8
9
|
export function parseReferenceExpressionOrList(ctx, arg) {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
2
2
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
4
3
|
import { ParseContext } from './parse-context.js';
|
|
5
4
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
6
5
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
7
6
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
8
7
|
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
|
|
9
8
|
export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
10
|
-
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any,
|
|
11
|
-
export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any,
|
|
9
|
+
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
|
|
10
|
+
export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
/// <reference types="./value-parser.d.ts" />
|
|
1
2
|
import { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';
|
|
2
3
|
import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
3
4
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
4
|
-
import {
|
|
5
|
-
import { parseComplexExpression, } from './complex-expression-parser.js';
|
|
5
|
+
import { isReadonlyArray } from '../util/object-utils.js';
|
|
6
|
+
import { parseComplexExpression, isComplexExpression, } from './complex-expression-parser.js';
|
|
6
7
|
export function parseValueExpressionOrList(ctx, arg) {
|
|
7
8
|
if (isReadonlyArray(arg)) {
|
|
8
9
|
return parseValueExpressionList(ctx, arg);
|
|
@@ -12,15 +13,14 @@ export function parseValueExpressionOrList(ctx, arg) {
|
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
export function parseValueExpression(ctx, exp) {
|
|
15
|
-
if (
|
|
16
|
-
return
|
|
16
|
+
if (isComplexExpression(exp)) {
|
|
17
|
+
return parseComplexExpression(ctx, exp);
|
|
17
18
|
}
|
|
18
|
-
return
|
|
19
|
+
return ValueNode.create(exp);
|
|
19
20
|
}
|
|
20
21
|
function parseValueExpressionList(ctx, arg) {
|
|
21
|
-
if (arg.
|
|
22
|
-
|
|
23
|
-
return PrimitiveValueListNode.create(arg);
|
|
22
|
+
if (arg.some(isComplexExpression)) {
|
|
23
|
+
return ValueListNode.create(arg.map((it) => parseValueExpression(ctx, it)));
|
|
24
24
|
}
|
|
25
|
-
return
|
|
25
|
+
return PrimitiveValueListNode.create(arg);
|
|
26
26
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./with-parser.d.ts" />
|
|
1
2
|
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
2
3
|
import { CommonTableExpressionNameNode } from '../operation-node/common-table-expression-name-node.js';
|
|
3
4
|
export function parseCommonTableExpression(ctx, name, expression) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="./camel-case-plugin.d.ts" />
|
|
2
|
+
import { isBuffer, isDate, isObject } from '../../util/object-utils.js';
|
|
2
3
|
import { SnakeCaseTransformer } from './camel-case-transformer.js';
|
|
3
4
|
import { createCamelCaseMapper, createSnakeCaseMapper, } from './camel-case.js';
|
|
4
5
|
/**
|
|
@@ -107,5 +108,5 @@ export class CamelCasePlugin {
|
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
function canMap(obj) {
|
|
110
|
-
return isObject(obj) && !(obj
|
|
111
|
+
return isObject(obj) && !isDate(obj) && !isBuffer(obj);
|
|
111
112
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./with-schema-transformer.d.ts" />
|
|
1
2
|
import { AliasNode } from '../../operation-node/alias-node.js';
|
|
2
3
|
import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
|
|
3
4
|
import { TableNode } from '../../operation-node/table-node.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./delete-query-builder.d.ts" />
|
|
1
2
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
2
3
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
3
4
|
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|
|
@@ -3,6 +3,8 @@ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from
|
|
|
3
3
|
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
4
4
|
import { ParseContext } from '../parser/parse-context.js';
|
|
5
5
|
import { FunctionBuilder } from './function-builder.js';
|
|
6
|
+
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
7
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
6
8
|
export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
7
9
|
#private;
|
|
8
10
|
constructor(props: ExpressionBuilderProps);
|
|
@@ -44,6 +46,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
44
46
|
* The query builder returned by this method is typed in a way that you can refer to
|
|
45
47
|
* all tables of the parent query in addition to the subquery's tables.
|
|
46
48
|
*
|
|
49
|
+
* This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
|
|
50
|
+
*
|
|
47
51
|
* ### Examples
|
|
48
52
|
*
|
|
49
53
|
* This example shows that you can refer to both `pet.owner_id` and `person.id`
|
|
@@ -86,6 +90,44 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
86
90
|
* See {@link QueryCreator.withSchema}
|
|
87
91
|
*/
|
|
88
92
|
withSchema(schema: string): ExpressionBuilder<DB, TB>;
|
|
93
|
+
/**
|
|
94
|
+
* See {@link QueryCreator.raw}.
|
|
95
|
+
*/
|
|
96
|
+
raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
|
|
97
|
+
/**
|
|
98
|
+
* This can be used to reference columns.
|
|
99
|
+
*
|
|
100
|
+
* ### Examples
|
|
101
|
+
*
|
|
102
|
+
* In the next example we use the `ref` method to reference
|
|
103
|
+
* columns of the virtual table `excluded` in a type-safe way
|
|
104
|
+
* to create an upsert operation:
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* db.insertInto('person')
|
|
108
|
+
* .values(person)
|
|
109
|
+
* .onConflict(oc => oc
|
|
110
|
+
* .column('id')
|
|
111
|
+
* .doUpdateSet({
|
|
112
|
+
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
113
|
+
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
114
|
+
* })
|
|
115
|
+
* )
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* In the next example we use `ref` in a raw expression. Unless you
|
|
119
|
+
* want to be as type-safe as possible, this is probably overkill:
|
|
120
|
+
*
|
|
121
|
+
* ```ts
|
|
122
|
+
* db.update('pet').set({
|
|
123
|
+
* name: (eb) => eb.raw('concat(?, ?)', [
|
|
124
|
+
* eb.ref('pet.name'),
|
|
125
|
+
* suffix,
|
|
126
|
+
* ])
|
|
127
|
+
* })
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
89
131
|
}
|
|
90
132
|
export interface ExpressionBuilderProps {
|
|
91
133
|
readonly executor: NoopQueryExecutor;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./expression-builder.d.ts" />
|
|
1
2
|
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
3
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
3
4
|
import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|
@@ -5,6 +6,7 @@ import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
|
|
|
5
6
|
import { createQueryId } from '../util/query-id.js';
|
|
6
7
|
import { freeze } from '../util/object-utils.js';
|
|
7
8
|
import { FunctionBuilder } from './function-builder.js';
|
|
9
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
10
|
export class ExpressionBuilder {
|
|
9
11
|
#props;
|
|
10
12
|
constructor(props) {
|
|
@@ -61,4 +63,51 @@ export class ExpressionBuilder {
|
|
|
61
63
|
executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
|
|
62
64
|
});
|
|
63
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* See {@link QueryCreator.raw}.
|
|
68
|
+
*/
|
|
69
|
+
raw(sql, parameters) {
|
|
70
|
+
return new RawBuilder({
|
|
71
|
+
queryId: createQueryId(),
|
|
72
|
+
executor: this.#props.executor,
|
|
73
|
+
sql,
|
|
74
|
+
parameters,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* This can be used to reference columns.
|
|
79
|
+
*
|
|
80
|
+
* ### Examples
|
|
81
|
+
*
|
|
82
|
+
* In the next example we use the `ref` method to reference
|
|
83
|
+
* columns of the virtual table `excluded` in a type-safe way
|
|
84
|
+
* to create an upsert operation:
|
|
85
|
+
*
|
|
86
|
+
* ```ts
|
|
87
|
+
* db.insertInto('person')
|
|
88
|
+
* .values(person)
|
|
89
|
+
* .onConflict(oc => oc
|
|
90
|
+
* .column('id')
|
|
91
|
+
* .doUpdateSet({
|
|
92
|
+
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
93
|
+
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
94
|
+
* })
|
|
95
|
+
* )
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* In the next example we use `ref` in a raw expression. Unless you
|
|
99
|
+
* want to be as type-safe as possible, this is probably overkill:
|
|
100
|
+
*
|
|
101
|
+
* ```ts
|
|
102
|
+
* db.update('pet').set({
|
|
103
|
+
* name: (eb) => eb.raw('concat(?, ?)', [
|
|
104
|
+
* eb.ref('pet.name'),
|
|
105
|
+
* suffix,
|
|
106
|
+
* ])
|
|
107
|
+
* })
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
ref(reference) {
|
|
111
|
+
return this.raw('??', [reference]);
|
|
112
|
+
}
|
|
64
113
|
}
|
|
@@ -342,6 +342,22 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
342
342
|
* values ($1, $2)
|
|
343
343
|
* on conflict ("name") do nothing
|
|
344
344
|
* ```
|
|
345
|
+
*
|
|
346
|
+
* You can refer to the columns of the virtual `excluded` table
|
|
347
|
+
* in a type-safe way using a callback and the `ref` method of
|
|
348
|
+
* `ExpressionBuilder`:
|
|
349
|
+
*
|
|
350
|
+
* ```ts
|
|
351
|
+
* db.insertInto('person')
|
|
352
|
+
* .values(person)
|
|
353
|
+
* .onConflict(oc => oc
|
|
354
|
+
* .column('id')
|
|
355
|
+
* .doUpdateSet({
|
|
356
|
+
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
357
|
+
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
358
|
+
* })
|
|
359
|
+
* )
|
|
360
|
+
* ```
|
|
345
361
|
*/
|
|
346
362
|
onConflict(callback: (builder: OnConflictBuilder<DB, TB>) => OnConflictDoNothingBuilder<DB, TB> | OnConflictUpdateBuilder<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
347
363
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./insert-query-builder.d.ts" />
|
|
1
2
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
2
3
|
import { parseInsertObjectOrList, } from '../parser/insert-values-parser.js';
|
|
3
4
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
@@ -245,6 +246,22 @@ export class InsertQueryBuilder {
|
|
|
245
246
|
* values ($1, $2)
|
|
246
247
|
* on conflict ("name") do nothing
|
|
247
248
|
* ```
|
|
249
|
+
*
|
|
250
|
+
* You can refer to the columns of the virtual `excluded` table
|
|
251
|
+
* in a type-safe way using a callback and the `ref` method of
|
|
252
|
+
* `ExpressionBuilder`:
|
|
253
|
+
*
|
|
254
|
+
* ```ts
|
|
255
|
+
* db.insertInto('person')
|
|
256
|
+
* .values(person)
|
|
257
|
+
* .onConflict(oc => oc
|
|
258
|
+
* .column('id')
|
|
259
|
+
* .doUpdateSet({
|
|
260
|
+
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
261
|
+
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
262
|
+
* })
|
|
263
|
+
* )
|
|
264
|
+
* ```
|
|
248
265
|
*/
|
|
249
266
|
onConflict(callback) {
|
|
250
267
|
return new InsertQueryBuilder({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./join-builder.d.ts" />
|
|
1
2
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
2
3
|
import { parseExistFilter, parseNotExistFilter, parseOnFilter, parseReferenceFilter, } from '../parser/filter-parser.js';
|
|
3
4
|
import { freeze } from '../util/object-utils.js';
|
|
@@ -377,14 +377,16 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|
|
377
377
|
* do update set "first_name" = $3
|
|
378
378
|
* ```
|
|
379
379
|
*/
|
|
380
|
-
doUpdateSet(updates: MutationObject<DB, TB
|
|
381
|
-
[K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
|
|
382
|
-
}, TB | 'excluded'>;
|
|
380
|
+
doUpdateSet(updates: MutationObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|
383
381
|
}
|
|
384
382
|
export interface OnConflictBuilderProps {
|
|
385
383
|
readonly onConflictNode: OnConflictNode;
|
|
386
384
|
readonly parseContext: ParseContext;
|
|
387
385
|
}
|
|
386
|
+
export declare type OnConflictDatabase<DB, TB extends keyof DB> = {
|
|
387
|
+
[K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
|
|
388
|
+
};
|
|
389
|
+
export declare type OnConflictTables<TB> = TB | 'excluded';
|
|
388
390
|
export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
389
391
|
#private;
|
|
390
392
|
constructor(props: OnConflictBuilderProps);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="./update-query-builder.d.ts" />
|
|
1
2
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
2
3
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
3
4
|
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|