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,10 +18,10 @@ export class MysqlIntrospector {
|
|
|
18
18
|
}
|
|
19
19
|
const rawColumns = await query.execute();
|
|
20
20
|
return {
|
|
21
|
-
tables: this
|
|
21
|
+
tables: this.#parseTableMetadata(rawColumns),
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
parseTableMetadata(columns) {
|
|
24
|
+
#parseTableMetadata(columns) {
|
|
25
25
|
return columns.reduce((tables, it) => {
|
|
26
26
|
let table = tables.find((tbl) => tbl.name === it.TABLE_NAME);
|
|
27
27
|
if (!table) {
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { ColumnDefinitionNode } from '../../operation-node/column-definition-node.js';
|
|
2
|
-
import { InsertQueryNode } from '../../operation-node/insert-query-node.js';
|
|
3
|
-
import { OnConflictNode } from '../../operation-node/on-conflict-node.js';
|
|
4
2
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
5
3
|
export declare class MysqlQueryCompiler extends DefaultQueryCompiler {
|
|
6
4
|
protected visitColumnDefinition(node: ColumnDefinitionNode): void;
|
|
7
|
-
protected visitOnConflict(node: OnConflictNode): void;
|
|
8
5
|
protected visitReturning(): void;
|
|
9
|
-
protected getInsertInto(node: InsertQueryNode): string;
|
|
10
6
|
protected getSql(): string;
|
|
11
7
|
protected getCurrentParameterPlaceholder(): string;
|
|
12
8
|
protected getLeftIdentifierWrapper(): string;
|
|
@@ -29,27 +29,9 @@ export class MysqlQueryCompiler extends DefaultQueryCompiler {
|
|
|
29
29
|
this.visitNode(node.check);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
visitOnConflict(node) {
|
|
33
|
-
if (node.doNothing) {
|
|
34
|
-
// This is already handled by `getInsertInto`.
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (node.updates) {
|
|
38
|
-
this.append('on duplicate key update ');
|
|
39
|
-
this.compileList(node.updates);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
32
|
visitReturning() {
|
|
43
33
|
// Do nothing.
|
|
44
34
|
}
|
|
45
|
-
getInsertInto(node) {
|
|
46
|
-
if (node.onConflict?.doNothing) {
|
|
47
|
-
return 'insert ignore into';
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return 'insert into';
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
35
|
getSql() {
|
|
54
36
|
return super.getSql().trimEnd();
|
|
55
37
|
}
|
|
@@ -30,10 +30,10 @@ export class PostgresIntrospector {
|
|
|
30
30
|
}
|
|
31
31
|
const rawColumns = await query.execute();
|
|
32
32
|
return {
|
|
33
|
-
tables: this
|
|
33
|
+
tables: this.#parseTableMetadata(rawColumns),
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
-
parseTableMetadata(columns) {
|
|
36
|
+
#parseTableMetadata(columns) {
|
|
37
37
|
return columns.reduce((tables, it) => {
|
|
38
38
|
let table = tables.find((tbl) => tbl.name === it.table && tbl.schema === it.schema);
|
|
39
39
|
if (!table) {
|
|
@@ -14,7 +14,8 @@ export interface QueryResult<O> {
|
|
|
14
14
|
*/
|
|
15
15
|
readonly insertedPrimaryKey?: number;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* The rows returned by the query. This is always defined and is
|
|
18
|
+
* empty if the query returned no rows.
|
|
18
19
|
*/
|
|
19
20
|
readonly rows: O[];
|
|
20
21
|
}
|
|
@@ -45,7 +45,7 @@ export interface Driver {
|
|
|
45
45
|
destroy(): Promise<void>;
|
|
46
46
|
}
|
|
47
47
|
export interface TransactionSettings {
|
|
48
|
-
isolationLevel?: IsolationLevel;
|
|
48
|
+
readonly isolationLevel?: IsolationLevel;
|
|
49
49
|
}
|
|
50
50
|
export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable"];
|
|
51
51
|
export declare type IsolationLevel = ArrayItemType<typeof TRANSACTION_ISOLATION_LEVELS>;
|
|
@@ -8,7 +8,7 @@ export class SingleConnectionProvider {
|
|
|
8
8
|
while (this.#runningPromise) {
|
|
9
9
|
await this.#runningPromise;
|
|
10
10
|
}
|
|
11
|
-
const promise = this
|
|
11
|
+
const promise = this.#run(runner);
|
|
12
12
|
this.#runningPromise = promise
|
|
13
13
|
.then(() => {
|
|
14
14
|
this.#runningPromise = undefined;
|
|
@@ -20,7 +20,7 @@ export class SingleConnectionProvider {
|
|
|
20
20
|
}
|
|
21
21
|
// Run the runner in an async function to make sure it doesn't
|
|
22
22
|
// throw synchronous errors.
|
|
23
|
-
async run(runner) {
|
|
23
|
+
async #run(runner) {
|
|
24
24
|
return await runner(this.#connection);
|
|
25
25
|
}
|
|
26
26
|
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from './kysely.js';
|
|
|
2
2
|
export * from './query-creator.js';
|
|
3
3
|
export * from './query-builder/query-builder.js';
|
|
4
4
|
export * from './query-builder/join-builder.js';
|
|
5
|
-
export * from './query-builder/
|
|
5
|
+
export * from './query-builder/expression-builder.js';
|
|
6
6
|
export * from './raw-builder/raw-builder.js';
|
|
7
7
|
export * from './query-executor/query-executor.js';
|
|
8
8
|
export * from './query-executor/default-query-executor.js';
|
|
@@ -17,6 +17,7 @@ export * from './schema/drop-index-builder.js';
|
|
|
17
17
|
export * from './schema/create-schema-builder.js';
|
|
18
18
|
export * from './schema/drop-schema-builder.js';
|
|
19
19
|
export * from './schema/column-definition-builder.js';
|
|
20
|
+
export * from './schema/foreign-key-constraint-builder.js';
|
|
20
21
|
export * from './schema/alter-table-builder.js';
|
|
21
22
|
export * from './dynamic/dynamic.js';
|
|
22
23
|
export * from './driver/driver.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export * from './kysely.js';
|
|
|
2
2
|
export * from './query-creator.js';
|
|
3
3
|
export * from './query-builder/query-builder.js';
|
|
4
4
|
export * from './query-builder/join-builder.js';
|
|
5
|
-
export * from './query-builder/
|
|
5
|
+
export * from './query-builder/expression-builder.js';
|
|
6
6
|
export * from './raw-builder/raw-builder.js';
|
|
7
7
|
export * from './query-executor/query-executor.js';
|
|
8
8
|
export * from './query-executor/default-query-executor.js';
|
|
@@ -17,6 +17,7 @@ export * from './schema/drop-index-builder.js';
|
|
|
17
17
|
export * from './schema/create-schema-builder.js';
|
|
18
18
|
export * from './schema/drop-schema-builder.js';
|
|
19
19
|
export * from './schema/column-definition-builder.js';
|
|
20
|
+
export * from './schema/foreign-key-constraint-builder.js';
|
|
20
21
|
export * from './schema/alter-table-builder.js';
|
|
21
22
|
export * from './dynamic/dynamic.js';
|
|
22
23
|
export * from './driver/driver.js';
|
package/dist/esm/kysely.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
|
8
8
|
import { GeneratedPlaceholder } from './query-builder/type-utils.js';
|
|
9
9
|
import { DatabaseIntrospector } from './introspection/database-introspector.js';
|
|
10
10
|
import { Driver, IsolationLevel } from './driver/driver.js';
|
|
11
|
-
import {
|
|
11
|
+
import { ParseContext } from './parser/parse-context.js';
|
|
12
12
|
/**
|
|
13
13
|
* The main Kysely class.
|
|
14
14
|
*
|
|
@@ -152,7 +152,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
152
152
|
* .execute(async (db) => {
|
|
153
153
|
* // `db` is an instance of `Kysely` that's bound to a single
|
|
154
154
|
* // database connection. All queries executed through `db` use
|
|
155
|
-
* // the same
|
|
155
|
+
* // the same connection.
|
|
156
156
|
* await doStuff(db)
|
|
157
157
|
* })
|
|
158
158
|
* ```
|
|
@@ -186,7 +186,7 @@ export interface KyselyProps {
|
|
|
186
186
|
readonly driver: Driver;
|
|
187
187
|
readonly executor: QueryExecutor;
|
|
188
188
|
readonly dialect: Dialect;
|
|
189
|
-
readonly
|
|
189
|
+
readonly parseContext: ParseContext;
|
|
190
190
|
}
|
|
191
191
|
export declare function isKyselyProps(obj: unknown): obj is KyselyProps;
|
|
192
192
|
export interface KyselyConfig {
|
|
@@ -198,14 +198,15 @@ export declare class ConnectionBuilder<DB> {
|
|
|
198
198
|
constructor(props: ConnectionBuilderProps);
|
|
199
199
|
execute<T>(callback: (db: Kysely<DB>) => Promise<T>): Promise<T>;
|
|
200
200
|
}
|
|
201
|
-
|
|
201
|
+
interface ConnectionBuilderProps extends KyselyProps {
|
|
202
202
|
}
|
|
203
203
|
export declare class TransactionBuilder<DB> {
|
|
204
204
|
#private;
|
|
205
|
-
constructor(props:
|
|
205
|
+
constructor(props: TransactionBuilderProps);
|
|
206
206
|
setIsolationLevel(isolationLevel: IsolationLevel): TransactionBuilder<DB>;
|
|
207
207
|
execute<T>(callback: (trx: Transaction<DB>) => Promise<T>): Promise<T>;
|
|
208
208
|
}
|
|
209
|
-
|
|
209
|
+
interface TransactionBuilderProps extends KyselyProps {
|
|
210
210
|
readonly isolationLevel?: IsolationLevel;
|
|
211
211
|
}
|
|
212
|
+
export {};
|
package/dist/esm/kysely.js
CHANGED
|
@@ -10,6 +10,7 @@ import { RuntimeDriver } from './driver/runtime-driver.js';
|
|
|
10
10
|
import { SingleConnectionProvider } from './driver/single-connection-provider.js';
|
|
11
11
|
import { TRANSACTION_ISOLATION_LEVELS, } from './driver/driver.js';
|
|
12
12
|
import { preventAwait } from './util/prevent-await.js';
|
|
13
|
+
import { DefaultParseContext } from './parser/parse-context.js';
|
|
13
14
|
/**
|
|
14
15
|
* The main Kysely class.
|
|
15
16
|
*
|
|
@@ -54,7 +55,7 @@ export class Kysely extends QueryCreator {
|
|
|
54
55
|
#props;
|
|
55
56
|
constructor(args) {
|
|
56
57
|
if (isKyselyProps(args)) {
|
|
57
|
-
super({ executor: args.executor,
|
|
58
|
+
super({ executor: args.executor, parseContext: args.parseContext });
|
|
58
59
|
this.#props = freeze(args);
|
|
59
60
|
}
|
|
60
61
|
else {
|
|
@@ -62,16 +63,17 @@ export class Kysely extends QueryCreator {
|
|
|
62
63
|
const driver = dialect.createDriver();
|
|
63
64
|
const compiler = dialect.createQueryCompiler();
|
|
64
65
|
const adapter = dialect.createAdapter();
|
|
66
|
+
const parseContext = new DefaultParseContext(adapter);
|
|
65
67
|
const runtimeDriver = new RuntimeDriver(driver);
|
|
66
68
|
const connectionProvider = new DefaultConnectionProvider(runtimeDriver);
|
|
67
69
|
const executor = new DefaultQueryExecutor(compiler, connectionProvider, args.plugins ?? []);
|
|
68
|
-
super({ executor,
|
|
70
|
+
super({ executor, parseContext });
|
|
69
71
|
this.#props = freeze({
|
|
70
72
|
config: args,
|
|
71
73
|
executor,
|
|
72
|
-
adapter,
|
|
73
74
|
dialect,
|
|
74
75
|
driver,
|
|
76
|
+
parseContext,
|
|
75
77
|
});
|
|
76
78
|
}
|
|
77
79
|
}
|
|
@@ -85,7 +87,7 @@ export class Kysely extends QueryCreator {
|
|
|
85
87
|
* Returns the {@link MigrationModule} module for managing and running migrations.
|
|
86
88
|
*/
|
|
87
89
|
get migration() {
|
|
88
|
-
return new MigrationModule(this, this.#props.adapter);
|
|
90
|
+
return new MigrationModule(this, this.#props.parseContext.adapter);
|
|
89
91
|
}
|
|
90
92
|
/**
|
|
91
93
|
* Returns a the {@link DynamicModule} module.
|
|
@@ -186,7 +188,7 @@ export class Kysely extends QueryCreator {
|
|
|
186
188
|
* .execute(async (db) => {
|
|
187
189
|
* // `db` is an instance of `Kysely` that's bound to a single
|
|
188
190
|
* // database connection. All queries executed through `db` use
|
|
189
|
-
* // the same
|
|
191
|
+
* // the same connection.
|
|
190
192
|
* await doStuff(db)
|
|
191
193
|
* })
|
|
192
194
|
* ```
|
|
@@ -243,7 +245,7 @@ export function isKyselyProps(obj) {
|
|
|
243
245
|
isObject(obj.driver) &&
|
|
244
246
|
isObject(obj.executor) &&
|
|
245
247
|
isObject(obj.dialect) &&
|
|
246
|
-
isObject(obj.
|
|
248
|
+
isObject(obj.parseContext));
|
|
247
249
|
}
|
|
248
250
|
export class ConnectionBuilder {
|
|
249
251
|
#props;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import { promises as fs } from 'fs';
|
|
3
|
-
import { getLast, isFunction, isString } from '../util/object-utils.js';
|
|
3
|
+
import { getLast, isFunction, isObject, isString, } from '../util/object-utils.js';
|
|
4
4
|
export const MIGRATION_TABLE = 'kysely_migration';
|
|
5
5
|
export const MIGRATION_LOCK_TABLE = 'kysely_migration_lock';
|
|
6
6
|
export const MIGRATION_LOCK_ID = 'migration_lock';
|
|
@@ -11,20 +11,21 @@ export class MigrationModule {
|
|
|
11
11
|
this.#db = db;
|
|
12
12
|
this.#adapter = adapter;
|
|
13
13
|
}
|
|
14
|
-
async migrateToLatest(
|
|
14
|
+
async migrateToLatest(migrationsOrFolderPath) {
|
|
15
15
|
await ensureMigrationTablesExists(this.#db);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
const allMigrations = await this.#getAllMigrations(migrationsOrFolderPath);
|
|
17
|
+
await this.#migrateToLatest(allMigrations);
|
|
18
|
+
}
|
|
19
|
+
async #getAllMigrations(migrationsOrFolderPath) {
|
|
20
|
+
return isString(migrationsOrFolderPath)
|
|
21
|
+
? await readMigrationsFromFolder(migrationsOrFolderPath)
|
|
22
|
+
: migrationsOrFolderPath;
|
|
22
23
|
}
|
|
23
|
-
async #migrateToLatest(
|
|
24
|
+
async #migrateToLatest(allMigrations) {
|
|
24
25
|
const run = async (db) => {
|
|
25
26
|
try {
|
|
26
27
|
await this.#adapter.acquireMigrationLock(db);
|
|
27
|
-
await runNewMigrations(db,
|
|
28
|
+
await runNewMigrations(db, allMigrations);
|
|
28
29
|
}
|
|
29
30
|
finally {
|
|
30
31
|
await this.#adapter.releaseMigrationLock(db);
|
|
@@ -178,5 +179,5 @@ function ensureMigrationsAreNotCorrupted(executedMigrationNames, oldMigrationNam
|
|
|
178
179
|
}
|
|
179
180
|
}
|
|
180
181
|
function isMigration(obj) {
|
|
181
|
-
return obj && isFunction(obj.up) && isFunction(obj.down);
|
|
182
|
+
return isObject(obj) && isFunction(obj.up) && isFunction(obj.down);
|
|
182
183
|
}
|
|
@@ -3,7 +3,7 @@ import { ColumnNode } from './column-node.js';
|
|
|
3
3
|
import { DataTypeNode } from './data-type-node.js';
|
|
4
4
|
import { ValueNode } from './value-node.js';
|
|
5
5
|
import { RawNode } from './raw-node.js';
|
|
6
|
-
export declare type
|
|
6
|
+
export declare type AlterColumnNodeProps = Omit<AlterColumnNode, 'kind' | 'column'>;
|
|
7
7
|
export interface AlterColumnNode extends OperationNode {
|
|
8
8
|
readonly kind: 'AlterColumnNode';
|
|
9
9
|
readonly column: ColumnNode;
|
|
@@ -20,5 +20,5 @@ export interface AlterColumnNode extends OperationNode {
|
|
|
20
20
|
export declare const AlterColumnNode: Readonly<{
|
|
21
21
|
is(node: OperationNode): node is AlterColumnNode;
|
|
22
22
|
create(column: string): AlterColumnNode;
|
|
23
|
-
cloneWith(node: AlterColumnNode,
|
|
23
|
+
cloneWith(node: AlterColumnNode, props: AlterColumnNodeProps): AlterColumnNode;
|
|
24
24
|
}>;
|
|
@@ -8,7 +8,7 @@ import { AlterColumnNode } from './alter-column-node.js';
|
|
|
8
8
|
import { AddConstraintNode } from './add-constraint-node.js';
|
|
9
9
|
import { DropConstraintNode } from './drop-constraint-node.js';
|
|
10
10
|
import { ModifyColumnNode } from './modify-column-node.js';
|
|
11
|
-
export declare type
|
|
11
|
+
export declare type AlterTableNodeProps = Omit<AlterTableNode, 'kind' | 'table'>;
|
|
12
12
|
export interface AlterTableNode extends OperationNode {
|
|
13
13
|
readonly kind: 'AlterTableNode';
|
|
14
14
|
readonly table: TableNode;
|
|
@@ -28,5 +28,5 @@ export interface AlterTableNode extends OperationNode {
|
|
|
28
28
|
export declare const AlterTableNode: Readonly<{
|
|
29
29
|
is(node: OperationNode): node is AlterTableNode;
|
|
30
30
|
create(table: string): AlterTableNode;
|
|
31
|
-
cloneWith(node: AlterTableNode,
|
|
31
|
+
cloneWith(node: AlterTableNode, props: AlterTableNodeProps): AlterTableNode;
|
|
32
32
|
}>;
|
|
@@ -5,7 +5,7 @@ import { OperationNode } from './operation-node.js';
|
|
|
5
5
|
import { RawNode } from './raw-node.js';
|
|
6
6
|
import { ReferencesNode } from './references-node.js';
|
|
7
7
|
import { ValueNode } from './value-node.js';
|
|
8
|
-
export declare type
|
|
8
|
+
export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind'>;
|
|
9
9
|
export declare type ColumnDataTypeNode = DataTypeNode | RawNode;
|
|
10
10
|
export interface ColumnDefinitionNode extends OperationNode {
|
|
11
11
|
readonly kind: 'ColumnDefinitionNode';
|
|
@@ -25,5 +25,5 @@ export interface ColumnDefinitionNode extends OperationNode {
|
|
|
25
25
|
export declare const ColumnDefinitionNode: Readonly<{
|
|
26
26
|
is(node: OperationNode): node is ColumnDefinitionNode;
|
|
27
27
|
create(column: string, dataType: ColumnDataTypeNode): ColumnDefinitionNode;
|
|
28
|
-
cloneWith(node: ColumnDefinitionNode,
|
|
28
|
+
cloneWith(node: ColumnDefinitionNode, props: ColumnDefinitionNodeProps): ColumnDefinitionNode;
|
|
29
29
|
}>;
|
|
@@ -4,7 +4,7 @@ import { ListNode } from './list-node.js';
|
|
|
4
4
|
import { OperationNode } from './operation-node.js';
|
|
5
5
|
import { RawNode } from './raw-node.js';
|
|
6
6
|
import { TableNode } from './table-node.js';
|
|
7
|
-
export declare type
|
|
7
|
+
export declare type CreateIndexNodeProps = Omit<CreateIndexNode, 'kind' | 'name'>;
|
|
8
8
|
export declare type IndexType = 'btree' | 'hash' | 'gist' | 'gin';
|
|
9
9
|
export interface CreateIndexNode extends OperationNode {
|
|
10
10
|
readonly kind: 'CreateIndexNode';
|
|
@@ -20,5 +20,5 @@ export interface CreateIndexNode extends OperationNode {
|
|
|
20
20
|
export declare const CreateIndexNode: Readonly<{
|
|
21
21
|
is(node: OperationNode): node is CreateIndexNode;
|
|
22
22
|
create(name: string): CreateIndexNode;
|
|
23
|
-
cloneWith(node: CreateIndexNode,
|
|
23
|
+
cloneWith(node: CreateIndexNode, props: CreateIndexNodeProps): CreateIndexNode;
|
|
24
24
|
}>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
2
|
import { TableNode } from './table-node.js';
|
|
3
|
+
import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
|
|
3
4
|
import { ConstraintNode } from './constraint-node.js';
|
|
4
5
|
import { ColumnDefinitionNode } from './column-definition-node.js';
|
|
5
6
|
export declare type CreateTableNodeModifier = 'IfNotExists';
|
|
@@ -21,5 +22,5 @@ export declare const CreateTableNode: Readonly<{
|
|
|
21
22
|
cloneWithPrimaryKeyConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
|
|
22
23
|
cloneWithUniqueConstraint(createTable: CreateTableNode, constraintName: string, columns: string[]): CreateTableNode;
|
|
23
24
|
cloneWithCheckConstraint(createTable: CreateTableNode, constraintName: string, sql: string): CreateTableNode;
|
|
24
|
-
cloneWithForeignKeyConstraint(createTable: CreateTableNode,
|
|
25
|
+
cloneWithForeignKeyConstraint(createTable: CreateTableNode, constraint: ForeignKeyConstraintNode): CreateTableNode;
|
|
25
26
|
}>;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { freeze } from '../util/object-utils.js';
|
|
2
2
|
import { CheckConstraintNode } from './check-constraint-node.js';
|
|
3
|
-
import { TableNode } from './table-node.js';
|
|
4
3
|
import { PrimaryConstraintNode } from './primary-constraint-node.js';
|
|
5
4
|
import { UniqueConstraintNode } from './unique-constraint-node.js';
|
|
6
|
-
import { ForeignKeyConstraintNode } from './foreign-key-constraint-node.js';
|
|
7
|
-
import { ColumnNode } from './column-node.js';
|
|
8
5
|
/**
|
|
9
6
|
* @internal
|
|
10
7
|
*/
|
|
@@ -58,8 +55,7 @@ export const CreateTableNode = freeze({
|
|
|
58
55
|
: freeze([constraint]),
|
|
59
56
|
});
|
|
60
57
|
},
|
|
61
|
-
cloneWithForeignKeyConstraint(createTable,
|
|
62
|
-
const constraint = ForeignKeyConstraintNode.create(sourceColumns.map(ColumnNode.create), TableNode.create(targetTable), targetColumns.map(ColumnNode.create), constraintName);
|
|
58
|
+
cloneWithForeignKeyConstraint(createTable, constraint) {
|
|
63
59
|
return freeze({
|
|
64
60
|
...createTable,
|
|
65
61
|
constraints: createTable.constraints
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IdentifierNode } from './identifier-node.js';
|
|
2
2
|
import { OperationNode } from './operation-node.js';
|
|
3
3
|
import { TableNode } from './table-node.js';
|
|
4
|
-
export declare type
|
|
4
|
+
export declare type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
|
|
5
5
|
export declare type DropIndexNodeModifier = 'IfExists';
|
|
6
6
|
export interface DropIndexNode extends OperationNode {
|
|
7
7
|
readonly kind: 'DropIndexNode';
|
|
@@ -14,6 +14,6 @@ export interface DropIndexNode extends OperationNode {
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const DropIndexNode: Readonly<{
|
|
16
16
|
is(node: OperationNode): node is DropIndexNode;
|
|
17
|
-
create(name: string, params?:
|
|
18
|
-
cloneWith(dropIndex: DropIndexNode,
|
|
17
|
+
create(name: string, params?: DropIndexNodeProps | undefined): DropIndexNode;
|
|
18
|
+
cloneWith(dropIndex: DropIndexNode, props: DropIndexNodeProps): DropIndexNode;
|
|
19
19
|
}>;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { ColumnNode } from './column-node.js';
|
|
2
2
|
import { IdentifierNode } from './identifier-node.js';
|
|
3
3
|
import { OperationNode } from './operation-node.js';
|
|
4
|
-
import { ReferencesNode } from './references-node.js';
|
|
4
|
+
import { OnModifyForeignAction, ReferencesNode } from './references-node.js';
|
|
5
5
|
import { TableNode } from './table-node.js';
|
|
6
|
+
export declare type ForeignKeyConstraintNodeProps = Omit<ForeignKeyConstraintNode, 'kind' | 'columns' | 'references'>;
|
|
6
7
|
export interface ForeignKeyConstraintNode extends OperationNode {
|
|
7
8
|
readonly kind: 'ForeignKeyConstraintNode';
|
|
8
9
|
readonly columns: ReadonlyArray<ColumnNode>;
|
|
9
10
|
readonly references: ReferencesNode;
|
|
11
|
+
readonly onDelete?: OnModifyForeignAction;
|
|
12
|
+
readonly onUpdate?: OnModifyForeignAction;
|
|
10
13
|
readonly name?: IdentifierNode;
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
@@ -15,4 +18,12 @@ export interface ForeignKeyConstraintNode extends OperationNode {
|
|
|
15
18
|
export declare const ForeignKeyConstraintNode: Readonly<{
|
|
16
19
|
is(node: OperationNode): node is ForeignKeyConstraintNode;
|
|
17
20
|
create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string | undefined): ForeignKeyConstraintNode;
|
|
21
|
+
cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
|
|
22
|
+
name?: IdentifierNode | undefined;
|
|
23
|
+
onDelete?: OnModifyForeignAction | undefined;
|
|
24
|
+
onUpdate?: OnModifyForeignAction | undefined;
|
|
25
|
+
kind: 'ForeignKeyConstraintNode';
|
|
26
|
+
columns: ReadonlyArray<ColumnNode>;
|
|
27
|
+
references: ReferencesNode;
|
|
28
|
+
}>;
|
|
18
29
|
}>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ColumnNode } from './column-node.js';
|
|
2
2
|
import { OnConflictNode } from './on-conflict-node.js';
|
|
3
|
+
import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
3
4
|
import { OperationNode } from './operation-node.js';
|
|
4
5
|
import { PrimitiveValueListNode } from './primitive-value-list-node.js';
|
|
5
6
|
import { ReturningNode } from './returning-node.js';
|
|
@@ -7,6 +8,7 @@ import { TableNode } from './table-node.js';
|
|
|
7
8
|
import { ValueListNode } from './value-list-node.js';
|
|
8
9
|
import { WithNode } from './with-node.js';
|
|
9
10
|
export declare type InsertValuesNode = ValueListNode | PrimitiveValueListNode;
|
|
11
|
+
export declare type InsertQueryNodeProps = Omit<InsertQueryNode, 'kind' | 'into'>;
|
|
10
12
|
export interface InsertQueryNode extends OperationNode {
|
|
11
13
|
readonly kind: 'InsertQueryNode';
|
|
12
14
|
readonly into: TableNode;
|
|
@@ -14,7 +16,9 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
14
16
|
readonly values?: ReadonlyArray<InsertValuesNode>;
|
|
15
17
|
readonly returning?: ReturningNode;
|
|
16
18
|
readonly onConflict?: OnConflictNode;
|
|
19
|
+
readonly onDuplicateKey?: OnDuplicateKeyNode;
|
|
17
20
|
readonly with?: WithNode;
|
|
21
|
+
readonly ignore?: boolean;
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* @internal
|
|
@@ -22,6 +26,5 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
22
26
|
export declare const InsertQueryNode: Readonly<{
|
|
23
27
|
is(node: OperationNode): node is InsertQueryNode;
|
|
24
28
|
create(into: TableNode, withNode?: WithNode | undefined): InsertQueryNode;
|
|
25
|
-
|
|
26
|
-
cloneWithOnConflict(insertQuery: InsertQueryNode, onConflict: OnConflictNode): InsertQueryNode;
|
|
29
|
+
cloneWith(insertQuery: InsertQueryNode, props: InsertQueryNodeProps): InsertQueryNode;
|
|
27
30
|
}>;
|
|
@@ -13,17 +13,10 @@ export const InsertQueryNode = freeze({
|
|
|
13
13
|
...(withNode && { with: withNode }),
|
|
14
14
|
});
|
|
15
15
|
},
|
|
16
|
-
|
|
16
|
+
cloneWith(insertQuery, props) {
|
|
17
17
|
return freeze({
|
|
18
18
|
...insertQuery,
|
|
19
|
-
|
|
20
|
-
values,
|
|
21
|
-
});
|
|
22
|
-
},
|
|
23
|
-
cloneWithOnConflict(insertQuery, onConflict) {
|
|
24
|
-
return freeze({
|
|
25
|
-
...insertQuery,
|
|
26
|
-
onConflict,
|
|
19
|
+
...props,
|
|
27
20
|
});
|
|
28
21
|
},
|
|
29
22
|
});
|
|
@@ -20,5 +20,6 @@ export interface JoinNode extends OperationNode {
|
|
|
20
20
|
export declare const JoinNode: Readonly<{
|
|
21
21
|
is(node: OperationNode): node is JoinNode;
|
|
22
22
|
create(joinType: JoinType, table: JoinTableNode): JoinNode;
|
|
23
|
+
createWithOn(joinType: JoinType, table: JoinTableNode, on: JoinNodeOnNode): JoinNode;
|
|
23
24
|
cloneWithOn(joinNode: JoinNode, op: 'And' | 'Or', on: JoinNodeOnNode): JoinNode;
|
|
24
25
|
}>;
|
|
@@ -16,6 +16,14 @@ export const JoinNode = freeze({
|
|
|
16
16
|
on: undefined,
|
|
17
17
|
});
|
|
18
18
|
},
|
|
19
|
+
createWithOn(joinType, table, on) {
|
|
20
|
+
return freeze({
|
|
21
|
+
kind: 'JoinNode',
|
|
22
|
+
joinType,
|
|
23
|
+
table,
|
|
24
|
+
on,
|
|
25
|
+
});
|
|
26
|
+
},
|
|
19
27
|
cloneWithOn(joinNode, op, on) {
|
|
20
28
|
return freeze({
|
|
21
29
|
...joinNode,
|