kysely 0.16.11 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/cjs/index-nodeless.d.ts +2 -0
- package/dist/cjs/index-nodeless.js +2 -0
- package/dist/cjs/kysely.d.ts +3 -6
- package/dist/cjs/kysely.js +7 -12
- package/dist/cjs/migration/migrator.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
- package/dist/cjs/operation-node/raw-node.d.ts +4 -2
- package/dist/cjs/operation-node/raw-node.js +8 -2
- package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
- package/dist/cjs/parser/complex-expression-parser.js +5 -4
- package/dist/cjs/parser/filter-parser.d.ts +9 -9
- package/dist/cjs/parser/filter-parser.js +31 -30
- package/dist/cjs/parser/group-by-parser.d.ts +1 -2
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
- package/dist/cjs/parser/insert-values-parser.js +6 -6
- package/dist/cjs/parser/join-parser.d.ts +1 -2
- package/dist/cjs/parser/join-parser.js +8 -7
- package/dist/cjs/parser/order-by-parser.d.ts +1 -2
- package/dist/cjs/parser/order-by-parser.js +4 -4
- package/dist/cjs/parser/parse-utils.d.ts +10 -0
- package/dist/cjs/parser/parse-utils.js +38 -0
- package/dist/cjs/parser/reference-parser.d.ts +2 -3
- package/dist/cjs/parser/reference-parser.js +5 -5
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +5 -5
- package/dist/cjs/parser/table-parser.d.ts +2 -3
- package/dist/cjs/parser/table-parser.js +5 -5
- package/dist/cjs/parser/update-set-parser.d.ts +1 -2
- package/dist/cjs/parser/update-set-parser.js +2 -2
- package/dist/cjs/parser/value-parser.d.ts +3 -4
- package/dist/cjs/parser/value-parser.js +7 -7
- package/dist/cjs/parser/with-parser.d.ts +1 -2
- package/dist/cjs/parser/with-parser.js +3 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +23 -19
- package/dist/cjs/query-builder/delete-query-builder.js +15 -15
- package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
- package/dist/cjs/query-builder/expression-builder.js +12 -21
- package/dist/cjs/query-builder/function-builder.d.ts +2 -6
- package/dist/cjs/query-builder/function-builder.js +5 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +12 -8
- package/dist/cjs/query-builder/insert-query-builder.js +8 -7
- package/dist/cjs/query-builder/join-builder.d.ts +0 -2
- package/dist/cjs/query-builder/join-builder.js +8 -8
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +24 -20
- package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
- package/dist/cjs/query-builder/returning-interface.d.ts +3 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +41 -29
- package/dist/cjs/query-builder/select-query-builder.js +28 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +30 -24
- package/dist/cjs/query-builder/update-query-builder.js +22 -20
- package/dist/cjs/query-builder/where-interface.d.ts +20 -16
- package/dist/cjs/query-compiler/default-query-compiler.js +1 -1
- package/dist/cjs/query-creator.d.ts +10 -129
- package/dist/cjs/query-creator.js +5 -136
- package/dist/cjs/query-executor/default-query-executor.d.ts +8 -1
- package/dist/cjs/query-executor/default-query-executor.js +13 -13
- package/dist/cjs/query-executor/noop-query-executor.d.ts +8 -0
- package/dist/cjs/query-executor/noop-query-executor.js +8 -1
- package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
- package/dist/cjs/query-executor/query-executor-provider.js +2 -0
- package/dist/cjs/query-executor/query-executor.d.ts +7 -0
- package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
- package/dist/cjs/raw-builder/raw-builder.js +55 -56
- package/dist/cjs/raw-builder/sql.d.ts +323 -0
- package/dist/cjs/raw-builder/sql.js +153 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +20 -8
- package/dist/cjs/schema/column-definition-builder.d.ts +20 -8
- package/dist/cjs/schema/create-index-builder.d.ts +3 -1
- package/dist/cjs/schema/create-index-builder.js +3 -1
- package/dist/cjs/schema/create-table-builder.d.ts +6 -2
- package/dist/cjs/schema/create-table-builder.js +6 -2
- package/dist/cjs/schema/create-view-builder.d.ts +3 -3
- package/dist/cjs/schema/create-view-builder.js +3 -3
- package/dist/cjs/util/query-id.js +10 -4
- package/dist/cjs/util/random-string.js +65 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/esm/index-nodeless.d.ts +2 -0
- package/dist/esm/index-nodeless.js +2 -0
- package/dist/esm/kysely.d.ts +3 -6
- package/dist/esm/kysely.js +7 -12
- package/dist/esm/migration/migrator.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.js +1 -1
- package/dist/esm/operation-node/raw-node.d.ts +4 -2
- package/dist/esm/operation-node/raw-node.js +8 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
- package/dist/esm/parser/complex-expression-parser.js +5 -4
- package/dist/esm/parser/filter-parser.d.ts +9 -9
- package/dist/esm/parser/filter-parser.js +31 -30
- package/dist/esm/parser/group-by-parser.d.ts +1 -2
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +1 -2
- package/dist/esm/parser/insert-values-parser.js +6 -6
- package/dist/esm/parser/join-parser.d.ts +1 -2
- package/dist/esm/parser/join-parser.js +8 -7
- package/dist/esm/parser/order-by-parser.d.ts +1 -2
- package/dist/esm/parser/order-by-parser.js +4 -4
- package/dist/esm/parser/parse-utils.d.ts +10 -0
- package/dist/esm/parser/parse-utils.js +32 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.js +5 -5
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +5 -5
- package/dist/esm/parser/table-parser.d.ts +2 -3
- package/dist/esm/parser/table-parser.js +5 -5
- package/dist/esm/parser/update-set-parser.d.ts +1 -2
- package/dist/esm/parser/update-set-parser.js +2 -2
- package/dist/esm/parser/value-parser.d.ts +3 -4
- package/dist/esm/parser/value-parser.js +7 -7
- package/dist/esm/parser/with-parser.d.ts +1 -2
- package/dist/esm/parser/with-parser.js +3 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +23 -19
- package/dist/esm/query-builder/delete-query-builder.js +15 -15
- package/dist/esm/query-builder/expression-builder.d.ts +4 -13
- package/dist/esm/query-builder/expression-builder.js +12 -21
- package/dist/esm/query-builder/function-builder.d.ts +2 -6
- package/dist/esm/query-builder/function-builder.js +5 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +12 -8
- package/dist/esm/query-builder/insert-query-builder.js +8 -7
- package/dist/esm/query-builder/join-builder.d.ts +0 -2
- package/dist/esm/query-builder/join-builder.js +8 -8
- package/dist/esm/query-builder/on-conflict-builder.d.ts +24 -20
- package/dist/esm/query-builder/on-conflict-builder.js +17 -17
- package/dist/esm/query-builder/returning-interface.d.ts +3 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +41 -29
- package/dist/esm/query-builder/select-query-builder.js +28 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +30 -24
- package/dist/esm/query-builder/update-query-builder.js +22 -20
- package/dist/esm/query-builder/where-interface.d.ts +20 -16
- package/dist/esm/query-compiler/default-query-compiler.js +1 -1
- package/dist/esm/query-creator.d.ts +10 -129
- package/dist/esm/query-creator.js +5 -136
- package/dist/esm/query-executor/default-query-executor.d.ts +8 -1
- package/dist/esm/query-executor/default-query-executor.js +13 -13
- package/dist/esm/query-executor/noop-query-executor.d.ts +8 -0
- package/dist/esm/query-executor/noop-query-executor.js +7 -0
- package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
- package/dist/esm/query-executor/query-executor-provider.js +2 -0
- package/dist/esm/query-executor/query-executor.d.ts +7 -0
- package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
- package/dist/esm/raw-builder/raw-builder.js +56 -57
- package/dist/esm/raw-builder/sql.d.ts +323 -0
- package/dist/esm/raw-builder/sql.js +151 -0
- package/dist/esm/schema/alter-table-builder.d.ts +20 -8
- package/dist/esm/schema/column-definition-builder.d.ts +20 -8
- package/dist/esm/schema/create-index-builder.d.ts +3 -1
- package/dist/esm/schema/create-index-builder.js +3 -1
- package/dist/esm/schema/create-table-builder.d.ts +6 -2
- package/dist/esm/schema/create-table-builder.js +6 -2
- package/dist/esm/schema/create-view-builder.d.ts +3 -3
- package/dist/esm/schema/create-view-builder.js +3 -3
- package/dist/esm/util/query-id.js +10 -4
- package/dist/esm/util/random-string.js +65 -2
- package/package.json +13 -13
- package/dist/cjs/parser/parse-context.d.ts +0 -55
- package/dist/cjs/parser/parse-context.js +0 -50
- package/dist/cjs/util/private-symbols.d.ts +0 -5
- package/dist/cjs/util/private-symbols.js +0 -8
- package/dist/esm/parser/parse-context.d.ts +0 -55
- package/dist/esm/parser/parse-context.js +0 -47
- package/dist/esm/util/private-symbols.d.ts +0 -5
- package/dist/esm/util/private-symbols.js +0 -6
package/README.md
CHANGED
|
@@ -20,8 +20,8 @@ much anything you can think of. Typescript is always there for you offering comp
|
|
|
20
20
|
you build a valid query.
|
|
21
21
|
|
|
22
22
|
Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
|
|
23
|
-
hatches for these situations. See the [
|
|
24
|
-
for more info.
|
|
23
|
+
hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/modules.html#sql)
|
|
24
|
+
and the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref) for more info.
|
|
25
25
|
|
|
26
26
|
If you start using Kysely and can't find something you'd want to use, please open an issue or join our
|
|
27
27
|
[discord server](https://discord.gg/C9aJ49mCra).
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MysqlAdapter = void 0;
|
|
4
|
+
const sql_js_1 = require("../../raw-builder/sql.js");
|
|
4
5
|
const dialect_adapter_base_js_1 = require("../dialect-adapter-base.js");
|
|
5
6
|
const LOCK_ID = 'ea586330-2c93-47c8-908d-981d9d270f9d';
|
|
6
7
|
const LOCK_TIMEOUT_SECONDS = 60 * 60;
|
|
@@ -18,12 +19,10 @@ class MysqlAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
|
|
|
18
19
|
// is released using `release_lock`. This way we know that the lock is either
|
|
19
20
|
// released by us after successfull or failed migrations OR it's released by
|
|
20
21
|
// MySQL if the process gets killed for some reason.
|
|
21
|
-
await db
|
|
22
|
-
.raw(`select get_lock('${LOCK_ID}', ${LOCK_TIMEOUT_SECONDS})`)
|
|
23
|
-
.execute();
|
|
22
|
+
await (0, sql_js_1.sql) `select get_lock(${sql_js_1.sql.literal(LOCK_ID)}, ${sql_js_1.sql.literal(LOCK_TIMEOUT_SECONDS)})`.execute(db);
|
|
24
23
|
}
|
|
25
24
|
async releaseMigrationLock(db) {
|
|
26
|
-
await
|
|
25
|
+
await (0, sql_js_1.sql) `select release_lock(${sql_js_1.sql.literal(LOCK_ID)})`.execute(db);
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
28
|
exports.MysqlAdapter = MysqlAdapter;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MysqlIntrospector = void 0;
|
|
4
4
|
const migrator_js_1 = require("../../migration/migrator.js");
|
|
5
5
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
6
|
+
const sql_js_1 = require("../../raw-builder/sql.js");
|
|
6
7
|
class MysqlIntrospector {
|
|
7
8
|
#db;
|
|
8
9
|
constructor(db) {
|
|
@@ -12,7 +13,7 @@ class MysqlIntrospector {
|
|
|
12
13
|
let query = this.#db
|
|
13
14
|
.selectFrom('information_schema.columns')
|
|
14
15
|
.selectAll()
|
|
15
|
-
.where('table_schema', '=',
|
|
16
|
+
.where('table_schema', '=', (0, sql_js_1.sql) `database()`)
|
|
16
17
|
.castTo();
|
|
17
18
|
if (!options.withInternalKyselyTables) {
|
|
18
19
|
query = query
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PostgresAdapter = void 0;
|
|
4
|
+
const sql_js_1 = require("../../raw-builder/sql.js");
|
|
4
5
|
const dialect_adapter_base_js_1 = require("../dialect-adapter-base.js");
|
|
5
6
|
// Random id for our transaction lock.
|
|
6
|
-
const LOCK_ID =
|
|
7
|
+
const LOCK_ID = 3853314791062309107n;
|
|
7
8
|
class PostgresAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
|
|
8
9
|
get supportsTransactionalDdl() {
|
|
9
10
|
return true;
|
|
@@ -13,7 +14,7 @@ class PostgresAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
|
|
|
13
14
|
}
|
|
14
15
|
async acquireMigrationLock(db) {
|
|
15
16
|
// Acquire a transaction level advisory lock.
|
|
16
|
-
await
|
|
17
|
+
await (0, sql_js_1.sql) `select pg_advisory_xact_lock(${sql_js_1.sql.literal(LOCK_ID)})`.execute(db);
|
|
17
18
|
}
|
|
18
19
|
async releaseMigrationLock() {
|
|
19
20
|
// Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SqliteIntrospector = void 0;
|
|
4
4
|
const migrator_js_1 = require("../../migration/migrator.js");
|
|
5
|
+
const sql_js_1 = require("../../raw-builder/sql.js");
|
|
5
6
|
class SqliteIntrospector {
|
|
6
7
|
#db;
|
|
7
8
|
constructor(db) {
|
|
@@ -27,7 +28,7 @@ class SqliteIntrospector {
|
|
|
27
28
|
async #getTableMetadata(table) {
|
|
28
29
|
const db = this.#db;
|
|
29
30
|
const columns = await db
|
|
30
|
-
.selectFrom(
|
|
31
|
+
.selectFrom((0, sql_js_1.sql) `PRAGMA_TABLE_INFO(${table})`.as('table_info'))
|
|
31
32
|
.select(['name', 'type', 'notnull'])
|
|
32
33
|
.castTo()
|
|
33
34
|
.execute();
|
|
@@ -17,9 +17,11 @@ export * from './query-builder/delete-result.js';
|
|
|
17
17
|
export * from './query-builder/update-result.js';
|
|
18
18
|
export * from './query-builder/on-conflict-builder.js';
|
|
19
19
|
export * from './raw-builder/raw-builder.js';
|
|
20
|
+
export * from './raw-builder/sql.js';
|
|
20
21
|
export * from './query-executor/query-executor.js';
|
|
21
22
|
export * from './query-executor/default-query-executor.js';
|
|
22
23
|
export * from './query-executor/noop-query-executor.js';
|
|
24
|
+
export * from './query-executor/query-executor-provider.js';
|
|
23
25
|
export * from './query-compiler/default-query-compiler.js';
|
|
24
26
|
export * from './query-compiler/compiled-query.js';
|
|
25
27
|
export * from './schema/schema.js';
|
|
@@ -29,9 +29,11 @@ __exportStar(require("./query-builder/delete-result.js"), exports);
|
|
|
29
29
|
__exportStar(require("./query-builder/update-result.js"), exports);
|
|
30
30
|
__exportStar(require("./query-builder/on-conflict-builder.js"), exports);
|
|
31
31
|
__exportStar(require("./raw-builder/raw-builder.js"), exports);
|
|
32
|
+
__exportStar(require("./raw-builder/sql.js"), exports);
|
|
32
33
|
__exportStar(require("./query-executor/query-executor.js"), exports);
|
|
33
34
|
__exportStar(require("./query-executor/default-query-executor.js"), exports);
|
|
34
35
|
__exportStar(require("./query-executor/noop-query-executor.js"), exports);
|
|
36
|
+
__exportStar(require("./query-executor/query-executor-provider.js"), exports);
|
|
35
37
|
__exportStar(require("./query-compiler/default-query-compiler.js"), exports);
|
|
36
38
|
__exportStar(require("./query-compiler/compiled-query.js"), exports);
|
|
37
39
|
__exportStar(require("./schema/schema.js"), exports);
|
package/dist/cjs/kysely.d.ts
CHANGED
|
@@ -6,11 +6,9 @@ import { QueryCreator } from './query-creator.js';
|
|
|
6
6
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
7
7
|
import { DatabaseIntrospector } from './dialect/database-introspector.js';
|
|
8
8
|
import { Driver, IsolationLevel } from './driver/driver.js';
|
|
9
|
-
import { ParseContext } from './parser/parse-context.js';
|
|
10
9
|
import { FunctionBuilder } from './query-builder/function-builder.js';
|
|
11
10
|
import { LogConfig } from './util/log.js';
|
|
12
|
-
import {
|
|
13
|
-
import { DialectAdapter } from './dialect/dialect-adapter.js';
|
|
11
|
+
import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
|
|
14
12
|
/**
|
|
15
13
|
* The main Kysely class.
|
|
16
14
|
*
|
|
@@ -54,7 +52,7 @@ import { DialectAdapter } from './dialect/dialect-adapter.js';
|
|
|
54
52
|
* in the database and values must be interfaces that describe the rows in those
|
|
55
53
|
* tables. See the examples above.
|
|
56
54
|
*/
|
|
57
|
-
export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
55
|
+
export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider {
|
|
58
56
|
#private;
|
|
59
57
|
constructor(args: KyselyConfig);
|
|
60
58
|
constructor(args: KyselyProps);
|
|
@@ -226,7 +224,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
226
224
|
* @internal
|
|
227
225
|
* @private
|
|
228
226
|
*/
|
|
229
|
-
|
|
227
|
+
getExecutor(): QueryExecutor;
|
|
230
228
|
}
|
|
231
229
|
export declare class Transaction<DB> extends Kysely<DB> {
|
|
232
230
|
#private;
|
|
@@ -357,7 +355,6 @@ export interface KyselyProps {
|
|
|
357
355
|
readonly driver: Driver;
|
|
358
356
|
readonly executor: QueryExecutor;
|
|
359
357
|
readonly dialect: Dialect;
|
|
360
|
-
readonly parseContext: ParseContext;
|
|
361
358
|
}
|
|
362
359
|
export declare function isKyselyProps(obj: unknown): obj is KyselyProps;
|
|
363
360
|
export interface KyselyConfig {
|
package/dist/cjs/kysely.js
CHANGED
|
@@ -11,10 +11,8 @@ const runtime_driver_js_1 = require("./driver/runtime-driver.js");
|
|
|
11
11
|
const single_connection_provider_js_1 = require("./driver/single-connection-provider.js");
|
|
12
12
|
const driver_js_1 = require("./driver/driver.js");
|
|
13
13
|
const prevent_await_js_1 = require("./util/prevent-await.js");
|
|
14
|
-
const parse_context_js_1 = require("./parser/parse-context.js");
|
|
15
14
|
const function_builder_js_1 = require("./query-builder/function-builder.js");
|
|
16
15
|
const log_js_1 = require("./util/log.js");
|
|
17
|
-
const private_symbols_js_1 = require("./util/private-symbols.js");
|
|
18
16
|
/**
|
|
19
17
|
* The main Kysely class.
|
|
20
18
|
*
|
|
@@ -64,7 +62,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
64
62
|
let superProps;
|
|
65
63
|
let props;
|
|
66
64
|
if (isKyselyProps(args)) {
|
|
67
|
-
superProps = { executor: args.executor
|
|
65
|
+
superProps = { executor: args.executor };
|
|
68
66
|
props = { ...args };
|
|
69
67
|
}
|
|
70
68
|
else {
|
|
@@ -73,17 +71,15 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
73
71
|
const compiler = dialect.createQueryCompiler();
|
|
74
72
|
const adapter = dialect.createAdapter();
|
|
75
73
|
const log = new log_js_1.Log(args.log ?? []);
|
|
76
|
-
const parseContext = new parse_context_js_1.DefaultParseContext(adapter);
|
|
77
74
|
const runtimeDriver = new runtime_driver_js_1.RuntimeDriver(driver, log);
|
|
78
75
|
const connectionProvider = new default_connection_provider_js_1.DefaultConnectionProvider(runtimeDriver);
|
|
79
|
-
const executor = new default_query_executor_js_1.DefaultQueryExecutor(compiler, connectionProvider, args.plugins ?? []);
|
|
80
|
-
superProps = { executor
|
|
76
|
+
const executor = new default_query_executor_js_1.DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);
|
|
77
|
+
superProps = { executor };
|
|
81
78
|
props = {
|
|
82
79
|
config: args,
|
|
83
80
|
executor,
|
|
84
81
|
dialect,
|
|
85
82
|
driver: runtimeDriver,
|
|
86
|
-
parseContext,
|
|
87
83
|
};
|
|
88
84
|
}
|
|
89
85
|
super(superProps);
|
|
@@ -139,7 +135,7 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
139
135
|
* ```
|
|
140
136
|
*/
|
|
141
137
|
get fn() {
|
|
142
|
-
return new function_builder_js_1.FunctionBuilder(
|
|
138
|
+
return new function_builder_js_1.FunctionBuilder();
|
|
143
139
|
}
|
|
144
140
|
/**
|
|
145
141
|
* Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.
|
|
@@ -285,8 +281,8 @@ class Kysely extends query_creator_js_1.QueryCreator {
|
|
|
285
281
|
* @internal
|
|
286
282
|
* @private
|
|
287
283
|
*/
|
|
288
|
-
|
|
289
|
-
return this.#props.
|
|
284
|
+
getExecutor() {
|
|
285
|
+
return this.#props.executor;
|
|
290
286
|
}
|
|
291
287
|
}
|
|
292
288
|
exports.Kysely = Kysely;
|
|
@@ -333,8 +329,7 @@ function isKyselyProps(obj) {
|
|
|
333
329
|
(0, object_utils_js_1.isObject)(obj.config) &&
|
|
334
330
|
(0, object_utils_js_1.isObject)(obj.driver) &&
|
|
335
331
|
(0, object_utils_js_1.isObject)(obj.executor) &&
|
|
336
|
-
(0, object_utils_js_1.isObject)(obj.dialect)
|
|
337
|
-
(0, object_utils_js_1.isObject)(obj.parseContext));
|
|
332
|
+
(0, object_utils_js_1.isObject)(obj.dialect));
|
|
338
333
|
}
|
|
339
334
|
exports.isKyselyProps = isKyselyProps;
|
|
340
335
|
class ConnectionBuilder {
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Migrator = exports.NO_MIGRATIONS = exports.MIGRATION_LOCK_ID = exports.MIGRATION_LOCK_TABLE = exports.MIGRATION_TABLE = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const private_symbols_js_1 = require("../util/private-symbols.js");
|
|
6
5
|
exports.MIGRATION_TABLE = 'kysely_migration';
|
|
7
6
|
exports.MIGRATION_LOCK_TABLE = 'kysely_migration_lock';
|
|
8
7
|
exports.MIGRATION_LOCK_ID = 'migration_lock';
|
|
@@ -262,9 +261,10 @@ class Migrator {
|
|
|
262
261
|
return !!lockRow;
|
|
263
262
|
}
|
|
264
263
|
async #runMigrations(getTargetMigrationIndex) {
|
|
264
|
+
const adapter = this.#props.db.getExecutor().adapter;
|
|
265
265
|
const run = async (db) => {
|
|
266
266
|
try {
|
|
267
|
-
await
|
|
267
|
+
await adapter.acquireMigrationLock(db);
|
|
268
268
|
const state = await this.#getState(db);
|
|
269
269
|
if (state.migrations.length === 0) {
|
|
270
270
|
return { results: [] };
|
|
@@ -282,10 +282,10 @@ class Migrator {
|
|
|
282
282
|
return { results: [] };
|
|
283
283
|
}
|
|
284
284
|
finally {
|
|
285
|
-
await
|
|
285
|
+
await adapter.releaseMigrationLock(db);
|
|
286
286
|
}
|
|
287
287
|
};
|
|
288
|
-
if (
|
|
288
|
+
if (adapter.supportsTransactionalDdl) {
|
|
289
289
|
return this.#props.db.transaction().execute(run);
|
|
290
290
|
}
|
|
291
291
|
else {
|
|
@@ -220,7 +220,7 @@ class OperationNodeTransformer {
|
|
|
220
220
|
return {
|
|
221
221
|
kind: 'RawNode',
|
|
222
222
|
sqlFragments: (0, object_utils_js_1.freeze)([...node.sqlFragments]),
|
|
223
|
-
|
|
223
|
+
parameters: this.transformNodeList(node.parameters),
|
|
224
224
|
};
|
|
225
225
|
}
|
|
226
226
|
transformWhere(node) {
|
|
@@ -2,13 +2,15 @@ import { OperationNode } from './operation-node.js';
|
|
|
2
2
|
export interface RawNode extends OperationNode {
|
|
3
3
|
readonly kind: 'RawNode';
|
|
4
4
|
readonly sqlFragments: ReadonlyArray<string>;
|
|
5
|
-
readonly
|
|
5
|
+
readonly parameters: ReadonlyArray<OperationNode>;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
10
|
export declare const RawNode: Readonly<{
|
|
11
11
|
is(node: OperationNode): node is RawNode;
|
|
12
|
-
create(sqlFragments: ReadonlyArray<string>,
|
|
12
|
+
create(sqlFragments: ReadonlyArray<string>, parameters: ReadonlyArray<OperationNode>): RawNode;
|
|
13
13
|
createWithSql(sql: string): RawNode;
|
|
14
|
+
createWithChild(child: OperationNode): RawNode;
|
|
15
|
+
createWithChildren(children: ReadonlyArray<OperationNode>): RawNode;
|
|
14
16
|
}>;
|
|
@@ -9,14 +9,20 @@ exports.RawNode = (0, object_utils_js_1.freeze)({
|
|
|
9
9
|
is(node) {
|
|
10
10
|
return node.kind === 'RawNode';
|
|
11
11
|
},
|
|
12
|
-
create(sqlFragments,
|
|
12
|
+
create(sqlFragments, parameters) {
|
|
13
13
|
return (0, object_utils_js_1.freeze)({
|
|
14
14
|
kind: 'RawNode',
|
|
15
15
|
sqlFragments: (0, object_utils_js_1.freeze)(sqlFragments),
|
|
16
|
-
|
|
16
|
+
parameters: (0, object_utils_js_1.freeze)(parameters),
|
|
17
17
|
});
|
|
18
18
|
},
|
|
19
19
|
createWithSql(sql) {
|
|
20
20
|
return exports.RawNode.create([sql], []);
|
|
21
21
|
},
|
|
22
|
+
createWithChild(child) {
|
|
23
|
+
return exports.RawNode.create(['', ''], [child]);
|
|
24
|
+
},
|
|
25
|
+
createWithChildren(children) {
|
|
26
|
+
return exports.RawNode.create(new Array(children.length + 1).fill(''), children);
|
|
27
|
+
},
|
|
22
28
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { RawBuilder } from '../index-nodeless.js';
|
|
1
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
3
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
4
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
-
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder,
|
|
5
|
-
|
|
6
|
-
export declare type ComplexExpression<DB, TB extends keyof DB> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB>;
|
|
5
|
+
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
|
|
6
|
+
export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB>;
|
|
7
7
|
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
|
|
8
|
-
export declare function parseComplexExpression(
|
|
9
|
-
export declare function parseAliasedComplexExpression(
|
|
8
|
+
export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
|
|
9
|
+
export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
|
|
10
10
|
export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
|
|
@@ -3,22 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.isComplexExpression = exports.parseAliasedComplexExpression = exports.parseComplexExpression = void 0;
|
|
4
4
|
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
5
5
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
|
-
|
|
6
|
+
const parse_utils_js_1 = require("./parse-utils.js");
|
|
7
|
+
function parseComplexExpression(exp) {
|
|
7
8
|
if ((0, operation_node_source_js_1.isOperationNodeSource)(exp)) {
|
|
8
9
|
return exp.toOperationNode();
|
|
9
10
|
}
|
|
10
11
|
else if ((0, object_utils_js_1.isFunction)(exp)) {
|
|
11
|
-
return exp(
|
|
12
|
+
return exp((0, parse_utils_js_1.createExpressionBuilder)()).toOperationNode();
|
|
12
13
|
}
|
|
13
14
|
throw new Error(`invalid expression: ${JSON.stringify(exp)}`);
|
|
14
15
|
}
|
|
15
16
|
exports.parseComplexExpression = parseComplexExpression;
|
|
16
|
-
function parseAliasedComplexExpression(
|
|
17
|
+
function parseAliasedComplexExpression(exp) {
|
|
17
18
|
if ((0, operation_node_source_js_1.isOperationNodeSource)(exp)) {
|
|
18
19
|
return exp.toOperationNode();
|
|
19
20
|
}
|
|
20
21
|
else if ((0, object_utils_js_1.isFunction)(exp)) {
|
|
21
|
-
return exp(
|
|
22
|
+
return exp((0, parse_utils_js_1.createExpressionBuilder)()).toOperationNode();
|
|
22
23
|
}
|
|
23
24
|
throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
|
|
24
25
|
}
|
|
@@ -4,21 +4,21 @@ import { Operator } from '../operation-node/operator-node.js';
|
|
|
4
4
|
import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|
5
5
|
import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
|
|
6
6
|
import { FilterExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
7
|
-
import { ParseContext } from './parse-context.js';
|
|
8
7
|
import { WhereInterface } from '../query-builder/where-interface.js';
|
|
9
8
|
import { HavingInterface } from '../query-builder/having-interface.js';
|
|
9
|
+
import { ComplexExpression } from './complex-expression-parser.js';
|
|
10
10
|
export declare type FilterValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
11
11
|
export declare type FilterValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
12
|
-
export declare type ExistsExpression<DB, TB extends keyof DB> =
|
|
12
|
+
export declare type ExistsExpression<DB, TB extends keyof DB> = ComplexExpression<DB, TB, any>;
|
|
13
13
|
export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
|
|
14
14
|
export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
|
|
15
15
|
export declare type FilterOperator = Operator | AnyRawBuilder;
|
|
16
16
|
declare type FilterType = 'where' | 'having' | 'on';
|
|
17
|
-
export declare function parseWhereFilter(
|
|
18
|
-
export declare function parseHavingFilter(
|
|
19
|
-
export declare function parseOnFilter(
|
|
20
|
-
export declare function parseReferenceFilter(
|
|
21
|
-
export declare function parseExistFilter(
|
|
22
|
-
export declare function parseNotExistFilter(
|
|
23
|
-
export declare function parseFilter(
|
|
17
|
+
export declare function parseWhereFilter(args: any[]): FilterExpressionNode;
|
|
18
|
+
export declare function parseHavingFilter(args: any[]): FilterExpressionNode;
|
|
19
|
+
export declare function parseOnFilter(args: any[]): FilterExpressionNode;
|
|
20
|
+
export declare function parseReferenceFilter(lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
|
|
21
|
+
export declare function parseExistFilter(arg: ExistsExpression<any, any>): FilterNode;
|
|
22
|
+
export declare function parseNotExistFilter(arg: ExistsExpression<any, any>): FilterNode;
|
|
23
|
+
export declare function parseFilter(type: FilterType, args: any[]): FilterExpressionNode;
|
|
24
24
|
export {};
|
|
@@ -10,48 +10,49 @@ const parens_node_js_1 = require("../operation-node/parens-node.js");
|
|
|
10
10
|
const reference_parser_js_1 = require("./reference-parser.js");
|
|
11
11
|
const value_parser_js_1 = require("./value-parser.js");
|
|
12
12
|
const value_node_js_1 = require("../operation-node/value-node.js");
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const parse_utils_js_1 = require("./parse-utils.js");
|
|
14
|
+
function parseWhereFilter(args) {
|
|
15
|
+
return parseFilter('where', args);
|
|
15
16
|
}
|
|
16
17
|
exports.parseWhereFilter = parseWhereFilter;
|
|
17
|
-
function parseHavingFilter(
|
|
18
|
-
return parseFilter(
|
|
18
|
+
function parseHavingFilter(args) {
|
|
19
|
+
return parseFilter('having', args);
|
|
19
20
|
}
|
|
20
21
|
exports.parseHavingFilter = parseHavingFilter;
|
|
21
|
-
function parseOnFilter(
|
|
22
|
-
return parseFilter(
|
|
22
|
+
function parseOnFilter(args) {
|
|
23
|
+
return parseFilter('on', args);
|
|
23
24
|
}
|
|
24
25
|
exports.parseOnFilter = parseOnFilter;
|
|
25
|
-
function parseReferenceFilter(
|
|
26
|
-
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(
|
|
26
|
+
function parseReferenceFilter(lhs, op, rhs) {
|
|
27
|
+
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(lhs), parseFilterOperator(op), (0, reference_parser_js_1.parseReferenceExpression)(rhs));
|
|
27
28
|
}
|
|
28
29
|
exports.parseReferenceFilter = parseReferenceFilter;
|
|
29
|
-
function parseExistFilter(
|
|
30
|
-
return parseExistExpression(
|
|
30
|
+
function parseExistFilter(arg) {
|
|
31
|
+
return parseExistExpression('exists', arg);
|
|
31
32
|
}
|
|
32
33
|
exports.parseExistFilter = parseExistFilter;
|
|
33
|
-
function parseNotExistFilter(
|
|
34
|
-
return parseExistExpression(
|
|
34
|
+
function parseNotExistFilter(arg) {
|
|
35
|
+
return parseExistExpression('not exists', arg);
|
|
35
36
|
}
|
|
36
37
|
exports.parseNotExistFilter = parseNotExistFilter;
|
|
37
|
-
function parseFilter(
|
|
38
|
+
function parseFilter(type, args) {
|
|
38
39
|
if (args.length === 3) {
|
|
39
|
-
return parseThreeArgFilter(
|
|
40
|
+
return parseThreeArgFilter(args[0], args[1], args[2]);
|
|
40
41
|
}
|
|
41
42
|
else if (args.length === 1) {
|
|
42
|
-
return parseOneArgFilter(
|
|
43
|
+
return parseOneArgFilter(type, args[0]);
|
|
43
44
|
}
|
|
44
45
|
throw createFilterError(type, args);
|
|
45
46
|
}
|
|
46
47
|
exports.parseFilter = parseFilter;
|
|
47
|
-
function parseThreeArgFilter(
|
|
48
|
+
function parseThreeArgFilter(left, op, right) {
|
|
48
49
|
if ((op === 'is' || op === 'is not') && ((0, object_utils_js_1.isNull)(right) || (0, object_utils_js_1.isBoolean)(right))) {
|
|
49
|
-
return parseIsFilter(
|
|
50
|
+
return parseIsFilter(left, op, right);
|
|
50
51
|
}
|
|
51
|
-
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(
|
|
52
|
+
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseFilterOperator(op), (0, value_parser_js_1.parseValueExpressionOrList)(right));
|
|
52
53
|
}
|
|
53
|
-
function parseIsFilter(
|
|
54
|
-
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(
|
|
54
|
+
function parseIsFilter(left, op, right) {
|
|
55
|
+
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseFilterOperator(op), value_node_js_1.ValueNode.createImmediate(right));
|
|
55
56
|
}
|
|
56
57
|
function parseFilterOperator(op) {
|
|
57
58
|
if ((0, object_utils_js_1.isString)(op) && operator_node_js_1.OPERATORS.includes(op)) {
|
|
@@ -62,12 +63,12 @@ function parseFilterOperator(op) {
|
|
|
62
63
|
}
|
|
63
64
|
throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
|
|
64
65
|
}
|
|
65
|
-
function parseExistExpression(
|
|
66
|
-
return filter_node_js_1.FilterNode.create(undefined, operator_node_js_1.OperatorNode.create(type), (0, value_parser_js_1.parseValueExpressionOrList)(
|
|
66
|
+
function parseExistExpression(type, arg) {
|
|
67
|
+
return filter_node_js_1.FilterNode.create(undefined, operator_node_js_1.OperatorNode.create(type), (0, value_parser_js_1.parseValueExpressionOrList)(arg));
|
|
67
68
|
}
|
|
68
|
-
function parseOneArgFilter(
|
|
69
|
+
function parseOneArgFilter(type, arg) {
|
|
69
70
|
if ((0, object_utils_js_1.isFunction)(arg)) {
|
|
70
|
-
return GROUP_PARSERS[type](
|
|
71
|
+
return GROUP_PARSERS[type](arg);
|
|
71
72
|
}
|
|
72
73
|
else if ((0, operation_node_source_js_1.isOperationNodeSource)(arg)) {
|
|
73
74
|
const node = arg.toOperationNode();
|
|
@@ -81,24 +82,24 @@ function createFilterError(type, args) {
|
|
|
81
82
|
return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
|
|
82
83
|
}
|
|
83
84
|
const GROUP_PARSERS = (0, object_utils_js_1.freeze)({
|
|
84
|
-
where(
|
|
85
|
-
const query = callback(
|
|
85
|
+
where(callback) {
|
|
86
|
+
const query = callback((0, parse_utils_js_1.createSelectQueryBuilder)());
|
|
86
87
|
const queryNode = query.toOperationNode();
|
|
87
88
|
if (!queryNode.where) {
|
|
88
89
|
throw new Error('no `where` methods called insided a group callback');
|
|
89
90
|
}
|
|
90
91
|
return parens_node_js_1.ParensNode.create(queryNode.where.where);
|
|
91
92
|
},
|
|
92
|
-
having(
|
|
93
|
-
const query = callback(
|
|
93
|
+
having(callback) {
|
|
94
|
+
const query = callback((0, parse_utils_js_1.createSelectQueryBuilder)());
|
|
94
95
|
const queryNode = query.toOperationNode();
|
|
95
96
|
if (!queryNode.having) {
|
|
96
97
|
throw new Error('no `having` methods called insided a group callback');
|
|
97
98
|
}
|
|
98
99
|
return parens_node_js_1.ParensNode.create(queryNode.having.having);
|
|
99
100
|
},
|
|
100
|
-
on(
|
|
101
|
-
const joinBuilder = callback(
|
|
101
|
+
on(callback) {
|
|
102
|
+
const joinBuilder = callback((0, parse_utils_js_1.createJoinBuilder)('InnerJoin', 'table'));
|
|
102
103
|
const joinNode = joinBuilder.toOperationNode();
|
|
103
104
|
if (!joinNode.on) {
|
|
104
105
|
throw new Error('no `on` methods called insided a group callback');
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
2
|
-
import { ParseContext } from './parse-context.js';
|
|
3
2
|
import { ReferenceExpressionOrList } from './reference-parser.js';
|
|
4
|
-
export declare function parseGroupBy(
|
|
3
|
+
export declare function parseGroupBy(orderBy: ReferenceExpressionOrList<any, any>): GroupByItemNode[];
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseGroupBy = void 0;
|
|
4
4
|
const group_by_item_node_js_1 = require("../operation-node/group-by-item-node.js");
|
|
5
5
|
const reference_parser_js_1 = require("./reference-parser.js");
|
|
6
|
-
function parseGroupBy(
|
|
7
|
-
return (0, reference_parser_js_1.parseReferenceExpressionOrList)(
|
|
6
|
+
function parseGroupBy(orderBy) {
|
|
7
|
+
return (0, reference_parser_js_1.parseReferenceExpressionOrList)(orderBy).map(group_by_item_node_js_1.GroupByItemNode.create);
|
|
8
8
|
}
|
|
9
9
|
exports.parseGroupBy = parseGroupBy;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
2
|
-
import { ParseContext } from './parse-context.js';
|
|
3
2
|
import { ValueExpression } from './value-parser.js';
|
|
4
3
|
import { ValuesNode } from '../operation-node/values-node.js';
|
|
5
4
|
import { NonNullableInsertKeys, NullableInsertKeys, InsertType } from '../util/column-type.js';
|
|
@@ -9,4 +8,4 @@ export declare type InsertObject<DB, TB extends keyof DB> = {
|
|
|
9
8
|
[C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]>>;
|
|
10
9
|
};
|
|
11
10
|
export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
|
|
12
|
-
export declare function parseInsertObjectOrList(
|
|
11
|
+
export declare function parseInsertObjectOrList(args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
|
|
@@ -8,15 +8,15 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
8
8
|
const value_parser_js_1 = require("./value-parser.js");
|
|
9
9
|
const values_node_js_1 = require("../operation-node/values-node.js");
|
|
10
10
|
const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
|
|
11
|
-
function parseInsertObjectOrList(
|
|
12
|
-
return parseInsertColumnsAndValues(
|
|
11
|
+
function parseInsertObjectOrList(args) {
|
|
12
|
+
return parseInsertColumnsAndValues(Array.isArray(args) ? args : [args]);
|
|
13
13
|
}
|
|
14
14
|
exports.parseInsertObjectOrList = parseInsertObjectOrList;
|
|
15
|
-
function parseInsertColumnsAndValues(
|
|
15
|
+
function parseInsertColumnsAndValues(rows) {
|
|
16
16
|
const columns = parseColumnNamesAndIndexes(rows);
|
|
17
17
|
return [
|
|
18
18
|
(0, object_utils_js_1.freeze)([...columns.keys()].map(column_node_js_1.ColumnNode.create)),
|
|
19
|
-
values_node_js_1.ValuesNode.create(rows.map((row) => parseRowValues(
|
|
19
|
+
values_node_js_1.ValuesNode.create(rows.map((row) => parseRowValues(row, columns))),
|
|
20
20
|
];
|
|
21
21
|
}
|
|
22
22
|
function parseColumnNamesAndIndexes(rows) {
|
|
@@ -31,7 +31,7 @@ function parseColumnNamesAndIndexes(rows) {
|
|
|
31
31
|
}
|
|
32
32
|
return columns;
|
|
33
33
|
}
|
|
34
|
-
function parseRowValues(
|
|
34
|
+
function parseRowValues(row, columns) {
|
|
35
35
|
const rowColumns = Object.keys(row);
|
|
36
36
|
const rowValues = new Array(columns.size).fill(null);
|
|
37
37
|
for (const col of rowColumns) {
|
|
@@ -42,7 +42,7 @@ function parseRowValues(ctx, row, columns) {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
if (rowValues.some(complex_expression_parser_js_1.isComplexExpression)) {
|
|
45
|
-
return value_list_node_js_1.ValueListNode.create(rowValues.map((it) => (0, value_parser_js_1.parseValueExpression)(
|
|
45
|
+
return value_list_node_js_1.ValueListNode.create(rowValues.map((it) => (0, value_parser_js_1.parseValueExpression)(it)));
|
|
46
46
|
}
|
|
47
47
|
return primitive_value_list_node_js_1.PrimitiveValueListNode.create(rowValues);
|
|
48
48
|
}
|
|
@@ -2,10 +2,9 @@ import { JoinNode, JoinType } from '../operation-node/join-node.js';
|
|
|
2
2
|
import { AnyColumn, AnyColumnWithTable } from '../util/type-utils.js';
|
|
3
3
|
import { TableExpressionDatabase, TableExpressionTables } from './table-parser.js';
|
|
4
4
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
5
|
-
import { ParseContext } from './parse-context.js';
|
|
6
5
|
export declare type JoinReferenceExpression<DB, TB extends keyof DB, TE> = AnyJoinColumn<DB, TB, TE> | AnyJoinColumnWithTable<DB, TB, TE>;
|
|
7
6
|
export declare type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>) => JoinBuilder<any, any>;
|
|
8
7
|
declare type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>;
|
|
9
8
|
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, TE> = AnyColumnWithTable<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>>;
|
|
10
|
-
export declare function parseJoin(
|
|
9
|
+
export declare function parseJoin(joinType: JoinType, args: any[]): JoinNode;
|
|
11
10
|
export {};
|
|
@@ -4,22 +4,23 @@ exports.parseJoin = void 0;
|
|
|
4
4
|
const join_node_js_1 = require("../operation-node/join-node.js");
|
|
5
5
|
const table_parser_js_1 = require("./table-parser.js");
|
|
6
6
|
const filter_parser_js_1 = require("./filter-parser.js");
|
|
7
|
-
|
|
7
|
+
const parse_utils_js_1 = require("./parse-utils.js");
|
|
8
|
+
function parseJoin(joinType, args) {
|
|
8
9
|
if (args.length === 3) {
|
|
9
|
-
return parseSingleOnJoin(
|
|
10
|
+
return parseSingleOnJoin(joinType, args[0], args[1], args[2]);
|
|
10
11
|
}
|
|
11
12
|
else if (args.length === 2) {
|
|
12
|
-
return parseCallbackJoin(
|
|
13
|
+
return parseCallbackJoin(joinType, args[0], args[1]);
|
|
13
14
|
}
|
|
14
15
|
else {
|
|
15
16
|
throw new Error('not implemented');
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
exports.parseJoin = parseJoin;
|
|
19
|
-
function parseCallbackJoin(
|
|
20
|
-
const joinBuilder = callback(
|
|
20
|
+
function parseCallbackJoin(joinType, from, callback) {
|
|
21
|
+
const joinBuilder = callback((0, parse_utils_js_1.createJoinBuilder)(joinType, from));
|
|
21
22
|
return joinBuilder.toOperationNode();
|
|
22
23
|
}
|
|
23
|
-
function parseSingleOnJoin(
|
|
24
|
-
return join_node_js_1.JoinNode.createWithOn(joinType, (0, table_parser_js_1.parseTableExpression)(
|
|
24
|
+
function parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {
|
|
25
|
+
return join_node_js_1.JoinNode.createWithOn(joinType, (0, table_parser_js_1.parseTableExpression)(from), (0, filter_parser_js_1.parseReferenceFilter)(lhsColumn, '=', rhsColumn));
|
|
25
26
|
}
|