kysely 0.9.8 → 0.11.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 +22 -16
- package/dist/cjs/dialect/dialect-adapter.d.ts +3 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -32
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +8 -19
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +18 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +33 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +116 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +31 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +19 -0
- package/dist/cjs/driver/database-connection.d.ts +2 -2
- package/dist/cjs/driver/runtime-driver.js +3 -4
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/kysely.d.ts +6 -4
- package/dist/cjs/kysely.js +6 -4
- package/dist/cjs/migration/migration.d.ts +1 -1
- package/dist/cjs/migration/migration.js +3 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +8 -6
- package/dist/cjs/operation-node/column-definition-node.js +4 -4
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-table-node.js +2 -2
- package/dist/cjs/operation-node/create-view-node.d.ts +23 -0
- package/dist/cjs/operation-node/create-view-node.js +25 -0
- package/dist/cjs/operation-node/default-value-node.d.ts +14 -0
- package/dist/cjs/operation-node/default-value-node.js +18 -0
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-schema-node.js +3 -3
- package/dist/cjs/operation-node/drop-table-node.d.ts +2 -3
- package/dist/cjs/operation-node/drop-table-node.js +2 -2
- package/dist/cjs/operation-node/drop-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/drop-view-node.js +25 -0
- package/dist/cjs/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/cjs/operation-node/generated-always-as-node.js +25 -0
- package/dist/cjs/operation-node/having-node.d.ts +4 -8
- package/dist/cjs/operation-node/having-node.js +3 -3
- package/dist/cjs/operation-node/join-node.d.ts +6 -9
- package/dist/cjs/operation-node/join-node.js +10 -7
- package/dist/cjs/operation-node/on-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-node.js +28 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +55 -11
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +11 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +11 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +3 -3
- package/dist/cjs/operation-node/raw-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
- package/dist/cjs/operation-node/select-query-node.js +1 -1
- package/dist/cjs/operation-node/where-node.d.ts +4 -8
- package/dist/cjs/operation-node/where-node.js +3 -3
- package/dist/cjs/parser/filter-parser.js +1 -1
- package/dist/cjs/parser/returning-parser.d.ts +4 -2
- package/dist/cjs/parser/select-parser.d.ts +2 -2
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +22 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-transformer.js +21 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +6 -0
- package/dist/cjs/query-builder/delete-result.d.ts +5 -0
- package/dist/cjs/query-builder/delete-result.js +13 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +2 -2
- package/dist/cjs/query-builder/expression-builder.js +1 -1
- package/dist/cjs/query-builder/function-builder.d.ts +5 -5
- package/dist/cjs/query-builder/function-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +27 -0
- package/dist/cjs/query-builder/insert-result.js +35 -0
- package/dist/cjs/query-builder/query-builder.d.ts +91 -81
- package/dist/cjs/query-builder/query-builder.js +38 -41
- package/dist/cjs/query-builder/update-result.d.ts +5 -0
- package/dist/cjs/query-builder/update-result.js +13 -0
- package/dist/cjs/query-compiler/compiled-query.d.ts +5 -0
- package/dist/cjs/query-compiler/compiled-query.js +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +82 -23
- package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
- package/dist/cjs/query-creator.d.ts +36 -26
- package/dist/cjs/query-creator.js +25 -17
- package/dist/cjs/raw-builder/raw-builder.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +6 -2
- package/dist/cjs/schema/alter-table-builder.js +28 -4
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -2
- package/dist/cjs/schema/column-definition-builder.js +23 -6
- package/dist/cjs/schema/create-schema-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.d.ts +7 -8
- package/dist/cjs/schema/create-table-builder.js +8 -9
- package/dist/cjs/schema/create-view-builder.d.ts +28 -0
- package/dist/cjs/schema/create-view-builder.js +84 -0
- package/dist/cjs/schema/drop-index-builder.js +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -1
- package/dist/cjs/schema/drop-view-builder.d.ts +20 -0
- package/dist/cjs/schema/drop-view-builder.js +39 -0
- package/dist/cjs/schema/schema.d.ts +30 -3
- package/dist/cjs/schema/schema.js +44 -3
- package/dist/cjs/util/dynamic-import.d.ts +2 -0
- package/dist/cjs/util/dynamic-import.js +32 -0
- package/dist/cjs/util/performance-now.d.ts +1 -0
- package/dist/cjs/util/performance-now.js +13 -0
- package/dist/cjs/util/type-utils.d.ts +4 -15
- package/dist/esm/dialect/dialect-adapter.d.ts +3 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +3 -3
- package/dist/esm/dialect/mysql/mysql-driver.js +26 -33
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +2 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +8 -19
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +14 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +64 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +29 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +14 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +112 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +27 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +7 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +15 -0
- package/dist/esm/driver/database-connection.d.ts +2 -2
- package/dist/esm/driver/runtime-driver.js +3 -4
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/kysely.d.ts +6 -4
- package/dist/esm/kysely.js +6 -4
- package/dist/esm/migration/migration.d.ts +1 -1
- package/dist/esm/migration/migration.js +3 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +8 -6
- package/dist/esm/operation-node/column-definition-node.js +4 -4
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -3
- package/dist/esm/operation-node/create-table-node.js +2 -2
- package/dist/esm/operation-node/create-view-node.d.ts +23 -0
- package/dist/esm/operation-node/create-view-node.js +22 -0
- package/dist/esm/operation-node/default-value-node.d.ts +14 -0
- package/dist/esm/operation-node/default-value-node.js +15 -0
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-schema-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-schema-node.js +3 -3
- package/dist/esm/operation-node/drop-table-node.d.ts +2 -3
- package/dist/esm/operation-node/drop-table-node.js +2 -2
- package/dist/esm/operation-node/drop-view-node.d.ts +17 -0
- package/dist/esm/operation-node/drop-view-node.js +22 -0
- package/dist/esm/operation-node/generated-always-as-node.d.ts +16 -0
- package/dist/esm/operation-node/generated-always-as-node.js +22 -0
- package/dist/esm/operation-node/having-node.d.ts +4 -8
- package/dist/esm/operation-node/having-node.js +3 -3
- package/dist/esm/operation-node/join-node.d.ts +6 -9
- package/dist/esm/operation-node/join-node.js +10 -7
- package/dist/esm/operation-node/on-node.d.ts +14 -0
- package/dist/esm/operation-node/on-node.js +25 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-transformer.js +55 -11
- package/dist/esm/operation-node/operation-node-visitor.d.ts +11 -0
- package/dist/esm/operation-node/operation-node-visitor.js +11 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +3 -3
- package/dist/esm/operation-node/raw-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -5
- package/dist/esm/operation-node/select-query-node.js +1 -1
- package/dist/esm/operation-node/where-node.d.ts +4 -8
- package/dist/esm/operation-node/where-node.js +3 -3
- package/dist/esm/parser/filter-parser.js +1 -1
- package/dist/esm/parser/returning-parser.d.ts +4 -2
- package/dist/esm/parser/select-parser.d.ts +2 -2
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +17 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +18 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.d.ts +13 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +17 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +6 -0
- package/dist/esm/query-builder/delete-result.d.ts +5 -0
- package/dist/esm/query-builder/delete-result.js +9 -0
- package/dist/esm/query-builder/expression-builder.d.ts +2 -2
- package/dist/esm/query-builder/expression-builder.js +1 -1
- package/dist/esm/query-builder/function-builder.d.ts +5 -5
- package/dist/esm/query-builder/function-builder.js +3 -3
- package/dist/esm/query-builder/insert-result.d.ts +27 -0
- package/dist/esm/query-builder/insert-result.js +31 -0
- package/dist/esm/query-builder/query-builder.d.ts +91 -81
- package/dist/esm/query-builder/query-builder.js +38 -41
- package/dist/esm/query-builder/update-result.d.ts +5 -0
- package/dist/esm/query-builder/update-result.js +9 -0
- package/dist/esm/query-compiler/compiled-query.d.ts +5 -0
- package/dist/esm/query-compiler/compiled-query.js +11 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/esm/query-compiler/default-query-compiler.js +82 -23
- package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
- package/dist/esm/query-creator.d.ts +36 -26
- package/dist/esm/query-creator.js +25 -17
- package/dist/esm/raw-builder/raw-builder.d.ts +1 -1
- package/dist/esm/schema/alter-table-builder.d.ts +6 -2
- package/dist/esm/schema/alter-table-builder.js +28 -4
- package/dist/esm/schema/column-definition-builder.d.ts +43 -2
- package/dist/esm/schema/column-definition-builder.js +23 -6
- package/dist/esm/schema/create-schema-builder.js +1 -1
- package/dist/esm/schema/create-table-builder.d.ts +7 -8
- package/dist/esm/schema/create-table-builder.js +8 -9
- package/dist/esm/schema/create-view-builder.d.ts +28 -0
- package/dist/esm/schema/create-view-builder.js +80 -0
- package/dist/esm/schema/drop-index-builder.js +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -1
- package/dist/esm/schema/drop-table-builder.js +3 -1
- package/dist/esm/schema/drop-view-builder.d.ts +20 -0
- package/dist/esm/schema/drop-view-builder.js +35 -0
- package/dist/esm/schema/schema.d.ts +30 -3
- package/dist/esm/schema/schema.js +44 -3
- package/dist/esm/util/dynamic-import.d.ts +2 -0
- package/dist/esm/util/dynamic-import.js +27 -0
- package/dist/esm/util/performance-now.d.ts +1 -0
- package/dist/esm/util/performance-now.js +9 -0
- package/dist/esm/util/type-utils.d.ts +4 -15
- package/package.json +5 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
2
|
+
import { importNamedFunction } from '../../util/dynamic-import.js';
|
|
2
3
|
const PRIVATE_RELEASE_METHOD = Symbol();
|
|
3
4
|
export class PostgresDriver {
|
|
4
5
|
#config;
|
|
@@ -35,20 +36,17 @@ export class PostgresDriver {
|
|
|
35
36
|
}
|
|
36
37
|
async beginTransaction(connection, settings) {
|
|
37
38
|
if (settings.isolationLevel) {
|
|
38
|
-
await connection.executeQuery({
|
|
39
|
-
sql: `start transaction isolation level ${settings.isolationLevel}`,
|
|
40
|
-
parameters: [],
|
|
41
|
-
});
|
|
39
|
+
await connection.executeQuery(CompiledQuery.raw(`start transaction isolation level ${settings.isolationLevel}`));
|
|
42
40
|
}
|
|
43
41
|
else {
|
|
44
|
-
await connection.executeQuery(
|
|
42
|
+
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
45
|
async commitTransaction(connection) {
|
|
48
|
-
await connection.executeQuery(
|
|
46
|
+
await connection.executeQuery(CompiledQuery.raw('commit'));
|
|
49
47
|
}
|
|
50
48
|
async rollbackTransaction(connection) {
|
|
51
|
-
await connection.executeQuery(
|
|
49
|
+
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
52
50
|
}
|
|
53
51
|
async releaseConnection(connection) {
|
|
54
52
|
const pgConnection = connection;
|
|
@@ -64,16 +62,7 @@ export class PostgresDriver {
|
|
|
64
62
|
}
|
|
65
63
|
async function importPgPool() {
|
|
66
64
|
try {
|
|
67
|
-
|
|
68
|
-
// this hacky crap here.
|
|
69
|
-
const pg = (await import('pg'));
|
|
70
|
-
if (isFunction(pg.Pool)) {
|
|
71
|
-
return pg.Pool;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// With esm the imported module doesn't match the typings.
|
|
75
|
-
return pg.default.Pool;
|
|
76
|
-
}
|
|
65
|
+
return await importNamedFunction('pg', 'Pool');
|
|
77
66
|
}
|
|
78
67
|
catch (error) {
|
|
79
68
|
throw new Error('Postgres client not installed. Please run `npm install pg`');
|
|
@@ -90,7 +79,7 @@ class PostgresConnection {
|
|
|
90
79
|
]);
|
|
91
80
|
if (result.command === 'UPDATE' || result.command === 'DELETE') {
|
|
92
81
|
return {
|
|
93
|
-
numUpdatedOrDeletedRows: result.rowCount,
|
|
82
|
+
numUpdatedOrDeletedRows: BigInt(result.rowCount),
|
|
94
83
|
rows: result.rows ?? [],
|
|
95
84
|
};
|
|
96
85
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DialectAdapter } from '../dialect-adapter.js';
|
|
2
|
+
export declare class SqliteAdapter implements DialectAdapter {
|
|
3
|
+
get supportsTransactionalDdl(): boolean;
|
|
4
|
+
get supportsReturning(): boolean;
|
|
5
|
+
acquireMigrationLock(): Promise<void>;
|
|
6
|
+
releaseMigrationLock(): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class SqliteAdapter {
|
|
2
|
+
get supportsTransactionalDdl() {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
get supportsReturning() {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
async acquireMigrationLock() {
|
|
9
|
+
// Nothing to do here.
|
|
10
|
+
}
|
|
11
|
+
async releaseMigrationLock() {
|
|
12
|
+
// Nothing to do here.
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Driver } from '../../driver/driver.js';
|
|
2
|
+
import { Kysely } from '../../kysely.js';
|
|
3
|
+
import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
4
|
+
import { Dialect } from '../dialect.js';
|
|
5
|
+
import { DatabaseIntrospector } from '../../introspection/database-introspector.js';
|
|
6
|
+
import { DialectAdapter } from '../dialect-adapter.js';
|
|
7
|
+
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
8
|
+
/**
|
|
9
|
+
* SQLite dialect that uses the [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) library.
|
|
10
|
+
*
|
|
11
|
+
* The {@link SqliteDialectConfig | configuration} is used to construct an instance of
|
|
12
|
+
* [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
|
|
13
|
+
* class. The configuration values are passed directly to the `Database` constructor.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SqliteDialect implements Dialect {
|
|
16
|
+
#private;
|
|
17
|
+
constructor(config: SqliteDialectConfig);
|
|
18
|
+
createDriver(): Driver;
|
|
19
|
+
createQueryCompiler(): QueryCompiler;
|
|
20
|
+
createAdapter(): DialectAdapter;
|
|
21
|
+
createIntrospector(db: Kysely<any>): DatabaseIntrospector;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Config for the SQLite dialect.
|
|
25
|
+
*
|
|
26
|
+
* This interface is equal to `better-sqlite3` library's `Databse` class's constructor parameters.
|
|
27
|
+
*
|
|
28
|
+
* https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options
|
|
29
|
+
*/
|
|
30
|
+
export interface SqliteDialectConfig {
|
|
31
|
+
/**
|
|
32
|
+
* The database file path.
|
|
33
|
+
*
|
|
34
|
+
* This is passed as the first argument for the [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
|
|
35
|
+
* class constructor.
|
|
36
|
+
*/
|
|
37
|
+
databasePath: string;
|
|
38
|
+
/**
|
|
39
|
+
* Open the database connection in readonly mode (default: false)
|
|
40
|
+
*/
|
|
41
|
+
readonly?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* If the database does not exist, an Error will be thrown instead of creating a new file.
|
|
44
|
+
* This option is ignored for in-memory, temporary, or readonly database connections
|
|
45
|
+
* (default: false)
|
|
46
|
+
*/
|
|
47
|
+
fileMustExist?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* The number of milliseconds to wait when executing queries on a locked database,
|
|
50
|
+
* before throwing a SQLITE_BUSY error (default: 5000)
|
|
51
|
+
*/
|
|
52
|
+
timeout?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Provide a function that gets called with every SQL string executed by the database connection
|
|
55
|
+
* (default: null)
|
|
56
|
+
*/
|
|
57
|
+
verbose?: (sql: string) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Called once when the first query is executed.
|
|
60
|
+
*
|
|
61
|
+
* This is a Kysely specific feature and does not come from the `better-sqlite3` module.
|
|
62
|
+
*/
|
|
63
|
+
onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
64
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SqliteDriver } from './sqlite-driver.js';
|
|
2
|
+
import { SqliteQueryCompiler } from './sqlite-query-compiler.js';
|
|
3
|
+
import { SqliteIntrospector } from './sqlite-introspector.js';
|
|
4
|
+
import { SqliteAdapter } from './sqlite-adapter.js';
|
|
5
|
+
/**
|
|
6
|
+
* SQLite dialect that uses the [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) library.
|
|
7
|
+
*
|
|
8
|
+
* The {@link SqliteDialectConfig | configuration} is used to construct an instance of
|
|
9
|
+
* [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
|
|
10
|
+
* class. The configuration values are passed directly to the `Database` constructor.
|
|
11
|
+
*/
|
|
12
|
+
export class SqliteDialect {
|
|
13
|
+
#config;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.#config = config;
|
|
16
|
+
}
|
|
17
|
+
createDriver() {
|
|
18
|
+
return new SqliteDriver(this.#config);
|
|
19
|
+
}
|
|
20
|
+
createQueryCompiler() {
|
|
21
|
+
return new SqliteQueryCompiler();
|
|
22
|
+
}
|
|
23
|
+
createAdapter() {
|
|
24
|
+
return new SqliteAdapter();
|
|
25
|
+
}
|
|
26
|
+
createIntrospector(db) {
|
|
27
|
+
return new SqliteIntrospector(db);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
2
|
+
import { Driver } from '../../driver/driver.js';
|
|
3
|
+
import { SqliteDialectConfig } from './sqlite-dialect.js';
|
|
4
|
+
export declare class SqliteDriver implements Driver {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(config: SqliteDialectConfig);
|
|
7
|
+
init(): Promise<void>;
|
|
8
|
+
acquireConnection(): Promise<DatabaseConnection>;
|
|
9
|
+
beginTransaction(connection: DatabaseConnection): Promise<void>;
|
|
10
|
+
commitTransaction(connection: DatabaseConnection): Promise<void>;
|
|
11
|
+
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
12
|
+
releaseConnection(): Promise<void>;
|
|
13
|
+
destroy(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
2
|
+
import { importFunction } from '../../util/dynamic-import.js';
|
|
3
|
+
export class SqliteDriver {
|
|
4
|
+
#config;
|
|
5
|
+
#connectionMutex = new ConnectionMutex();
|
|
6
|
+
#db;
|
|
7
|
+
#connection;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.#config = config;
|
|
10
|
+
}
|
|
11
|
+
async init() {
|
|
12
|
+
// Import the `better-sqlite3` module here instead at the top of the file
|
|
13
|
+
// so that this file can be loaded by node without `better-sqlite3` driver
|
|
14
|
+
// installed. As you can see, there IS an import from `better-sqlite3` at
|
|
15
|
+
// the top level too, but that's only for types. It doesn't get compiled
|
|
16
|
+
// into javascript. You can check the built javascript code.
|
|
17
|
+
const DatabaseConstructor = await importBetterSqlite3Database();
|
|
18
|
+
const options = {};
|
|
19
|
+
if (typeof this.#config.readonly === 'boolean') {
|
|
20
|
+
options.readonly = this.#config.readonly;
|
|
21
|
+
}
|
|
22
|
+
if (typeof this.#config.fileMustExist === 'boolean') {
|
|
23
|
+
options.fileMustExist = this.#config.fileMustExist;
|
|
24
|
+
}
|
|
25
|
+
if (typeof this.#config.timeout === 'number') {
|
|
26
|
+
options.timeout = this.#config.timeout;
|
|
27
|
+
}
|
|
28
|
+
if (typeof this.#config.verbose === 'function') {
|
|
29
|
+
options.verbose = this.#config.verbose;
|
|
30
|
+
}
|
|
31
|
+
this.#db = new DatabaseConstructor(this.#config.databasePath, options);
|
|
32
|
+
this.#connection = new SqliteConnection(this.#db);
|
|
33
|
+
if (this.#config.onCreateConnection) {
|
|
34
|
+
await this.#config.onCreateConnection(this.#connection);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async acquireConnection() {
|
|
38
|
+
// sqlite effectively only has one single connection. We use a mutex
|
|
39
|
+
// here to wait until the single connection has been released.
|
|
40
|
+
await this.#connectionMutex.lock();
|
|
41
|
+
return this.#connection;
|
|
42
|
+
}
|
|
43
|
+
async beginTransaction(connection) {
|
|
44
|
+
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
45
|
+
}
|
|
46
|
+
async commitTransaction(connection) {
|
|
47
|
+
await connection.executeQuery(CompiledQuery.raw('commit'));
|
|
48
|
+
}
|
|
49
|
+
async rollbackTransaction(connection) {
|
|
50
|
+
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
51
|
+
}
|
|
52
|
+
async releaseConnection() {
|
|
53
|
+
this.#connectionMutex.unlock();
|
|
54
|
+
}
|
|
55
|
+
async destroy() {
|
|
56
|
+
this.#db?.close();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function importBetterSqlite3Database() {
|
|
60
|
+
try {
|
|
61
|
+
return await importFunction('better-sqlite3');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error(error);
|
|
65
|
+
throw new Error('SQLite client not installed. Please run `npm install better-sqlite3`');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
class SqliteConnection {
|
|
69
|
+
#db;
|
|
70
|
+
constructor(db) {
|
|
71
|
+
this.#db = db;
|
|
72
|
+
}
|
|
73
|
+
executeQuery(compiledQuery) {
|
|
74
|
+
const { sql, parameters } = compiledQuery;
|
|
75
|
+
const stmt = this.#db.prepare(sql);
|
|
76
|
+
if (stmt.reader) {
|
|
77
|
+
return Promise.resolve({
|
|
78
|
+
rows: stmt.all(parameters),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const { changes, lastInsertRowid } = stmt.run(parameters);
|
|
83
|
+
return Promise.resolve({
|
|
84
|
+
numUpdatedOrDeletedRows: changes !== undefined && changes !== null
|
|
85
|
+
? BigInt(changes)
|
|
86
|
+
: undefined,
|
|
87
|
+
insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
|
|
88
|
+
? BigInt(lastInsertRowid)
|
|
89
|
+
: undefined,
|
|
90
|
+
rows: [],
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class ConnectionMutex {
|
|
96
|
+
#promise;
|
|
97
|
+
#resolve;
|
|
98
|
+
async lock() {
|
|
99
|
+
while (this.#promise) {
|
|
100
|
+
await this.#promise;
|
|
101
|
+
}
|
|
102
|
+
this.#promise = new Promise((resolve) => {
|
|
103
|
+
this.#resolve = resolve;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
unlock() {
|
|
107
|
+
const resolve = this.#resolve;
|
|
108
|
+
this.#promise = undefined;
|
|
109
|
+
this.#resolve = undefined;
|
|
110
|
+
resolve?.();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DatabaseIntrospector, DatabaseMetadata, DatabaseMetadataOptions } from '../../introspection/database-introspector.js';
|
|
2
|
+
import { Kysely } from '../../kysely.js';
|
|
3
|
+
export declare class SqliteIntrospector implements DatabaseIntrospector {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(db: Kysely<any>);
|
|
6
|
+
getMetadata(options?: DatabaseMetadataOptions): Promise<DatabaseMetadata>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { MIGRATION_LOCK_TABLE, MIGRATION_TABLE, } from '../../migration/migration.js';
|
|
2
|
+
export class SqliteIntrospector {
|
|
3
|
+
#db;
|
|
4
|
+
constructor(db) {
|
|
5
|
+
this.#db = db;
|
|
6
|
+
}
|
|
7
|
+
async getMetadata(options = { withInternalKyselyTables: false }) {
|
|
8
|
+
let query = this.#db
|
|
9
|
+
.selectFrom('sqlite_schema')
|
|
10
|
+
.where('type', '=', 'table')
|
|
11
|
+
.where('name', 'not like', 'sqlite_%')
|
|
12
|
+
.select('name');
|
|
13
|
+
if (!options.withInternalKyselyTables) {
|
|
14
|
+
query = query
|
|
15
|
+
.where('name', '!=', MIGRATION_TABLE)
|
|
16
|
+
.where('name', '!=', MIGRATION_LOCK_TABLE);
|
|
17
|
+
}
|
|
18
|
+
const result = await query.execute();
|
|
19
|
+
return {
|
|
20
|
+
tables: result.map((it) => ({
|
|
21
|
+
name: it.name,
|
|
22
|
+
// TODO: Get columns somehow.
|
|
23
|
+
columns: [],
|
|
24
|
+
})),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
2
|
+
export declare class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
3
|
+
protected visitReturning(): void;
|
|
4
|
+
protected getSql(): string;
|
|
5
|
+
protected getCurrentParameterPlaceholder(): string;
|
|
6
|
+
protected getAutoIncrement(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
2
|
+
export class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
3
|
+
visitReturning() {
|
|
4
|
+
// Do nothing.
|
|
5
|
+
}
|
|
6
|
+
getSql() {
|
|
7
|
+
return super.getSql().trimEnd();
|
|
8
|
+
}
|
|
9
|
+
getCurrentParameterPlaceholder() {
|
|
10
|
+
return '?';
|
|
11
|
+
}
|
|
12
|
+
getAutoIncrement() {
|
|
13
|
+
return 'autoincrement';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -12,12 +12,12 @@ export interface QueryResult<O> {
|
|
|
12
12
|
* This is defined for update and delete queries and contains
|
|
13
13
|
* the number of rows the query updated/deleted.
|
|
14
14
|
*/
|
|
15
|
-
readonly numUpdatedOrDeletedRows?:
|
|
15
|
+
readonly numUpdatedOrDeletedRows?: bigint;
|
|
16
16
|
/**
|
|
17
17
|
* This is defined for insert queries on dialects that return
|
|
18
18
|
* the auto incrementing primary key from an insert.
|
|
19
19
|
*/
|
|
20
|
-
readonly
|
|
20
|
+
readonly insertId?: bigint;
|
|
21
21
|
/**
|
|
22
22
|
* The rows returned by the query. This is always defined and is
|
|
23
23
|
* empty if the query returned no rows.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { performanceNow } from '../util/performance-now.js';
|
|
1
2
|
/**
|
|
2
3
|
* A small wrapper around {@link Driver} that makes sure the driver is
|
|
3
4
|
* initialized before it is used, only initialized and destroyed
|
|
@@ -71,7 +72,7 @@ class RuntimeConnection {
|
|
|
71
72
|
this.#log = log;
|
|
72
73
|
}
|
|
73
74
|
async executeQuery(compiledQuery) {
|
|
74
|
-
const startTime =
|
|
75
|
+
const startTime = performanceNow();
|
|
75
76
|
try {
|
|
76
77
|
return await this.#connection.executeQuery(compiledQuery);
|
|
77
78
|
}
|
|
@@ -97,8 +98,6 @@ class RuntimeConnection {
|
|
|
97
98
|
}));
|
|
98
99
|
}
|
|
99
100
|
#calculateDurationMillis(startTime) {
|
|
100
|
-
|
|
101
|
-
const durationNanos = Number(endTime - startTime);
|
|
102
|
-
return durationNanos / 1_000_000;
|
|
101
|
+
return performanceNow() - startTime;
|
|
103
102
|
}
|
|
104
103
|
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export * from './query-creator.js';
|
|
|
3
3
|
export * from './query-builder/query-builder.js';
|
|
4
4
|
export * from './query-builder/join-builder.js';
|
|
5
5
|
export * from './query-builder/expression-builder.js';
|
|
6
|
+
export * from './query-builder/insert-result.js';
|
|
7
|
+
export * from './query-builder/delete-result.js';
|
|
8
|
+
export * from './query-builder/update-result.js';
|
|
6
9
|
export * from './raw-builder/raw-builder.js';
|
|
7
10
|
export * from './query-executor/query-executor.js';
|
|
8
11
|
export * from './query-executor/default-query-executor.js';
|
|
@@ -19,6 +22,8 @@ export * from './schema/drop-schema-builder.js';
|
|
|
19
22
|
export * from './schema/column-definition-builder.js';
|
|
20
23
|
export * from './schema/foreign-key-constraint-builder.js';
|
|
21
24
|
export * from './schema/alter-table-builder.js';
|
|
25
|
+
export * from './schema/create-view-builder.js';
|
|
26
|
+
export * from './schema/drop-view-builder.js';
|
|
22
27
|
export * from './dynamic/dynamic.js';
|
|
23
28
|
export * from './driver/driver.js';
|
|
24
29
|
export * from './driver/database-connection.js';
|
|
@@ -35,6 +40,11 @@ export * from './dialect/mysql/mysql-query-compiler.js';
|
|
|
35
40
|
export * from './dialect/mysql/mysql-driver.js';
|
|
36
41
|
export * from './dialect/mysql/mysql-introspector.js';
|
|
37
42
|
export * from './dialect/mysql/mysql-adapter.js';
|
|
43
|
+
export * from './dialect/sqlite/sqlite-dialect.js';
|
|
44
|
+
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|
45
|
+
export * from './dialect/sqlite/sqlite-driver.js';
|
|
46
|
+
export * from './dialect/sqlite/sqlite-introspector.js';
|
|
47
|
+
export * from './dialect/sqlite/sqlite-adapter.js';
|
|
38
48
|
export * from './query-compiler/default-query-compiler.js';
|
|
39
49
|
export * from './query-compiler/query-compiler.js';
|
|
40
50
|
export * from './migration/migration.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,9 @@ export * from './query-creator.js';
|
|
|
3
3
|
export * from './query-builder/query-builder.js';
|
|
4
4
|
export * from './query-builder/join-builder.js';
|
|
5
5
|
export * from './query-builder/expression-builder.js';
|
|
6
|
+
export * from './query-builder/insert-result.js';
|
|
7
|
+
export * from './query-builder/delete-result.js';
|
|
8
|
+
export * from './query-builder/update-result.js';
|
|
6
9
|
export * from './raw-builder/raw-builder.js';
|
|
7
10
|
export * from './query-executor/query-executor.js';
|
|
8
11
|
export * from './query-executor/default-query-executor.js';
|
|
@@ -19,6 +22,8 @@ export * from './schema/drop-schema-builder.js';
|
|
|
19
22
|
export * from './schema/column-definition-builder.js';
|
|
20
23
|
export * from './schema/foreign-key-constraint-builder.js';
|
|
21
24
|
export * from './schema/alter-table-builder.js';
|
|
25
|
+
export * from './schema/create-view-builder.js';
|
|
26
|
+
export * from './schema/drop-view-builder.js';
|
|
22
27
|
export * from './dynamic/dynamic.js';
|
|
23
28
|
export * from './driver/driver.js';
|
|
24
29
|
export * from './driver/database-connection.js';
|
|
@@ -35,6 +40,11 @@ export * from './dialect/mysql/mysql-query-compiler.js';
|
|
|
35
40
|
export * from './dialect/mysql/mysql-driver.js';
|
|
36
41
|
export * from './dialect/mysql/mysql-introspector.js';
|
|
37
42
|
export * from './dialect/mysql/mysql-adapter.js';
|
|
43
|
+
export * from './dialect/sqlite/sqlite-dialect.js';
|
|
44
|
+
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|
45
|
+
export * from './dialect/sqlite/sqlite-driver.js';
|
|
46
|
+
export * from './dialect/sqlite/sqlite-introspector.js';
|
|
47
|
+
export * from './dialect/sqlite/sqlite-adapter.js';
|
|
38
48
|
export * from './query-compiler/default-query-compiler.js';
|
|
39
49
|
export * from './query-compiler/query-compiler.js';
|
|
40
50
|
export * from './migration/migration.js';
|
package/dist/esm/kysely.d.ts
CHANGED
|
@@ -116,7 +116,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
116
116
|
* .execute()
|
|
117
117
|
* ```
|
|
118
118
|
*
|
|
119
|
-
* The generated SQL (
|
|
119
|
+
* The generated SQL (PostgreSQL):
|
|
120
120
|
*
|
|
121
121
|
* ```sql
|
|
122
122
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -146,17 +146,19 @@ export declare class Kysely<DB> extends QueryCreator<DB> {
|
|
|
146
146
|
* const catto = await db.transaction().execute(async (trx) => {
|
|
147
147
|
* const jennifer = await trx.insertInto('person')
|
|
148
148
|
* .values({
|
|
149
|
+
* id: db.generated,
|
|
149
150
|
* first_name: 'Jennifer',
|
|
150
|
-
*
|
|
151
|
+
* last_name: 'Aniston',
|
|
151
152
|
* })
|
|
152
153
|
* .returning('id')
|
|
153
|
-
* .
|
|
154
|
+
* .executeTakeFirstOrThrow()
|
|
154
155
|
*
|
|
155
156
|
* await someFunction(trx, jennifer)
|
|
156
157
|
*
|
|
157
158
|
* return await trx.insertInto('pet')
|
|
158
159
|
* .values({
|
|
159
|
-
*
|
|
160
|
+
* id: db.generated,
|
|
161
|
+
* user_id: jennifer.id,
|
|
160
162
|
* name: 'Catto',
|
|
161
163
|
* species: 'cat'
|
|
162
164
|
* })
|
package/dist/esm/kysely.js
CHANGED
|
@@ -151,7 +151,7 @@ export class Kysely extends QueryCreator {
|
|
|
151
151
|
* .execute()
|
|
152
152
|
* ```
|
|
153
153
|
*
|
|
154
|
-
* The generated SQL (
|
|
154
|
+
* The generated SQL (PostgreSQL):
|
|
155
155
|
*
|
|
156
156
|
* ```sql
|
|
157
157
|
* select "person"."id", count("pet"."id") as "pet_count"
|
|
@@ -183,17 +183,19 @@ export class Kysely extends QueryCreator {
|
|
|
183
183
|
* const catto = await db.transaction().execute(async (trx) => {
|
|
184
184
|
* const jennifer = await trx.insertInto('person')
|
|
185
185
|
* .values({
|
|
186
|
+
* id: db.generated,
|
|
186
187
|
* first_name: 'Jennifer',
|
|
187
|
-
*
|
|
188
|
+
* last_name: 'Aniston',
|
|
188
189
|
* })
|
|
189
190
|
* .returning('id')
|
|
190
|
-
* .
|
|
191
|
+
* .executeTakeFirstOrThrow()
|
|
191
192
|
*
|
|
192
193
|
* await someFunction(trx, jennifer)
|
|
193
194
|
*
|
|
194
195
|
* return await trx.insertInto('pet')
|
|
195
196
|
* .values({
|
|
196
|
-
*
|
|
197
|
+
* id: db.generated,
|
|
198
|
+
* user_id: jennifer.id,
|
|
197
199
|
* name: 'Catto',
|
|
198
200
|
* species: 'cat'
|
|
199
201
|
* })
|
|
@@ -57,7 +57,7 @@ async function ensureMigrationTableExists(db) {
|
|
|
57
57
|
.execute();
|
|
58
58
|
}
|
|
59
59
|
catch (error) {
|
|
60
|
-
// At least on
|
|
60
|
+
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
61
61
|
// query doesn't throw if the table already exits. That's why we check if
|
|
62
62
|
// the table exist here and ignore the error if it does.
|
|
63
63
|
if (!(await doesTableExists(db, MIGRATION_TABLE))) {
|
|
@@ -77,7 +77,7 @@ async function ensureMigrationLockTableExists(db) {
|
|
|
77
77
|
.execute();
|
|
78
78
|
}
|
|
79
79
|
catch (error) {
|
|
80
|
-
// At least on
|
|
80
|
+
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|
81
81
|
// query doesn't throw if the table already exits. That's why we check if
|
|
82
82
|
// the table exist here and ignore the error if it does.
|
|
83
83
|
if (!(await doesTableExists(db, MIGRATION_LOCK_TABLE))) {
|
|
@@ -179,5 +179,5 @@ function ensureMigrationsAreNotCorrupted(executedMigrationNames, oldMigrationNam
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
function isMigration(obj) {
|
|
182
|
-
return isObject(obj) && isFunction(obj.up)
|
|
182
|
+
return isObject(obj) && isFunction(obj.up);
|
|
183
183
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CheckConstraintNode } from './check-constraint-node.js';
|
|
2
2
|
import { ColumnNode } from './column-node.js';
|
|
3
3
|
import { DataTypeNode } from './data-type-node.js';
|
|
4
|
+
import { DefaultValueNode } from './default-value-node.js';
|
|
5
|
+
import { GeneratedAlwaysAsNode } from './generated-always-as-node.js';
|
|
4
6
|
import { OperationNode } from './operation-node.js';
|
|
5
7
|
import { RawNode } from './raw-node.js';
|
|
6
8
|
import { ReferencesNode } from './references-node.js';
|
|
7
|
-
import { ValueNode } from './value-node.js';
|
|
8
9
|
export declare type ColumnDefinitionNodeProps = Omit<Partial<ColumnDefinitionNode>, 'kind'>;
|
|
9
10
|
export declare type ColumnDataTypeNode = DataTypeNode | RawNode;
|
|
10
11
|
export interface ColumnDefinitionNode extends OperationNode {
|
|
@@ -12,12 +13,13 @@ export interface ColumnDefinitionNode extends OperationNode {
|
|
|
12
13
|
readonly column: ColumnNode;
|
|
13
14
|
readonly dataType: ColumnDataTypeNode;
|
|
14
15
|
readonly references?: ReferencesNode;
|
|
15
|
-
readonly
|
|
16
|
-
readonly
|
|
17
|
-
readonly
|
|
18
|
-
readonly
|
|
19
|
-
readonly defaultTo?:
|
|
16
|
+
readonly primaryKey: boolean;
|
|
17
|
+
readonly autoIncrement: boolean;
|
|
18
|
+
readonly unique: boolean;
|
|
19
|
+
readonly nullable: boolean;
|
|
20
|
+
readonly defaultTo?: DefaultValueNode;
|
|
20
21
|
readonly check?: CheckConstraintNode;
|
|
22
|
+
readonly generatedAlwaysAs?: GeneratedAlwaysAsNode;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* @internal
|
|
@@ -12,10 +12,10 @@ export const ColumnDefinitionNode = freeze({
|
|
|
12
12
|
kind: 'ColumnDefinitionNode',
|
|
13
13
|
column: ColumnNode.create(column),
|
|
14
14
|
dataType,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
primaryKey: false,
|
|
16
|
+
autoIncrement: false,
|
|
17
|
+
unique: false,
|
|
18
|
+
nullable: true,
|
|
19
19
|
});
|
|
20
20
|
},
|
|
21
21
|
cloneWith(node, props) {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { IdentifierNode } from './identifier-node.js';
|
|
2
2
|
import { OperationNode } from './operation-node.js';
|
|
3
|
-
export declare type CreateSchemaNodeModifier = 'IfNotExists';
|
|
4
3
|
export declare type CreateSchemaNodeParams = Omit<Partial<CreateSchemaNode>, 'kind' | 'schema'>;
|
|
5
4
|
export interface CreateSchemaNode extends OperationNode {
|
|
6
5
|
readonly kind: 'CreateSchemaNode';
|
|
7
6
|
readonly schema: IdentifierNode;
|
|
8
|
-
readonly
|
|
7
|
+
readonly ifNotExists?: boolean;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
10
|
* @internal
|
|
@@ -2,12 +2,11 @@ import { OperationNode } from './operation-node.js';
|
|
|
2
2
|
import { TableNode } from './table-node.js';
|
|
3
3
|
import { ConstraintNode } from './constraint-node.js';
|
|
4
4
|
import { ColumnDefinitionNode } from './column-definition-node.js';
|
|
5
|
-
export declare type CreateTableNodeModifier = 'IfNotExists';
|
|
6
5
|
export interface CreateTableNode extends OperationNode {
|
|
7
6
|
readonly kind: 'CreateTableNode';
|
|
8
7
|
readonly table: TableNode;
|
|
9
8
|
readonly columns: ReadonlyArray<ColumnDefinitionNode>;
|
|
10
|
-
readonly
|
|
9
|
+
readonly ifNotExists?: boolean;
|
|
11
10
|
readonly constraints?: ReadonlyArray<ConstraintNode>;
|
|
12
11
|
}
|
|
13
12
|
/**
|
|
@@ -17,6 +16,6 @@ export declare const CreateTableNode: Readonly<{
|
|
|
17
16
|
is(node: OperationNode): node is CreateTableNode;
|
|
18
17
|
create(table: TableNode): CreateTableNode;
|
|
19
18
|
cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
|
|
20
|
-
|
|
19
|
+
cloneWithIfNotExists(createTable: CreateTableNode, ifNotExists: boolean): CreateTableNode;
|
|
21
20
|
cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
|
|
22
21
|
}>;
|