kysely 0.26.0 → 0.26.2
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 +6 -6
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +3 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +2 -2
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +4 -2
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -2
- package/dist/cjs/driver/runtime-driver.js +17 -2
- package/dist/cjs/expression/expression-builder.d.ts +299 -28
- package/dist/cjs/expression/expression-builder.js +36 -26
- package/dist/cjs/expression/expression-wrapper.d.ts +177 -8
- package/dist/cjs/expression/expression-wrapper.js +4 -4
- package/dist/cjs/expression/expression.d.ts +64 -1
- package/dist/cjs/helpers/mysql.d.ts +11 -8
- package/dist/cjs/helpers/mysql.js +21 -32
- package/dist/cjs/helpers/postgres.d.ts +8 -5
- package/dist/cjs/helpers/postgres.js +8 -5
- package/dist/cjs/helpers/sqlite.d.ts +164 -0
- package/dist/cjs/helpers/sqlite.js +180 -0
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/kysely.d.ts +4 -3
- package/dist/cjs/kysely.js +1 -1
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +4 -0
- package/dist/cjs/operation-node/common-table-expression-node.js +6 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/delete-query-node.js +3 -3
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +8 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +3 -0
- package/dist/cjs/operation-node/order-by-node.d.ts +2 -2
- package/dist/cjs/operation-node/order-by-node.js +4 -4
- package/dist/cjs/operation-node/over-node.d.ts +1 -1
- package/dist/cjs/operation-node/over-node.js +3 -3
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -4
- package/dist/cjs/operation-node/select-query-node.js +13 -7
- package/dist/cjs/operation-node/tuple-node.d.ts +12 -0
- package/dist/cjs/operation-node/tuple-node.js +18 -0
- package/dist/cjs/parser/binary-operation-parser.d.ts +11 -7
- package/dist/cjs/parser/binary-operation-parser.js +35 -46
- package/dist/cjs/parser/expression-parser.d.ts +9 -4
- package/dist/cjs/parser/join-parser.d.ts +2 -2
- package/dist/cjs/parser/join-parser.js +2 -3
- package/dist/cjs/parser/order-by-parser.d.ts +6 -2
- package/dist/cjs/parser/order-by-parser.js +41 -7
- package/dist/cjs/parser/parse-utils.js +2 -2
- package/dist/cjs/parser/reference-parser.js +1 -1
- package/dist/cjs/parser/select-parser.d.ts +5 -5
- package/dist/cjs/parser/set-operation-parser.d.ts +3 -1
- package/dist/cjs/parser/set-operation-parser.js +13 -4
- package/dist/cjs/parser/tuple-parser.d.ts +47 -0
- package/dist/cjs/parser/tuple-parser.js +2 -0
- package/dist/cjs/parser/value-parser.d.ts +4 -2
- package/dist/cjs/parser/value-parser.js +12 -1
- package/dist/cjs/parser/with-parser.d.ts +3 -2
- package/dist/cjs/parser/with-parser.js +16 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +3 -3
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +4 -8
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +13 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +50 -14
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +2 -2
- package/dist/cjs/query-builder/case-builder.js +8 -4
- package/dist/cjs/query-builder/cte-builder.d.ts +20 -0
- package/dist/cjs/query-builder/cte-builder.js +39 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +74 -24
- package/dist/cjs/query-builder/delete-query-builder.js +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +41 -6
- package/dist/cjs/query-builder/function-module.js +3 -0
- package/dist/cjs/query-builder/having-interface.d.ts +2 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +1 -1
- package/dist/cjs/query-builder/join-builder.d.ts +2 -6
- package/dist/cjs/query-builder/join-builder.js +2 -2
- package/dist/cjs/query-builder/json-path-builder.d.ts +60 -4
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +143 -44
- package/dist/cjs/query-builder/on-conflict-builder.js +4 -4
- package/dist/cjs/query-builder/over-builder.js +1 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +245 -86
- package/dist/cjs/query-builder/select-query-builder.js +72 -924
- package/dist/cjs/query-builder/update-query-builder.d.ts +106 -25
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +71 -24
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +39 -7
- package/dist/cjs/query-creator.d.ts +74 -2
- package/dist/cjs/query-creator.js +83 -6
- package/dist/cjs/raw-builder/raw-builder.d.ts +88 -49
- package/dist/cjs/raw-builder/raw-builder.js +18 -45
- package/dist/cjs/raw-builder/sql.js +8 -8
- package/dist/cjs/schema/alter-table-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-builder.js +12 -0
- package/dist/cjs/schema/create-index-builder.d.ts +1 -1
- package/dist/cjs/schema/create-index-builder.js +1 -1
- package/dist/cjs/util/column-type.d.ts +7 -6
- package/dist/cjs/util/json-object-args.d.ts +3 -0
- package/dist/cjs/util/json-object-args.js +35 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +9 -1
- package/dist/cjs/util/type-utils.d.ts +10 -10
- package/dist/esm/dialect/dialect-adapter-base.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +3 -2
- package/dist/esm/dialect/postgres/postgres-adapter.js +2 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +2 -2
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +4 -2
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -2
- package/dist/esm/driver/runtime-driver.js +17 -2
- package/dist/esm/expression/expression-builder.d.ts +299 -28
- package/dist/esm/expression/expression-builder.js +40 -30
- package/dist/esm/expression/expression-wrapper.d.ts +177 -8
- package/dist/esm/expression/expression-wrapper.js +5 -5
- package/dist/esm/expression/expression.d.ts +64 -1
- package/dist/esm/helpers/mysql.d.ts +11 -8
- package/dist/esm/helpers/mysql.js +21 -32
- package/dist/esm/helpers/postgres.d.ts +8 -5
- package/dist/esm/helpers/postgres.js +8 -5
- package/dist/esm/helpers/sqlite.d.ts +164 -0
- package/dist/esm/helpers/sqlite.js +175 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/kysely.d.ts +4 -3
- package/dist/esm/kysely.js +1 -1
- package/dist/esm/operation-node/common-table-expression-node.d.ts +4 -0
- package/dist/esm/operation-node/common-table-expression-node.js +6 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -1
- package/dist/esm/operation-node/delete-query-node.js +3 -3
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +8 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +3 -0
- package/dist/esm/operation-node/order-by-node.d.ts +2 -2
- package/dist/esm/operation-node/order-by-node.js +4 -4
- package/dist/esm/operation-node/over-node.d.ts +1 -1
- package/dist/esm/operation-node/over-node.js +3 -3
- package/dist/esm/operation-node/select-query-node.d.ts +5 -4
- package/dist/esm/operation-node/select-query-node.js +13 -7
- package/dist/esm/operation-node/tuple-node.d.ts +12 -0
- package/dist/esm/operation-node/tuple-node.js +16 -0
- package/dist/esm/parser/binary-operation-parser.d.ts +11 -7
- package/dist/esm/parser/binary-operation-parser.js +36 -47
- package/dist/esm/parser/expression-parser.d.ts +9 -4
- package/dist/esm/parser/join-parser.d.ts +2 -2
- package/dist/esm/parser/join-parser.js +3 -4
- package/dist/esm/parser/order-by-parser.d.ts +6 -2
- package/dist/esm/parser/order-by-parser.js +40 -7
- package/dist/esm/parser/parse-utils.js +3 -3
- package/dist/esm/parser/reference-parser.js +1 -1
- package/dist/esm/parser/select-parser.d.ts +5 -5
- package/dist/esm/parser/set-operation-parser.d.ts +3 -1
- package/dist/esm/parser/set-operation-parser.js +11 -2
- package/dist/esm/parser/tuple-parser.d.ts +47 -0
- package/dist/esm/parser/tuple-parser.js +2 -0
- package/dist/esm/parser/value-parser.d.ts +4 -2
- package/dist/esm/parser/value-parser.js +10 -1
- package/dist/esm/parser/with-parser.d.ts +3 -2
- package/dist/esm/parser/with-parser.js +16 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +3 -3
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +5 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +13 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +51 -15
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +3 -3
- package/dist/esm/query-builder/case-builder.js +10 -6
- package/dist/esm/query-builder/cte-builder.d.ts +20 -0
- package/dist/esm/query-builder/cte-builder.js +36 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +74 -24
- package/dist/esm/query-builder/delete-query-builder.js +4 -4
- package/dist/esm/query-builder/function-module.d.ts +41 -6
- package/dist/esm/query-builder/function-module.js +3 -0
- package/dist/esm/query-builder/having-interface.d.ts +2 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +1 -1
- package/dist/esm/query-builder/join-builder.d.ts +2 -6
- package/dist/esm/query-builder/join-builder.js +3 -3
- package/dist/esm/query-builder/json-path-builder.d.ts +60 -4
- package/dist/esm/query-builder/on-conflict-builder.d.ts +143 -44
- package/dist/esm/query-builder/on-conflict-builder.js +5 -5
- package/dist/esm/query-builder/over-builder.js +1 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +245 -86
- package/dist/esm/query-builder/select-query-builder.js +72 -923
- package/dist/esm/query-builder/update-query-builder.d.ts +106 -25
- package/dist/esm/query-builder/update-query-builder.js +3 -3
- package/dist/esm/query-builder/where-interface.d.ts +71 -24
- package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/esm/query-compiler/default-query-compiler.js +39 -7
- package/dist/esm/query-creator.d.ts +74 -2
- package/dist/esm/query-creator.js +84 -7
- package/dist/esm/raw-builder/raw-builder.d.ts +88 -49
- package/dist/esm/raw-builder/raw-builder.js +17 -42
- package/dist/esm/raw-builder/sql.js +9 -9
- package/dist/esm/schema/alter-table-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-builder.js +12 -0
- package/dist/esm/schema/create-index-builder.d.ts +1 -1
- package/dist/esm/schema/create-index-builder.js +2 -2
- package/dist/esm/util/column-type.d.ts +7 -6
- package/dist/esm/util/json-object-args.d.ts +3 -0
- package/dist/esm/util/json-object-args.js +32 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +7 -0
- package/dist/esm/util/type-utils.d.ts +10 -10
- package/helpers/sqlite.d.ts +1 -0
- package/helpers/sqlite.js +1 -0
- package/package.json +7 -4
|
@@ -40,9 +40,9 @@ export type AnyColumn<DB, TB extends keyof DB> = DrainOuterGeneric<{
|
|
|
40
40
|
/**
|
|
41
41
|
* Extracts a column type.
|
|
42
42
|
*/
|
|
43
|
-
export type ExtractColumnType<DB, TB extends keyof DB, C> = {
|
|
43
|
+
export type ExtractColumnType<DB, TB extends keyof DB, C> = DrainOuterGeneric<{
|
|
44
44
|
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
|
|
45
|
-
}[TB]
|
|
45
|
+
}[TB]>;
|
|
46
46
|
/**
|
|
47
47
|
* Given a database type and a union of table names in that db, returns
|
|
48
48
|
* a union type with all possible `table`.`column` combinations.
|
|
@@ -74,21 +74,21 @@ export type ExtractColumnType<DB, TB extends keyof DB, C> = {
|
|
|
74
74
|
* // Columns == 'person.id' | 'pet.name' | 'pet.species'
|
|
75
75
|
* ```
|
|
76
76
|
*/
|
|
77
|
-
export type AnyColumnWithTable<DB, TB extends keyof DB> = {
|
|
77
|
+
export type AnyColumnWithTable<DB, TB extends keyof DB> = DrainOuterGeneric<{
|
|
78
78
|
[T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]}` : never : never;
|
|
79
|
-
}[TB]
|
|
79
|
+
}[TB]>;
|
|
80
80
|
/**
|
|
81
81
|
* Just like {@link AnyColumn} but with a ` as <string>` suffix.
|
|
82
82
|
*/
|
|
83
|
-
export type AnyAliasedColumn<DB, TB extends keyof DB> = {
|
|
83
|
+
export type AnyAliasedColumn<DB, TB extends keyof DB> = DrainOuterGeneric<{
|
|
84
84
|
[T in TB]: T extends string ? keyof DB[T] extends string ? `${keyof DB[T]} as ${string}` : never : never;
|
|
85
|
-
}[TB]
|
|
85
|
+
}[TB]>;
|
|
86
86
|
/**
|
|
87
87
|
* Just like {@link AnyColumnWithTable} but with a ` as <string>` suffix.
|
|
88
88
|
*/
|
|
89
|
-
export type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
|
|
89
|
+
export type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = DrainOuterGeneric<{
|
|
90
90
|
[T in TB]: T extends string ? keyof DB[T] extends string ? `${T}.${keyof DB[T]} as ${string}` : never : never;
|
|
91
|
-
}[TB]
|
|
91
|
+
}[TB]>;
|
|
92
92
|
/**
|
|
93
93
|
* Extracts the item type of an array.
|
|
94
94
|
*/
|
|
@@ -124,9 +124,9 @@ export type IsAny<T> = 0 extends T & 1 ? true : false;
|
|
|
124
124
|
* Evaluates to `true` if the types `T` and `U` are equal.
|
|
125
125
|
*/
|
|
126
126
|
export type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
|
|
127
|
-
export type NarrowPartial<S, T> = DrainOuterGeneric<{
|
|
127
|
+
export type NarrowPartial<S, T> = DrainOuterGeneric<T extends object ? {
|
|
128
128
|
[K in keyof S & string]: K extends keyof T ? T[K] extends S[K] ? T[K] : KyselyTypeError<`$narrowType() call failed: passed type does not exist in '${K}'s type union`> : S[K];
|
|
129
|
-
}>;
|
|
129
|
+
} : never>;
|
|
130
130
|
export type SqlBool = boolean | 0 | 1;
|
|
131
131
|
/**
|
|
132
132
|
* Utility to reduce depth of TypeScript's internal type instantiation stack.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Kysely } from '../kysely.js';
|
|
2
|
-
import { DialectAdapter } from './dialect-adapter.js';
|
|
2
|
+
import { DialectAdapter, MigrationLockOptions } from './dialect-adapter.js';
|
|
3
3
|
/**
|
|
4
4
|
* A basic implementation of `DialectAdapter` with sensible default values.
|
|
5
5
|
* 3rd party dialects can extend this instead of implementing the `DialectAdapter`
|
|
@@ -63,7 +63,7 @@ export declare abstract class DialectAdapterBase implements DialectAdapter {
|
|
|
63
63
|
* `db` is a single connection (session) that will be used to execute the
|
|
64
64
|
* migrations.
|
|
65
65
|
*/
|
|
66
|
-
abstract acquireMigrationLock(db: Kysely<any
|
|
66
|
+
abstract acquireMigrationLock(db: Kysely<any>, options: MigrationLockOptions): Promise<void>;
|
|
67
67
|
/**
|
|
68
68
|
* Releases the migration lock. See {@link acquireMigrationLock}.
|
|
69
69
|
*
|
|
@@ -72,5 +72,5 @@ export declare abstract class DialectAdapterBase implements DialectAdapter {
|
|
|
72
72
|
* is a single connection (session) that was used to execute the migrations
|
|
73
73
|
* and the `acquireMigrationLock` call.
|
|
74
74
|
*/
|
|
75
|
-
abstract releaseMigrationLock(db: Kysely<any
|
|
75
|
+
abstract releaseMigrationLock(db: Kysely<any>, options: MigrationLockOptions): Promise<void>;
|
|
76
76
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Kysely } from '../../kysely.js';
|
|
2
2
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
|
+
import { MigrationLockOptions } from '../dialect-adapter.js';
|
|
3
4
|
export declare class MysqlAdapter extends DialectAdapterBase {
|
|
4
5
|
/**
|
|
5
6
|
* Whether or not this dialect supports transactional DDL.
|
|
@@ -57,7 +58,7 @@ export declare class MysqlAdapter extends DialectAdapterBase {
|
|
|
57
58
|
* `db` is a single connection (session) that will be used to execute the
|
|
58
59
|
* migrations.
|
|
59
60
|
*/
|
|
60
|
-
acquireMigrationLock(db: Kysely<any
|
|
61
|
+
acquireMigrationLock(db: Kysely<any>, _opt: MigrationLockOptions): Promise<void>;
|
|
61
62
|
/**
|
|
62
63
|
* Releases the migration lock. See {@link acquireMigrationLock}.
|
|
63
64
|
*
|
|
@@ -66,5 +67,5 @@ export declare class MysqlAdapter extends DialectAdapterBase {
|
|
|
66
67
|
* is a single connection (session) that was used to execute the migrations
|
|
67
68
|
* and the `acquireMigrationLock` call.
|
|
68
69
|
*/
|
|
69
|
-
releaseMigrationLock(db: Kysely<any
|
|
70
|
+
releaseMigrationLock(db: Kysely<any>, _opt: MigrationLockOptions): Promise<void>;
|
|
70
71
|
}
|
|
@@ -10,7 +10,7 @@ export class MysqlAdapter extends DialectAdapterBase {
|
|
|
10
10
|
get supportsReturning() {
|
|
11
11
|
return false;
|
|
12
12
|
}
|
|
13
|
-
async acquireMigrationLock(db) {
|
|
13
|
+
async acquireMigrationLock(db, _opt) {
|
|
14
14
|
// Kysely uses a single connection to run the migrations. Because of that, we
|
|
15
15
|
// can take a lock using `get_lock`. Locks acquired using `get_lock` get
|
|
16
16
|
// released when the connection is destroyed (session ends) or when the lock
|
|
@@ -19,7 +19,7 @@ export class MysqlAdapter extends DialectAdapterBase {
|
|
|
19
19
|
// MySQL if the process gets killed for some reason.
|
|
20
20
|
await sql `select get_lock(${sql.lit(LOCK_ID)}, ${sql.lit(LOCK_TIMEOUT_SECONDS)})`.execute(db);
|
|
21
21
|
}
|
|
22
|
-
async releaseMigrationLock(db) {
|
|
22
|
+
async releaseMigrationLock(db, _opt) {
|
|
23
23
|
await sql `select release_lock(${sql.lit(LOCK_ID)})`.execute(db);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Kysely } from '../../kysely.js';
|
|
2
2
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
|
+
import { MigrationLockOptions } from '../dialect-adapter.js';
|
|
3
4
|
export declare class PostgresAdapter extends DialectAdapterBase {
|
|
4
5
|
/**
|
|
5
6
|
* Whether or not this dialect supports transactional DDL.
|
|
@@ -57,7 +58,7 @@ export declare class PostgresAdapter extends DialectAdapterBase {
|
|
|
57
58
|
* `db` is a single connection (session) that will be used to execute the
|
|
58
59
|
* migrations.
|
|
59
60
|
*/
|
|
60
|
-
acquireMigrationLock(db: Kysely<any
|
|
61
|
+
acquireMigrationLock(db: Kysely<any>, _opt: MigrationLockOptions): Promise<void>;
|
|
61
62
|
/**
|
|
62
63
|
* Releases the migration lock. See {@link acquireMigrationLock}.
|
|
63
64
|
*
|
|
@@ -66,5 +67,5 @@ export declare class PostgresAdapter extends DialectAdapterBase {
|
|
|
66
67
|
* is a single connection (session) that was used to execute the migrations
|
|
67
68
|
* and the `acquireMigrationLock` call.
|
|
68
69
|
*/
|
|
69
|
-
releaseMigrationLock(): Promise<void>;
|
|
70
|
+
releaseMigrationLock(_db: Kysely<any>, _opt: MigrationLockOptions): Promise<void>;
|
|
70
71
|
}
|
|
@@ -10,11 +10,11 @@ export class PostgresAdapter extends DialectAdapterBase {
|
|
|
10
10
|
get supportsReturning() {
|
|
11
11
|
return true;
|
|
12
12
|
}
|
|
13
|
-
async acquireMigrationLock(db) {
|
|
13
|
+
async acquireMigrationLock(db, _opt) {
|
|
14
14
|
// Acquire a transaction level advisory lock.
|
|
15
15
|
await sql `select pg_advisory_xact_lock(${sql.lit(LOCK_ID)})`.execute(db);
|
|
16
16
|
}
|
|
17
|
-
async releaseMigrationLock() {
|
|
17
|
+
async releaseMigrationLock(_db, _opt) {
|
|
18
18
|
// Nothing to do here. `pg_advisory_xact_lock` is automatically released at the
|
|
19
19
|
// end of the transaction and since `supportsTransactionalDdl` true, we know
|
|
20
20
|
// the `db` instance passed to acquireMigrationLock is actually a transaction.
|
|
@@ -8,7 +8,7 @@ export interface PostgresDialectConfig {
|
|
|
8
8
|
*
|
|
9
9
|
* If a function is provided, it's called once when the first query is executed.
|
|
10
10
|
*
|
|
11
|
-
* https://node-postgres.com/
|
|
11
|
+
* https://node-postgres.com/apis/pool
|
|
12
12
|
*/
|
|
13
13
|
pool: PostgresPool | (() => Promise<PostgresPool>);
|
|
14
14
|
/**
|
|
@@ -35,7 +35,7 @@ export interface PostgresDialectConfig {
|
|
|
35
35
|
*
|
|
36
36
|
* We don't use the type from `pg` here to not have a dependency to it.
|
|
37
37
|
*
|
|
38
|
-
* https://node-postgres.com/
|
|
38
|
+
* https://node-postgres.com/apis/pool
|
|
39
39
|
*/
|
|
40
40
|
export interface PostgresPool {
|
|
41
41
|
connect(): Promise<PostgresPoolClient>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { Kysely } from '../../kysely.js';
|
|
1
2
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|
3
|
+
import { MigrationLockOptions } from '../dialect-adapter.js';
|
|
2
4
|
export declare class SqliteAdapter implements DialectAdapterBase {
|
|
3
5
|
/**
|
|
4
6
|
* Whether or not this dialect supports transactional DDL.
|
|
@@ -56,7 +58,7 @@ export declare class SqliteAdapter implements DialectAdapterBase {
|
|
|
56
58
|
* `db` is a single connection (session) that will be used to execute the
|
|
57
59
|
* migrations.
|
|
58
60
|
*/
|
|
59
|
-
acquireMigrationLock(): Promise<void>;
|
|
61
|
+
acquireMigrationLock(_db: Kysely<any>, _opt: MigrationLockOptions): Promise<void>;
|
|
60
62
|
/**
|
|
61
63
|
* Releases the migration lock. See {@link acquireMigrationLock}.
|
|
62
64
|
*
|
|
@@ -65,5 +67,5 @@ export declare class SqliteAdapter implements DialectAdapterBase {
|
|
|
65
67
|
* is a single connection (session) that was used to execute the migrations
|
|
66
68
|
* and the `acquireMigrationLock` call.
|
|
67
69
|
*/
|
|
68
|
-
releaseMigrationLock(): Promise<void>;
|
|
70
|
+
releaseMigrationLock(_db: Kysely<any>, _opt: MigrationLockOptions): Promise<void>;
|
|
69
71
|
}
|
|
@@ -6,12 +6,12 @@ export class SqliteAdapter {
|
|
|
6
6
|
get supportsReturning() {
|
|
7
7
|
return true;
|
|
8
8
|
}
|
|
9
|
-
async acquireMigrationLock() {
|
|
9
|
+
async acquireMigrationLock(_db, _opt) {
|
|
10
10
|
// SQLite only has one connection that's reserved by the migration system
|
|
11
11
|
// for the whole time between acquireMigrationLock and releaseMigrationLock.
|
|
12
12
|
// We don't need to do anything here.
|
|
13
13
|
}
|
|
14
|
-
async releaseMigrationLock() {
|
|
14
|
+
async releaseMigrationLock(_db, _opt) {
|
|
15
15
|
// SQLite only has one connection that's reserved by the migration system
|
|
16
16
|
// for the whole time between acquireMigrationLock and releaseMigrationLock.
|
|
17
17
|
// We don't need to do anything here.
|
|
@@ -9,15 +9,25 @@ export class RuntimeDriver {
|
|
|
9
9
|
#driver;
|
|
10
10
|
#log;
|
|
11
11
|
#initPromise;
|
|
12
|
+
#initDone;
|
|
12
13
|
#destroyPromise;
|
|
13
14
|
#connections = new WeakSet();
|
|
14
15
|
constructor(driver, log) {
|
|
16
|
+
this.#initDone = false;
|
|
15
17
|
this.#driver = driver;
|
|
16
18
|
this.#log = log;
|
|
17
19
|
}
|
|
18
20
|
async init() {
|
|
21
|
+
if (this.#destroyPromise) {
|
|
22
|
+
throw new Error('driver has already been destroyed');
|
|
23
|
+
}
|
|
19
24
|
if (!this.#initPromise) {
|
|
20
|
-
this.#initPromise = this.#driver
|
|
25
|
+
this.#initPromise = this.#driver
|
|
26
|
+
.init()
|
|
27
|
+
.then(() => {
|
|
28
|
+
this.#initDone = true;
|
|
29
|
+
})
|
|
30
|
+
.catch((err) => {
|
|
21
31
|
this.#initPromise = undefined;
|
|
22
32
|
return Promise.reject(err);
|
|
23
33
|
});
|
|
@@ -25,7 +35,12 @@ export class RuntimeDriver {
|
|
|
25
35
|
await this.#initPromise;
|
|
26
36
|
}
|
|
27
37
|
async acquireConnection() {
|
|
28
|
-
|
|
38
|
+
if (this.#destroyPromise) {
|
|
39
|
+
throw new Error('driver has already been destroyed');
|
|
40
|
+
}
|
|
41
|
+
if (!this.#initDone) {
|
|
42
|
+
await this.init();
|
|
43
|
+
}
|
|
29
44
|
const connection = await this.#driver.acquireConnection();
|
|
30
45
|
if (!this.#connections.has(connection)) {
|
|
31
46
|
if (this.#needsLogging()) {
|