kysely 0.27.4 → 0.27.6
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/.renovaterc.json +3 -0
- package/CODE_OF_CONDUCT.md +183 -0
- package/CONTRIBUTING.md +121 -23
- package/FUNDING.md +25 -0
- package/README.md +13 -2
- package/deno.check.d.ts +86 -0
- package/deno.check.json +21 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
- package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
- package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
- package/dist/cjs/driver/dummy-driver.d.ts +13 -12
- package/dist/cjs/driver/dummy-driver.js +13 -12
- package/dist/cjs/dynamic/dynamic.d.ts +6 -6
- package/dist/cjs/dynamic/dynamic.js +6 -6
- package/dist/cjs/expression/expression-builder.d.ts +154 -61
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
- package/dist/cjs/expression/expression.d.ts +40 -5
- package/dist/cjs/helpers/mssql.d.ts +74 -14
- package/dist/cjs/helpers/mssql.js +74 -14
- package/dist/cjs/helpers/mysql.d.ts +14 -10
- package/dist/cjs/helpers/mysql.js +14 -10
- package/dist/cjs/helpers/postgres.d.ts +7 -4
- package/dist/cjs/helpers/postgres.js +7 -4
- package/dist/cjs/helpers/sqlite.d.ts +41 -16
- package/dist/cjs/helpers/sqlite.js +41 -16
- package/dist/cjs/kysely.d.ts +99 -41
- package/dist/cjs/kysely.js +60 -36
- package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/migration/migrator.d.ts +90 -15
- package/dist/cjs/migration/migrator.js +95 -17
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/data-type-node.js +12 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
- package/dist/cjs/operation-node/query-node.d.ts +4 -0
- package/dist/cjs/operation-node/query-node.js +8 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -8
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
- package/dist/cjs/parser/insert-values-parser.js +3 -1
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
- package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
- package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +26 -0
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
- package/dist/cjs/query-builder/delete-query-builder.js +76 -26
- package/dist/cjs/query-builder/function-module.d.ts +35 -88
- package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
- package/dist/cjs/query-builder/insert-query-builder.js +188 -52
- package/dist/cjs/query-builder/insert-result.d.ts +10 -5
- package/dist/cjs/query-builder/insert-result.js +10 -5
- package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
- package/dist/cjs/query-builder/json-path-builder.js +8 -5
- package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
- package/dist/cjs/query-builder/merge-query-builder.js +68 -6
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
- package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
- package/dist/cjs/query-builder/output-interface.d.ts +50 -7
- package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
- package/dist/cjs/query-builder/select-query-builder.js +7 -7
- package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
- package/dist/cjs/query-builder/update-query-builder.js +75 -10
- package/dist/cjs/query-builder/update-result.d.ts +2 -2
- package/dist/cjs/query-builder/update-result.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +5 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
- package/dist/cjs/query-creator.d.ts +66 -18
- package/dist/cjs/query-creator.js +2 -2
- package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
- package/dist/cjs/raw-builder/sql.d.ts +27 -8
- package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
- package/dist/cjs/schema/alter-column-builder.js +17 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
- package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
- package/dist/cjs/schema/column-definition-builder.js +283 -26
- package/dist/cjs/schema/create-table-builder.d.ts +86 -33
- package/dist/cjs/schema/create-table-builder.js +86 -33
- package/dist/cjs/util/column-type.d.ts +5 -9
- package/dist/cjs/util/require-all-props.d.ts +4 -2
- package/dist/cjs/util/require-all-props.js +4 -2
- package/dist/cjs/util/streamable.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +4 -2
- package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
- package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
- package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
- package/dist/esm/driver/dummy-driver.d.ts +13 -12
- package/dist/esm/driver/dummy-driver.js +13 -12
- package/dist/esm/dynamic/dynamic.d.ts +6 -6
- package/dist/esm/dynamic/dynamic.js +6 -6
- package/dist/esm/expression/expression-builder.d.ts +154 -61
- package/dist/esm/expression/expression-wrapper.d.ts +92 -23
- package/dist/esm/expression/expression.d.ts +40 -5
- package/dist/esm/helpers/mssql.d.ts +74 -14
- package/dist/esm/helpers/mssql.js +74 -14
- package/dist/esm/helpers/mysql.d.ts +14 -10
- package/dist/esm/helpers/mysql.js +14 -10
- package/dist/esm/helpers/postgres.d.ts +7 -4
- package/dist/esm/helpers/postgres.js +7 -4
- package/dist/esm/helpers/sqlite.d.ts +41 -16
- package/dist/esm/helpers/sqlite.js +41 -16
- package/dist/esm/kysely.d.ts +99 -41
- package/dist/esm/kysely.js +60 -36
- package/dist/esm/migration/file-migration-provider.d.ts +2 -2
- package/dist/esm/migration/file-migration-provider.js +2 -2
- package/dist/esm/migration/migrator.d.ts +90 -15
- package/dist/esm/migration/migrator.js +95 -17
- package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/esm/operation-node/aggregate-function-node.js +9 -0
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/data-type-node.js +12 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
- package/dist/esm/operation-node/operation-node-transformer.js +14 -3
- package/dist/esm/operation-node/query-node.d.ts +4 -0
- package/dist/esm/operation-node/query-node.js +8 -0
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -8
- package/dist/esm/operation-node/update-query-node.d.ts +1 -0
- package/dist/esm/parser/insert-values-parser.js +3 -1
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
- package/dist/esm/plugin/camel-case/camel-case.js +4 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
- package/dist/esm/plugin/noop-plugin.d.ts +28 -6
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +26 -0
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
- package/dist/esm/query-builder/delete-query-builder.js +76 -26
- package/dist/esm/query-builder/function-module.d.ts +35 -88
- package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
- package/dist/esm/query-builder/insert-query-builder.js +188 -52
- package/dist/esm/query-builder/insert-result.d.ts +10 -5
- package/dist/esm/query-builder/insert-result.js +10 -5
- package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
- package/dist/esm/query-builder/json-path-builder.js +8 -5
- package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
- package/dist/esm/query-builder/merge-query-builder.js +68 -6
- package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
- package/dist/esm/query-builder/on-conflict-builder.js +41 -16
- package/dist/esm/query-builder/output-interface.d.ts +50 -7
- package/dist/esm/query-builder/returning-interface.d.ts +5 -5
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
- package/dist/esm/query-builder/select-query-builder.js +7 -7
- package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
- package/dist/esm/query-builder/update-query-builder.js +75 -10
- package/dist/esm/query-builder/update-result.d.ts +2 -2
- package/dist/esm/query-builder/update-result.js +2 -2
- package/dist/esm/query-builder/where-interface.d.ts +5 -1
- package/dist/esm/query-compiler/default-query-compiler.js +20 -0
- package/dist/esm/query-creator.d.ts +66 -18
- package/dist/esm/query-creator.js +2 -2
- package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
- package/dist/esm/raw-builder/sql.d.ts +27 -8
- package/dist/esm/schema/alter-column-builder.d.ts +17 -3
- package/dist/esm/schema/alter-column-builder.js +17 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
- package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
- package/dist/esm/schema/column-definition-builder.d.ts +283 -26
- package/dist/esm/schema/column-definition-builder.js +283 -26
- package/dist/esm/schema/create-table-builder.d.ts +86 -33
- package/dist/esm/schema/create-table-builder.js +86 -33
- package/dist/esm/util/column-type.d.ts +5 -9
- package/dist/esm/util/require-all-props.d.ts +4 -2
- package/dist/esm/util/require-all-props.js +4 -2
- package/dist/esm/util/streamable.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +4 -2
- package/package.json +28 -23
|
@@ -13,13 +13,16 @@ export interface PostgresDialectConfig {
|
|
|
13
13
|
pool: PostgresPool | (() => Promise<PostgresPool>);
|
|
14
14
|
/**
|
|
15
15
|
* https://github.com/brianc/node-postgres/tree/master/packages/pg-cursor
|
|
16
|
+
*
|
|
16
17
|
* ```ts
|
|
18
|
+
* import { PostgresDialect } from 'kysely'
|
|
19
|
+
* import { Pool } from 'pg'
|
|
17
20
|
* import Cursor from 'pg-cursor'
|
|
18
|
-
* // or
|
|
19
|
-
* import * as Cursor from 'pg-cursor'
|
|
21
|
+
* // or import * as Cursor from 'pg-cursor'
|
|
20
22
|
*
|
|
21
23
|
* new PostgresDialect({
|
|
22
|
-
* cursor: Cursor
|
|
24
|
+
* cursor: Cursor,
|
|
25
|
+
* pool: new Pool('postgres://localhost:5432/mydb')
|
|
23
26
|
* })
|
|
24
27
|
* ```
|
|
25
28
|
*/
|
|
@@ -28,6 +31,10 @@ export interface PostgresDialectConfig {
|
|
|
28
31
|
* Called once for each created connection.
|
|
29
32
|
*/
|
|
30
33
|
onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Called every time a connection is acquired from the pool.
|
|
36
|
+
*/
|
|
37
|
+
onReserveConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* This interface is the subset of pg driver's `Pool` class that
|
|
@@ -30,6 +30,9 @@ export class PostgresDriver {
|
|
|
30
30
|
await this.#config.onCreateConnection(connection);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
if (this.#config.onReserveConnection) {
|
|
34
|
+
await this.#config.onReserveConnection(connection);
|
|
35
|
+
}
|
|
33
36
|
return connection;
|
|
34
37
|
}
|
|
35
38
|
async beginTransaction(connection, settings) {
|
|
@@ -49,7 +49,11 @@ export class PostgresIntrospector {
|
|
|
49
49
|
.as('auto_incrementing'),
|
|
50
50
|
])
|
|
51
51
|
// r == normal table
|
|
52
|
-
.where((eb) => eb.or([
|
|
52
|
+
.where((eb) => eb.or([
|
|
53
|
+
eb('c.relkind', '=', 'r'),
|
|
54
|
+
eb('c.relkind', '=', 'v'),
|
|
55
|
+
eb('c.relkind', '=', 'p'),
|
|
56
|
+
]))
|
|
53
57
|
.where('ns.nspname', '!~', '^pg_')
|
|
54
58
|
.where('ns.nspname', '!=', 'information_schema')
|
|
55
59
|
// No system columns
|
|
@@ -33,8 +33,13 @@ export declare class SqliteAdapter extends DialectAdapterBase {
|
|
|
33
33
|
* have explicit locks but supports `FOR UPDATE` row locks and transactional DDL:
|
|
34
34
|
*
|
|
35
35
|
* ```ts
|
|
36
|
-
* {
|
|
37
|
-
*
|
|
36
|
+
* import { DialectAdapterBase, type MigrationLockOptions, Kysely } from 'kysely'
|
|
37
|
+
*
|
|
38
|
+
* export class MyAdapter extends DialectAdapterBase {
|
|
39
|
+
* override async acquireMigrationLock(
|
|
40
|
+
* db: Kysely<any>,
|
|
41
|
+
* options: MigrationLockOptions
|
|
42
|
+
* ): Promise<void> {
|
|
38
43
|
* const queryDb = options.lockTableSchema
|
|
39
44
|
* ? db.withSchema(options.lockTableSchema)
|
|
40
45
|
* : db
|
|
@@ -50,6 +55,10 @@ export declare class SqliteAdapter extends DialectAdapterBase {
|
|
|
50
55
|
* .forUpdate()
|
|
51
56
|
* .execute()
|
|
52
57
|
* }
|
|
58
|
+
*
|
|
59
|
+
* override async releaseMigrationLock() {
|
|
60
|
+
* // noop
|
|
61
|
+
* }
|
|
53
62
|
* }
|
|
54
63
|
* ```
|
|
55
64
|
*
|
|
@@ -11,58 +11,80 @@ export class SqliteIntrospector {
|
|
|
11
11
|
return [];
|
|
12
12
|
}
|
|
13
13
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
14
|
-
|
|
14
|
+
return await this.#getTableMetadata(options);
|
|
15
|
+
}
|
|
16
|
+
async getMetadata(options) {
|
|
17
|
+
return {
|
|
18
|
+
tables: await this.getTables(options),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
#tablesQuery(qb, options) {
|
|
22
|
+
let tablesQuery = qb
|
|
15
23
|
.selectFrom('sqlite_master')
|
|
16
24
|
.where('type', 'in', ['table', 'view'])
|
|
17
25
|
.where('name', 'not like', 'sqlite_%')
|
|
18
|
-
.select('name')
|
|
19
|
-
.orderBy('name')
|
|
20
|
-
.$castTo();
|
|
26
|
+
.select(['name', 'sql', 'type'])
|
|
27
|
+
.orderBy('name');
|
|
21
28
|
if (!options.withInternalKyselyTables) {
|
|
22
|
-
|
|
29
|
+
tablesQuery = tablesQuery
|
|
23
30
|
.where('name', '!=', DEFAULT_MIGRATION_TABLE)
|
|
24
31
|
.where('name', '!=', DEFAULT_MIGRATION_LOCK_TABLE);
|
|
25
32
|
}
|
|
26
|
-
|
|
27
|
-
return Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));
|
|
33
|
+
return tablesQuery;
|
|
28
34
|
}
|
|
29
|
-
async
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.
|
|
39
|
-
.
|
|
40
|
-
.
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
?.trimStart()
|
|
48
|
-
?.split(/\s+/)?.[0]
|
|
49
|
-
?.replace(/["`]/g, '');
|
|
50
|
-
const columns = await db
|
|
51
|
-
.selectFrom(sql `pragma_table_info(${table})`.as('table_info'))
|
|
52
|
-
.select(['name', 'type', 'notnull', 'dflt_value'])
|
|
53
|
-
.orderBy('cid')
|
|
35
|
+
async #getTableMetadata(options) {
|
|
36
|
+
const tablesResult = await this.#tablesQuery(this.#db, options).execute();
|
|
37
|
+
const tableMetadata = await this.#db
|
|
38
|
+
.with('table_list', (qb) => this.#tablesQuery(qb, options))
|
|
39
|
+
.selectFrom([
|
|
40
|
+
'table_list as tl',
|
|
41
|
+
sql `pragma_table_info(tl.name)`.as('p'),
|
|
42
|
+
])
|
|
43
|
+
.select([
|
|
44
|
+
'tl.name as table',
|
|
45
|
+
'p.cid',
|
|
46
|
+
'p.name',
|
|
47
|
+
'p.type',
|
|
48
|
+
'p.notnull',
|
|
49
|
+
'p.dflt_value',
|
|
50
|
+
'p.pk',
|
|
51
|
+
])
|
|
52
|
+
.orderBy(['tl.name', 'p.cid'])
|
|
54
53
|
.execute();
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
const columnsByTable = {};
|
|
55
|
+
for (const row of tableMetadata) {
|
|
56
|
+
columnsByTable[row.table] ??= [];
|
|
57
|
+
columnsByTable[row.table].push(row);
|
|
58
|
+
}
|
|
59
|
+
return tablesResult.map(({ name, sql, type }) => {
|
|
60
|
+
// // Try to find the name of the column that has `autoincrement` 🤦
|
|
61
|
+
let autoIncrementCol = sql
|
|
62
|
+
?.split(/[\(\),]/)
|
|
63
|
+
?.find((it) => it.toLowerCase().includes('autoincrement'))
|
|
64
|
+
?.trimStart()
|
|
65
|
+
?.split(/\s+/)?.[0]
|
|
66
|
+
?.replace(/["`]/g, '');
|
|
67
|
+
const columns = columnsByTable[name] ?? [];
|
|
68
|
+
// Otherwise, check for an INTEGER PRIMARY KEY
|
|
69
|
+
// https://www.sqlite.org/autoinc.html
|
|
70
|
+
if (!autoIncrementCol) {
|
|
71
|
+
const pkCols = columns.filter((r) => r.pk > 0);
|
|
72
|
+
if (pkCols.length === 1 && pkCols[0].type.toLowerCase() === 'integer') {
|
|
73
|
+
autoIncrementCol = pkCols[0].name;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
name: name,
|
|
78
|
+
isView: type === 'view',
|
|
79
|
+
columns: columns.map((col) => ({
|
|
80
|
+
name: col.name,
|
|
81
|
+
dataType: col.type,
|
|
82
|
+
isNullable: !col.notnull,
|
|
83
|
+
isAutoIncrementing: col.name === autoIncrementCol,
|
|
84
|
+
hasDefaultValue: col.dflt_value != null,
|
|
85
|
+
comment: undefined,
|
|
86
|
+
})),
|
|
87
|
+
};
|
|
88
|
+
});
|
|
67
89
|
}
|
|
68
90
|
}
|
|
@@ -10,20 +10,21 @@ import { Driver } from './driver.js';
|
|
|
10
10
|
* This example creates a Kysely instance for building postgres queries:
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
+
* import {
|
|
14
|
+
* DummyDriver,
|
|
15
|
+
* Kysely,
|
|
16
|
+
* PostgresAdapter,
|
|
17
|
+
* PostgresIntrospector,
|
|
18
|
+
* PostgresQueryCompiler
|
|
19
|
+
* } from 'kysely'
|
|
20
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
21
|
+
*
|
|
13
22
|
* const db = new Kysely<Database>({
|
|
14
23
|
* dialect: {
|
|
15
|
-
* createAdapter()
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* return new DummyDriver()
|
|
20
|
-
* },
|
|
21
|
-
* createIntrospector(db: Kysely<any>) {
|
|
22
|
-
* return new PostgresIntrospector(db)
|
|
23
|
-
* },
|
|
24
|
-
* createQueryCompiler() {
|
|
25
|
-
* return new PostgresQueryCompiler()
|
|
26
|
-
* },
|
|
24
|
+
* createAdapter: () => new PostgresAdapter(),
|
|
25
|
+
* createDriver: () => new DummyDriver(),
|
|
26
|
+
* createIntrospector: (db: Kysely<any>) => new PostgresIntrospector(db),
|
|
27
|
+
* createQueryCompiler: () => new PostgresQueryCompiler(),
|
|
27
28
|
* },
|
|
28
29
|
* })
|
|
29
30
|
* ```
|
|
@@ -9,20 +9,21 @@
|
|
|
9
9
|
* This example creates a Kysely instance for building postgres queries:
|
|
10
10
|
*
|
|
11
11
|
* ```ts
|
|
12
|
+
* import {
|
|
13
|
+
* DummyDriver,
|
|
14
|
+
* Kysely,
|
|
15
|
+
* PostgresAdapter,
|
|
16
|
+
* PostgresIntrospector,
|
|
17
|
+
* PostgresQueryCompiler
|
|
18
|
+
* } from 'kysely'
|
|
19
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
20
|
+
*
|
|
12
21
|
* const db = new Kysely<Database>({
|
|
13
22
|
* dialect: {
|
|
14
|
-
* createAdapter()
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* return new DummyDriver()
|
|
19
|
-
* },
|
|
20
|
-
* createIntrospector(db: Kysely<any>) {
|
|
21
|
-
* return new PostgresIntrospector(db)
|
|
22
|
-
* },
|
|
23
|
-
* createQueryCompiler() {
|
|
24
|
-
* return new PostgresQueryCompiler()
|
|
25
|
-
* },
|
|
23
|
+
* createAdapter: () => new PostgresAdapter(),
|
|
24
|
+
* createDriver: () => new DummyDriver(),
|
|
25
|
+
* createIntrospector: (db: Kysely<any>) => new PostgresIntrospector(db),
|
|
26
|
+
* createQueryCompiler: () => new PostgresQueryCompiler(),
|
|
26
27
|
* },
|
|
27
28
|
* })
|
|
28
29
|
* ```
|
|
@@ -61,11 +61,11 @@ export declare class DynamicModule {
|
|
|
61
61
|
* const { ref } = db.dynamic
|
|
62
62
|
*
|
|
63
63
|
* // Some column name provided by the user. Value not known at compile time.
|
|
64
|
-
* const columnFromUserInput =
|
|
64
|
+
* const columnFromUserInput: PossibleColumns = 'birthdate';
|
|
65
65
|
*
|
|
66
66
|
* // A type that lists all possible values `columnFromUserInput` can have.
|
|
67
67
|
* // You can use `keyof Person` if any column of an interface is allowed.
|
|
68
|
-
* type PossibleColumns = 'last_name' | 'first_name' | '
|
|
68
|
+
* type PossibleColumns = 'last_name' | 'first_name' | 'birthdate'
|
|
69
69
|
*
|
|
70
70
|
* const [person] = await db.selectFrom('person')
|
|
71
71
|
* .select([
|
|
@@ -77,12 +77,12 @@ export declare class DynamicModule {
|
|
|
77
77
|
* // The resulting type contains all `PossibleColumns` as optional fields
|
|
78
78
|
* // because we cannot know which field was actually selected before
|
|
79
79
|
* // running the code.
|
|
80
|
-
* const lastName: string | undefined = person
|
|
81
|
-
* const firstName: string | undefined = person
|
|
82
|
-
* const birthDate:
|
|
80
|
+
* const lastName: string | null | undefined = person?.last_name
|
|
81
|
+
* const firstName: string | undefined = person?.first_name
|
|
82
|
+
* const birthDate: Date | null | undefined = person?.birthdate
|
|
83
83
|
*
|
|
84
84
|
* // The result type also contains the compile time selection `id`.
|
|
85
|
-
* person
|
|
85
|
+
* person?.id
|
|
86
86
|
* ```
|
|
87
87
|
*/
|
|
88
88
|
ref<R extends string = never>(reference: string): DynamicReferenceBuilder<R>;
|
|
@@ -62,11 +62,11 @@ export class DynamicModule {
|
|
|
62
62
|
* const { ref } = db.dynamic
|
|
63
63
|
*
|
|
64
64
|
* // Some column name provided by the user. Value not known at compile time.
|
|
65
|
-
* const columnFromUserInput =
|
|
65
|
+
* const columnFromUserInput: PossibleColumns = 'birthdate';
|
|
66
66
|
*
|
|
67
67
|
* // A type that lists all possible values `columnFromUserInput` can have.
|
|
68
68
|
* // You can use `keyof Person` if any column of an interface is allowed.
|
|
69
|
-
* type PossibleColumns = 'last_name' | 'first_name' | '
|
|
69
|
+
* type PossibleColumns = 'last_name' | 'first_name' | 'birthdate'
|
|
70
70
|
*
|
|
71
71
|
* const [person] = await db.selectFrom('person')
|
|
72
72
|
* .select([
|
|
@@ -78,12 +78,12 @@ export class DynamicModule {
|
|
|
78
78
|
* // The resulting type contains all `PossibleColumns` as optional fields
|
|
79
79
|
* // because we cannot know which field was actually selected before
|
|
80
80
|
* // running the code.
|
|
81
|
-
* const lastName: string | undefined = person
|
|
82
|
-
* const firstName: string | undefined = person
|
|
83
|
-
* const birthDate:
|
|
81
|
+
* const lastName: string | null | undefined = person?.last_name
|
|
82
|
+
* const firstName: string | undefined = person?.first_name
|
|
83
|
+
* const birthDate: Date | null | undefined = person?.birthdate
|
|
84
84
|
*
|
|
85
85
|
* // The result type also contains the compile time selection `id`.
|
|
86
|
-
* person
|
|
86
|
+
* person?.id
|
|
87
87
|
* ```
|
|
88
88
|
*/
|
|
89
89
|
ref(reference) {
|