kysely 0.7.1 → 0.7.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 +24 -19
- package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +1 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +0 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -2
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -4
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +0 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -2
- package/dist/cjs/driver/database-connection.d.ts +2 -1
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/single-connection-provider.d.ts +0 -1
- package/dist/cjs/driver/single-connection-provider.js +2 -2
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/kysely.d.ts +7 -6
- package/dist/cjs/kysely.js +8 -6
- package/dist/cjs/migration/migration.js +11 -10
- package/dist/cjs/operation-node/alter-column-node.d.ts +2 -2
- package/dist/cjs/operation-node/alter-column-node.js +2 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
- package/dist/cjs/operation-node/alter-table-node.js +2 -2
- package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
- package/dist/cjs/operation-node/column-definition-node.js +2 -2
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-index-node.js +2 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
- package/dist/cjs/operation-node/create-table-node.js +1 -5
- package/dist/cjs/operation-node/drop-index-node.d.ts +3 -3
- package/dist/cjs/operation-node/drop-index-node.js +2 -2
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +5 -2
- package/dist/cjs/operation-node/insert-query-node.js +2 -9
- package/dist/cjs/operation-node/join-node.d.ts +1 -0
- package/dist/cjs/operation-node/join-node.js +8 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +2 -2
- package/dist/cjs/operation-node/on-conflict-node.js +2 -2
- package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-duplicate-key-node.js +18 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +12 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/references-node.d.ts +5 -3
- package/dist/cjs/operation-node/references-node.js +6 -0
- package/dist/cjs/operation-node/table-node.js +2 -2
- package/dist/cjs/parser/data-type-parser.d.ts +5 -0
- package/dist/cjs/parser/data-type-parser.js +11 -0
- package/dist/cjs/parser/default-value-parser.d.ts +6 -0
- package/dist/cjs/parser/default-value-parser.js +11 -0
- package/dist/cjs/parser/filter-parser.d.ts +2 -2
- package/dist/cjs/parser/filter-parser.js +34 -36
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +9 -11
- package/dist/cjs/parser/parse-context.d.ts +34 -7
- package/dist/cjs/parser/parse-context.js +42 -34
- package/dist/cjs/parser/reference-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.js +16 -12
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +4 -5
- package/dist/cjs/parser/table-parser.js +11 -6
- package/dist/cjs/parser/update-set-parser.js +1 -1
- package/dist/cjs/parser/value-parser.js +1 -1
- package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
- package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
- package/dist/cjs/query-builder/join-builder.d.ts +2 -2
- package/dist/cjs/query-builder/join-builder.js +8 -12
- package/dist/cjs/query-builder/query-builder.d.ts +47 -8
- package/dist/cjs/query-builder/query-builder.js +163 -91
- package/dist/cjs/query-builder/type-utils.d.ts +5 -5
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +26 -6
- package/dist/cjs/query-creator.d.ts +2 -2
- package/dist/cjs/query-creator.js +8 -12
- package/dist/cjs/schema/alter-table-builder.d.ts +31 -8
- package/dist/cjs/schema/alter-table-builder.js +80 -7
- package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
- package/dist/cjs/schema/column-definition-builder.js +11 -6
- package/dist/cjs/schema/create-index-builder.d.ts +5 -5
- package/dist/cjs/schema/create-index-builder.js +19 -28
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
- package/dist/cjs/schema/create-schema-builder.js +9 -13
- package/dist/cjs/schema/create-table-builder.d.ts +22 -10
- package/dist/cjs/schema/create-table-builder.js +41 -34
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-index-builder.js +11 -16
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-schema-builder.js +9 -13
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-table-builder.js +9 -13
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
- package/dist/cjs/transformers/with-schema-transformer.d.ts +0 -5
- package/dist/cjs/transformers/with-schema-transformer.js +21 -21
- package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +1 -0
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +0 -1
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -2
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -4
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -18
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +0 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +2 -2
- package/dist/esm/driver/database-connection.d.ts +2 -1
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/single-connection-provider.d.ts +0 -1
- package/dist/esm/driver/single-connection-provider.js +2 -2
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +7 -6
- package/dist/esm/kysely.js +8 -6
- package/dist/esm/migration/migration.js +12 -11
- package/dist/esm/operation-node/alter-column-node.d.ts +2 -2
- package/dist/esm/operation-node/alter-column-node.js +2 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
- package/dist/esm/operation-node/alter-table-node.js +2 -2
- package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
- package/dist/esm/operation-node/column-definition-node.js +2 -2
- package/dist/esm/operation-node/create-index-node.d.ts +2 -2
- package/dist/esm/operation-node/create-index-node.js +2 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -1
- package/dist/esm/operation-node/create-table-node.js +1 -5
- package/dist/esm/operation-node/drop-index-node.d.ts +3 -3
- package/dist/esm/operation-node/drop-index-node.js +2 -2
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +5 -2
- package/dist/esm/operation-node/insert-query-node.js +2 -9
- package/dist/esm/operation-node/join-node.d.ts +1 -0
- package/dist/esm/operation-node/join-node.js +8 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +2 -2
- package/dist/esm/operation-node/on-conflict-node.js +2 -2
- package/dist/esm/operation-node/on-duplicate-key-node.d.ts +14 -0
- package/dist/esm/operation-node/on-duplicate-key-node.js +15 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +12 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/references-node.d.ts +5 -3
- package/dist/esm/operation-node/references-node.js +6 -0
- package/dist/esm/operation-node/table-node.js +2 -2
- package/dist/esm/parser/data-type-parser.d.ts +5 -0
- package/dist/esm/parser/data-type-parser.js +7 -0
- package/dist/esm/parser/default-value-parser.d.ts +6 -0
- package/dist/esm/parser/default-value-parser.js +7 -0
- package/dist/esm/parser/filter-parser.d.ts +2 -2
- package/dist/esm/parser/filter-parser.js +31 -33
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -9
- package/dist/esm/parser/parse-context.d.ts +34 -7
- package/dist/esm/parser/parse-context.js +40 -32
- package/dist/esm/parser/reference-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.js +16 -12
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +3 -3
- package/dist/esm/parser/table-parser.js +11 -6
- package/dist/esm/parser/update-set-parser.js +1 -1
- package/dist/esm/parser/value-parser.js +1 -1
- package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
- package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
- package/dist/esm/query-builder/join-builder.d.ts +2 -2
- package/dist/esm/query-builder/join-builder.js +9 -13
- package/dist/esm/query-builder/query-builder.d.ts +47 -8
- package/dist/esm/query-builder/query-builder.js +165 -93
- package/dist/esm/query-builder/type-utils.d.ts +5 -5
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -1
- package/dist/esm/query-compiler/default-query-compiler.js +27 -7
- package/dist/esm/query-creator.d.ts +2 -2
- package/dist/esm/query-creator.js +8 -12
- package/dist/esm/schema/alter-table-builder.d.ts +31 -8
- package/dist/esm/schema/alter-table-builder.js +78 -6
- package/dist/esm/schema/column-definition-builder.d.ts +10 -4
- package/dist/esm/schema/column-definition-builder.js +12 -7
- package/dist/esm/schema/create-index-builder.d.ts +5 -5
- package/dist/esm/schema/create-index-builder.js +19 -28
- package/dist/esm/schema/create-schema-builder.d.ts +5 -5
- package/dist/esm/schema/create-schema-builder.js +9 -13
- package/dist/esm/schema/create-table-builder.d.ts +22 -10
- package/dist/esm/schema/create-table-builder.js +41 -34
- package/dist/esm/schema/drop-index-builder.d.ts +5 -5
- package/dist/esm/schema/drop-index-builder.js +11 -16
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
- package/dist/esm/schema/drop-schema-builder.js +9 -13
- package/dist/esm/schema/drop-table-builder.d.ts +5 -5
- package/dist/esm/schema/drop-table-builder.js +9 -13
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
- package/dist/esm/transformers/with-schema-transformer.d.ts +0 -5
- package/dist/esm/transformers/with-schema-transformer.js +21 -21
- package/package.json +1 -1
|
@@ -18,13 +18,13 @@ function parseSelectExpression(ctx, selection) {
|
|
|
18
18
|
return SelectionNode.create(selection.toOperationNode());
|
|
19
19
|
}
|
|
20
20
|
else if (isFunction(selection)) {
|
|
21
|
-
return SelectionNode.create(selection(ctx.
|
|
21
|
+
return SelectionNode.create(selection(ctx.createExpressionBuilder()).toOperationNode());
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
24
|
throw new Error(`invalid value passed to select method: ${JSON.stringify(selection)}`);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
export function
|
|
27
|
+
export function parseSelectAll(table) {
|
|
28
28
|
if (!table) {
|
|
29
29
|
return [SelectionNode.createSelectAll()];
|
|
30
30
|
}
|
|
@@ -35,7 +35,7 @@ export function parseSelectAllArgs(table) {
|
|
|
35
35
|
return [parseSelectAllArg(table)];
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
function parseSelectAllArg(table) {
|
|
39
39
|
if (isString(table)) {
|
|
40
40
|
return SelectionNode.createSelectAllFromTable(table);
|
|
41
41
|
}
|
|
@@ -18,27 +18,32 @@ export function parseTableExpression(ctx, table) {
|
|
|
18
18
|
return table.toOperationNode();
|
|
19
19
|
}
|
|
20
20
|
else if (isFunction(table)) {
|
|
21
|
-
return table(ctx.
|
|
21
|
+
return table(ctx.createExpressionBuilder()).toOperationNode();
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
24
|
throw new Error(`invalid table expression ${JSON.stringify(table)}`);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
export function parseAliasedTable(from) {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
28
|
+
const ALIAS_SEPARATOR = ' as ';
|
|
29
|
+
if (from.includes(ALIAS_SEPARATOR)) {
|
|
30
|
+
const [table, alias] = from.split(ALIAS_SEPARATOR).map(trim);
|
|
30
31
|
return AliasNode.create(parseTable(table), alias);
|
|
31
32
|
}
|
|
32
33
|
else {
|
|
33
|
-
return parseTable(
|
|
34
|
+
return parseTable(from);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
export function parseTable(from) {
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
const SCHEMA_SEPARATOR = '.';
|
|
39
|
+
if (from.includes(SCHEMA_SEPARATOR)) {
|
|
40
|
+
const [schema, table] = from.split(SCHEMA_SEPARATOR).map(trim);
|
|
39
41
|
return TableNode.createWithSchema(schema, table);
|
|
40
42
|
}
|
|
41
43
|
else {
|
|
42
44
|
return TableNode.create(from);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
47
|
+
function trim(str) {
|
|
48
|
+
return str.trim();
|
|
49
|
+
}
|
|
@@ -20,7 +20,7 @@ export function parseMutationValueExpression(ctx, value) {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
else if (isFunction(value)) {
|
|
23
|
-
const node = value(ctx.
|
|
23
|
+
const node = value(ctx.createExpressionBuilder()).toOperationNode();
|
|
24
24
|
if (!QueryNode.isMutating(node)) {
|
|
25
25
|
return node;
|
|
26
26
|
}
|
|
@@ -24,7 +24,7 @@ export function parseValueExpression(ctx, arg) {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
else if (isFunction(arg)) {
|
|
27
|
-
const node = arg(ctx.
|
|
27
|
+
const node = arg(ctx.createExpressionBuilder()).toOperationNode();
|
|
28
28
|
if (!QueryNode.isMutating(node)) {
|
|
29
29
|
return node;
|
|
30
30
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { TableExpression, QueryBuilderWithTable } from '../parser/table-parser.js';
|
|
2
2
|
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
3
|
-
import {
|
|
4
|
-
export declare class
|
|
3
|
+
import { ParseContext } from '../parser/parse-context.js';
|
|
4
|
+
export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
5
5
|
#private;
|
|
6
|
-
constructor(props:
|
|
6
|
+
constructor(props: ExpressionBuilderProps);
|
|
7
7
|
/**
|
|
8
8
|
* Creates a subquery.
|
|
9
9
|
*
|
|
@@ -50,9 +50,9 @@ export declare class SubQueryBuilder<DB, TB extends keyof DB> {
|
|
|
50
50
|
/**
|
|
51
51
|
* See {@link QueryCreator.withSchema}
|
|
52
52
|
*/
|
|
53
|
-
withSchema(schema: string):
|
|
53
|
+
withSchema(schema: string): ExpressionBuilder<DB, TB>;
|
|
54
54
|
}
|
|
55
|
-
export interface
|
|
56
|
-
executor: NoopQueryExecutor;
|
|
57
|
-
|
|
55
|
+
export interface ExpressionBuilderProps {
|
|
56
|
+
readonly executor: NoopQueryExecutor;
|
|
57
|
+
readonly parseContext: ParseContext;
|
|
58
58
|
}
|
|
@@ -4,8 +4,7 @@ import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|
|
4
4
|
import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
|
|
5
5
|
import { createQueryId } from '../util/query-id.js';
|
|
6
6
|
import { freeze } from '../util/object-utils.js';
|
|
7
|
-
|
|
8
|
-
export class SubQueryBuilder {
|
|
7
|
+
export class ExpressionBuilder {
|
|
9
8
|
#props;
|
|
10
9
|
constructor(props) {
|
|
11
10
|
this.#props = freeze(props);
|
|
@@ -14,20 +13,17 @@ export class SubQueryBuilder {
|
|
|
14
13
|
return new QueryBuilder({
|
|
15
14
|
queryId: createQueryId(),
|
|
16
15
|
executor: this.#props.executor,
|
|
17
|
-
|
|
18
|
-
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#parseContext, table)),
|
|
16
|
+
parseContext: this.#props.parseContext,
|
|
17
|
+
queryNode: SelectQueryNode.create(parseTableExpressionOrList(this.#props.parseContext, table)),
|
|
19
18
|
});
|
|
20
19
|
}
|
|
21
20
|
/**
|
|
22
21
|
* See {@link QueryCreator.withSchema}
|
|
23
22
|
*/
|
|
24
23
|
withSchema(schema) {
|
|
25
|
-
return new
|
|
24
|
+
return new ExpressionBuilder({
|
|
26
25
|
...this.#props,
|
|
27
26
|
executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
|
-
get #parseContext() {
|
|
31
|
-
return createParseContext(this.#props.adapter);
|
|
32
|
-
}
|
|
33
29
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DialectAdapter } from '../dialect/dialect-adapter.js';
|
|
2
1
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
3
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
3
|
import { ExistsExpression, FilterOperator } from '../parser/filter-parser.js';
|
|
4
|
+
import { ParseContext } from '../parser/parse-context.js';
|
|
5
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
6
|
import { ValueExpressionOrList } from '../parser/value-parser.js';
|
|
7
7
|
export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
@@ -69,5 +69,5 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
69
69
|
}
|
|
70
70
|
export interface JoinBuilderProps {
|
|
71
71
|
readonly joinNode: JoinNode;
|
|
72
|
-
readonly
|
|
72
|
+
readonly parseContext: ParseContext;
|
|
73
73
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
2
|
-
import {
|
|
3
|
-
import { createParseContext } from '../parser/parse-context.js';
|
|
2
|
+
import { parseExistFilter, parseNotExistFilter, parseOnFilter, parseReferenceFilter, } from '../parser/filter-parser.js';
|
|
4
3
|
import { freeze } from '../util/object-utils.js';
|
|
5
4
|
import { preventAwait } from '../util/prevent-await.js';
|
|
6
5
|
export class JoinBuilder {
|
|
@@ -11,13 +10,13 @@ export class JoinBuilder {
|
|
|
11
10
|
on(...args) {
|
|
12
11
|
return new JoinBuilder({
|
|
13
12
|
...this.#props,
|
|
14
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseOnFilter(this.#parseContext, args)),
|
|
13
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseOnFilter(this.#props.parseContext, args)),
|
|
15
14
|
});
|
|
16
15
|
}
|
|
17
16
|
orOn(...args) {
|
|
18
17
|
return new JoinBuilder({
|
|
19
18
|
...this.#props,
|
|
20
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseOnFilter(this.#parseContext, args)),
|
|
19
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseOnFilter(this.#props.parseContext, args)),
|
|
21
20
|
});
|
|
22
21
|
}
|
|
23
22
|
/**
|
|
@@ -29,7 +28,7 @@ export class JoinBuilder {
|
|
|
29
28
|
onRef(lhs, op, rhs) {
|
|
30
29
|
return new JoinBuilder({
|
|
31
30
|
...this.#props,
|
|
32
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseReferenceFilter(this.#parseContext, lhs, op, rhs)),
|
|
31
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
33
32
|
});
|
|
34
33
|
}
|
|
35
34
|
/**
|
|
@@ -41,7 +40,7 @@ export class JoinBuilder {
|
|
|
41
40
|
orOnRef(lhs, op, rhs) {
|
|
42
41
|
return new JoinBuilder({
|
|
43
42
|
...this.#props,
|
|
44
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseReferenceFilter(this.#parseContext, lhs, op, rhs)),
|
|
43
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseReferenceFilter(this.#props.parseContext, lhs, op, rhs)),
|
|
45
44
|
});
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
@@ -53,7 +52,7 @@ export class JoinBuilder {
|
|
|
53
52
|
onExists(arg) {
|
|
54
53
|
return new JoinBuilder({
|
|
55
54
|
...this.#props,
|
|
56
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And',
|
|
55
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseExistFilter(this.#props.parseContext, arg)),
|
|
57
56
|
});
|
|
58
57
|
}
|
|
59
58
|
/**
|
|
@@ -65,7 +64,7 @@ export class JoinBuilder {
|
|
|
65
64
|
onNotExists(arg) {
|
|
66
65
|
return new JoinBuilder({
|
|
67
66
|
...this.#props,
|
|
68
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And',
|
|
67
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'And', parseNotExistFilter(this.#props.parseContext, arg)),
|
|
69
68
|
});
|
|
70
69
|
}
|
|
71
70
|
/**
|
|
@@ -77,7 +76,7 @@ export class JoinBuilder {
|
|
|
77
76
|
orOnExists(arg) {
|
|
78
77
|
return new JoinBuilder({
|
|
79
78
|
...this.#props,
|
|
80
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or',
|
|
79
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseExistFilter(this.#props.parseContext, arg)),
|
|
81
80
|
});
|
|
82
81
|
}
|
|
83
82
|
/**
|
|
@@ -89,14 +88,11 @@ export class JoinBuilder {
|
|
|
89
88
|
orOnNotExists(arg) {
|
|
90
89
|
return new JoinBuilder({
|
|
91
90
|
...this.#props,
|
|
92
|
-
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or',
|
|
91
|
+
joinNode: JoinNode.cloneWithOn(this.#props.joinNode, 'Or', parseNotExistFilter(this.#props.parseContext, arg)),
|
|
93
92
|
});
|
|
94
93
|
}
|
|
95
94
|
toOperationNode() {
|
|
96
95
|
return this.#props.joinNode;
|
|
97
96
|
}
|
|
98
|
-
get #parseContext() {
|
|
99
|
-
return createParseContext(this.#props.adapter);
|
|
100
|
-
}
|
|
101
97
|
}
|
|
102
98
|
preventAwait(JoinBuilder, "don't await JoinBuilder instances. They are never executed directly and are always just a part of a query.");
|
|
@@ -18,7 +18,7 @@ import { Compilable } from '../util/compilable.js';
|
|
|
18
18
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
19
19
|
import { QueryId } from '../util/query-id.js';
|
|
20
20
|
import { OnConflictConstraintTarget } from '../parser/on-conflict-parser.js';
|
|
21
|
-
import {
|
|
21
|
+
import { ParseContext } from '../parser/parse-context.js';
|
|
22
22
|
/**
|
|
23
23
|
* The main query builder class.
|
|
24
24
|
*
|
|
@@ -1010,9 +1010,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1010
1010
|
* database, calling `onConflictDoNothing('name')` will ignore the conflict
|
|
1011
1011
|
* and do nothing. By default the query would throw.
|
|
1012
1012
|
*
|
|
1013
|
-
*
|
|
1014
|
-
*
|
|
1015
|
-
*
|
|
1013
|
+
* Only some dialects like postgres and sqlite implement the `on conflict`
|
|
1014
|
+
* statement. On MySQL you should use the {@link ignore} method to achieve
|
|
1015
|
+
* similar results.
|
|
1016
1016
|
*
|
|
1017
1017
|
* Also see the {@link QueryBuilder.onConflictUpdate | onConflictUpdate}
|
|
1018
1018
|
* method if you want to perform an update in case of a conflict (upsert).
|
|
@@ -1067,6 +1067,27 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1067
1067
|
onConflictDoNothing(column: AnyColumn<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1068
1068
|
onConflictDoNothing(columns: ReadonlyArray<AnyColumn<DB, TB>>): QueryBuilder<DB, TB, O>;
|
|
1069
1069
|
onConflictDoNothing(constraint: OnConflictConstraintTarget): QueryBuilder<DB, TB, O>;
|
|
1070
|
+
/**
|
|
1071
|
+
* Changes an `insert into` query to an `insert ignore into` query.
|
|
1072
|
+
*
|
|
1073
|
+
* If you use the ignore modifier, ignorable errors that occur while executing the
|
|
1074
|
+
* insert statement are ignored. For example, without ignore, a row that duplicates
|
|
1075
|
+
* an existing unique index or primary key value in the table causes a duplicate-key
|
|
1076
|
+
* error and the statement is aborted. With ignore, the row is discarded and no error
|
|
1077
|
+
* occurs.
|
|
1078
|
+
*
|
|
1079
|
+
* This is only supported on some dialects like MySQL. On most dialects you should
|
|
1080
|
+
* use the {@link onConflictDoNothing} method.
|
|
1081
|
+
*
|
|
1082
|
+
* @example
|
|
1083
|
+
* ```ts
|
|
1084
|
+
* await db.insertInto('person')
|
|
1085
|
+
* .ignore()
|
|
1086
|
+
* .values(values)
|
|
1087
|
+
* .execute()
|
|
1088
|
+
* ```
|
|
1089
|
+
*/
|
|
1090
|
+
ignore(): QueryBuilder<DB, TB, O>;
|
|
1070
1091
|
/**
|
|
1071
1092
|
* Ignores an insert if the column or constraint given as the first
|
|
1072
1093
|
* argument conflicts with the current rows in the database and
|
|
@@ -1082,9 +1103,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1082
1103
|
* The second argument (updates) can be anything the {@link QueryBuilder.set | set}
|
|
1083
1104
|
* method accepts.
|
|
1084
1105
|
*
|
|
1085
|
-
*
|
|
1086
|
-
*
|
|
1087
|
-
*
|
|
1106
|
+
* The `on conflict do update` statement is only implemented by some dialects
|
|
1107
|
+
* like postgres and sqlite. On MySQL you should use the {@link onDuplicateKeyUpdate}
|
|
1108
|
+
* method instead.
|
|
1088
1109
|
*
|
|
1089
1110
|
* Also see the {@link QueryBuilder.onConflictDoNothing | onConflictDoNothing}
|
|
1090
1111
|
* method.
|
|
@@ -1140,6 +1161,24 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1140
1161
|
onConflictUpdate(column: AnyColumn<DB, TB>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1141
1162
|
onConflictUpdate(columns: ReadonlyArray<AnyColumn<DB, TB>>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1142
1163
|
onConflictUpdate(constraint: OnConflictConstraintTarget, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1164
|
+
/**
|
|
1165
|
+
* Adds `on duplicate key update` to an insert query.
|
|
1166
|
+
*
|
|
1167
|
+
* If you specify `on duplicate key update`, and a row is inserted that would cause
|
|
1168
|
+
* a duplicate value in a unique index or primary key, an update of the old row occurs.
|
|
1169
|
+
*
|
|
1170
|
+
* This is only implemented by some dialects like MySQL. On most dialects you should
|
|
1171
|
+
* use {@link onConflictUpdate} instead.
|
|
1172
|
+
*
|
|
1173
|
+
* @example
|
|
1174
|
+
* ```ts
|
|
1175
|
+
* await db
|
|
1176
|
+
* .insertInto('person')
|
|
1177
|
+
* .values(values)
|
|
1178
|
+
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|
1179
|
+
* ```
|
|
1180
|
+
*/
|
|
1181
|
+
onDuplicateKeyUpdate(updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1143
1182
|
/**
|
|
1144
1183
|
* Sets the values to update for an {@link Kysely.updateTable | update} query.
|
|
1145
1184
|
*
|
|
@@ -1566,7 +1605,7 @@ export interface QueryBuilderProps {
|
|
|
1566
1605
|
readonly queryId: QueryId;
|
|
1567
1606
|
readonly queryNode: QueryNode;
|
|
1568
1607
|
readonly executor: QueryExecutor;
|
|
1569
|
-
readonly
|
|
1608
|
+
readonly parseContext: ParseContext;
|
|
1570
1609
|
}
|
|
1571
1610
|
/**
|
|
1572
1611
|
* {@link QueryBuilder} with an alias. The result of calling {@link QueryBuilder.as}.
|