kysely 0.19.12 → 0.21.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 +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +5 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +16 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +5 -12
- package/dist/cjs/dialect/postgres/postgres-driver.js +16 -11
- package/dist/cjs/dialect/postgres/postgres-introspector.js +17 -9
- package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +1 -3
- package/dist/cjs/dialect/postgres/postgres-query-compiler.js +3 -8
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +3 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +10 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +6 -1
- package/dist/cjs/operation-node/create-table-node.js +16 -0
- package/dist/cjs/operation-node/create-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-type-node.js +2 -2
- package/dist/cjs/operation-node/create-view-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-view-node.js +2 -2
- package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/delete-query-node.js +6 -0
- package/dist/cjs/operation-node/drop-index-node.d.ts +2 -2
- package/dist/cjs/operation-node/drop-index-node.js +2 -2
- package/dist/cjs/operation-node/drop-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/drop-type-node.js +2 -2
- package/dist/cjs/operation-node/drop-view-node.d.ts +2 -2
- package/dist/cjs/operation-node/drop-view-node.js +2 -2
- package/dist/cjs/operation-node/explain-node.d.ts +16 -0
- package/dist/cjs/operation-node/explain-node.js +19 -0
- package/dist/cjs/operation-node/identifier-node.d.ts +2 -2
- package/dist/cjs/operation-node/identifier-node.js +2 -2
- package/dist/cjs/operation-node/insert-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +7 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +30 -6
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -4
- package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/reference-node.d.ts +1 -1
- package/dist/cjs/operation-node/reference-node.js +1 -2
- package/dist/cjs/operation-node/schemable-identifier-node.d.ts +15 -0
- package/dist/cjs/operation-node/schemable-identifier-node.js +26 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/select-query-node.js +6 -0
- package/dist/cjs/operation-node/selection-node.d.ts +2 -1
- package/dist/cjs/operation-node/table-node.d.ts +2 -3
- package/dist/cjs/operation-node/table-node.js +3 -4
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/update-query-node.js +6 -0
- package/dist/cjs/parser/select-parser.js +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +4 -28
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +72 -78
- package/dist/cjs/query-builder/delete-query-builder.d.ts +19 -1
- package/dist/cjs/query-builder/delete-query-builder.js +24 -0
- package/dist/cjs/query-builder/function-builder.d.ts +3 -3
- package/dist/cjs/query-builder/insert-query-builder.d.ts +20 -2
- package/dist/cjs/query-builder/insert-query-builder.js +26 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +38 -1
- package/dist/cjs/query-builder/select-query-builder.js +45 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -1
- package/dist/cjs/query-builder/update-query-builder.js +25 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +8 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +63 -5
- package/dist/cjs/raw-builder/sql.d.ts +96 -96
- package/dist/cjs/raw-builder/sql.js +0 -96
- package/dist/cjs/schema/alter-table-builder.d.ts +6 -6
- package/dist/cjs/schema/column-definition-builder.d.ts +6 -6
- package/dist/cjs/schema/create-table-builder.d.ts +54 -0
- package/dist/cjs/schema/create-table-builder.js +64 -0
- package/dist/cjs/util/explainable.d.ts +5 -0
- package/dist/cjs/util/explainable.js +2 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +5 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +16 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +5 -12
- package/dist/esm/dialect/postgres/postgres-driver.js +16 -11
- package/dist/esm/dialect/postgres/postgres-introspector.js +17 -9
- package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +1 -3
- package/dist/esm/dialect/postgres/postgres-query-compiler.js +3 -8
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +3 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +10 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/operation-node/create-table-node.d.ts +6 -1
- package/dist/esm/operation-node/create-table-node.js +16 -0
- package/dist/esm/operation-node/create-type-node.d.ts +2 -2
- package/dist/esm/operation-node/create-type-node.js +2 -2
- package/dist/esm/operation-node/create-view-node.d.ts +2 -2
- package/dist/esm/operation-node/create-view-node.js +2 -2
- package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
- package/dist/esm/operation-node/delete-query-node.js +6 -0
- package/dist/esm/operation-node/drop-index-node.d.ts +2 -2
- package/dist/esm/operation-node/drop-index-node.js +2 -2
- package/dist/esm/operation-node/drop-type-node.d.ts +2 -2
- package/dist/esm/operation-node/drop-type-node.js +2 -2
- package/dist/esm/operation-node/drop-view-node.d.ts +2 -2
- package/dist/esm/operation-node/drop-view-node.js +2 -2
- package/dist/esm/operation-node/explain-node.d.ts +16 -0
- package/dist/esm/operation-node/explain-node.js +17 -0
- package/dist/esm/operation-node/identifier-node.d.ts +2 -2
- package/dist/esm/operation-node/identifier-node.js +2 -2
- package/dist/esm/operation-node/insert-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +7 -3
- package/dist/esm/operation-node/operation-node-transformer.js +30 -6
- package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -4
- package/dist/esm/operation-node/operation-node-visitor.js +2 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/reference-node.d.ts +1 -1
- package/dist/esm/operation-node/reference-node.js +1 -2
- package/dist/esm/operation-node/schemable-identifier-node.d.ts +15 -0
- package/dist/esm/operation-node/schemable-identifier-node.js +24 -0
- package/dist/esm/operation-node/select-query-node.d.ts +3 -0
- package/dist/esm/operation-node/select-query-node.js +6 -0
- package/dist/esm/operation-node/selection-node.d.ts +2 -1
- package/dist/esm/operation-node/table-node.d.ts +2 -3
- package/dist/esm/operation-node/table-node.js +3 -4
- package/dist/esm/operation-node/update-query-node.d.ts +3 -0
- package/dist/esm/operation-node/update-query-node.js +6 -0
- package/dist/esm/parser/select-parser.js +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +4 -28
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +72 -78
- package/dist/esm/query-builder/delete-query-builder.d.ts +19 -1
- package/dist/esm/query-builder/delete-query-builder.js +24 -0
- package/dist/esm/query-builder/function-builder.d.ts +3 -3
- package/dist/esm/query-builder/insert-query-builder.d.ts +20 -2
- package/dist/esm/query-builder/insert-query-builder.js +26 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +38 -1
- package/dist/esm/query-builder/select-query-builder.js +45 -2
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -1
- package/dist/esm/query-builder/update-query-builder.js +25 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +8 -0
- package/dist/esm/query-compiler/default-query-compiler.js +63 -5
- package/dist/esm/raw-builder/sql.d.ts +96 -96
- package/dist/esm/raw-builder/sql.js +0 -96
- package/dist/esm/schema/alter-table-builder.d.ts +6 -6
- package/dist/esm/schema/column-definition-builder.d.ts +6 -6
- package/dist/esm/schema/create-table-builder.d.ts +54 -0
- package/dist/esm/schema/create-table-builder.js +64 -0
- package/dist/esm/util/explainable.d.ts +5 -0
- package/dist/esm/util/explainable.js +2 -0
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ column names, aliases and types from selected subqueries, joined subqueries, `wi
|
|
|
21
21
|
much anything you can think of.
|
|
22
22
|
|
|
23
23
|
Of course there are cases where things cannot be typed at compile time, and Kysely offers escape
|
|
24
|
-
hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/
|
|
24
|
+
hatches for these situations. See the [sql template tag](https://koskimas.github.io/kysely/functions/sql.html)
|
|
25
25
|
and the [DynamicModule](https://koskimas.github.io/kysely/classes/DynamicModule.html#ref) for more info.
|
|
26
26
|
|
|
27
27
|
If you start using Kysely and can't find something you'd want to use, please open an issue or join our
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
2
2
|
export declare class MysqlQueryCompiler extends DefaultQueryCompiler {
|
|
3
3
|
protected getCurrentParameterPlaceholder(): string;
|
|
4
|
+
protected getLeftExplainOptionsWrapper(): string;
|
|
5
|
+
protected getExplainOptionAssignment(): string;
|
|
6
|
+
protected getExplainOptionsDelimiter(): string;
|
|
7
|
+
protected getRightExplainOptionsWrapper(): string;
|
|
4
8
|
protected getLeftIdentifierWrapper(): string;
|
|
5
9
|
protected getRightIdentifierWrapper(): string;
|
|
10
|
+
protected sanitizeIdentifier(identifier: string): string;
|
|
6
11
|
}
|
|
@@ -2,15 +2,31 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MysqlQueryCompiler = void 0;
|
|
4
4
|
const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
|
|
5
|
+
const ID_WRAP_REGEX = /`/g;
|
|
5
6
|
class MysqlQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
|
|
6
7
|
getCurrentParameterPlaceholder() {
|
|
7
8
|
return '?';
|
|
8
9
|
}
|
|
10
|
+
getLeftExplainOptionsWrapper() {
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
getExplainOptionAssignment() {
|
|
14
|
+
return '=';
|
|
15
|
+
}
|
|
16
|
+
getExplainOptionsDelimiter() {
|
|
17
|
+
return ' ';
|
|
18
|
+
}
|
|
19
|
+
getRightExplainOptionsWrapper() {
|
|
20
|
+
return '';
|
|
21
|
+
}
|
|
9
22
|
getLeftIdentifierWrapper() {
|
|
10
23
|
return '`';
|
|
11
24
|
}
|
|
12
25
|
getRightIdentifierWrapper() {
|
|
13
26
|
return '`';
|
|
14
27
|
}
|
|
28
|
+
sanitizeIdentifier(identifier) {
|
|
29
|
+
return identifier.replace(ID_WRAP_REGEX, '``');
|
|
30
|
+
}
|
|
15
31
|
}
|
|
16
32
|
exports.MysqlQueryCompiler = MysqlQueryCompiler;
|
|
@@ -1,14 +1,4 @@
|
|
|
1
1
|
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
2
|
-
export declare type PostgresCursorConstructor = new <T>(sql: string, parameters: readonly unknown[]) => PostgresCursor<T>;
|
|
3
|
-
export declare type PostgresCursor<T> = {
|
|
4
|
-
state: 'initialized' | 'idle' | 'submitted' | 'busy';
|
|
5
|
-
read: (rowsCount: number) => Promise<T[]>;
|
|
6
|
-
} | {
|
|
7
|
-
state: 'done';
|
|
8
|
-
} | {
|
|
9
|
-
state: 'error';
|
|
10
|
-
_error: Error;
|
|
11
|
-
};
|
|
12
2
|
/**
|
|
13
3
|
* Config for the PostgreSQL dialect.
|
|
14
4
|
*/
|
|
@@ -56,13 +46,16 @@ export interface PostgresPoolClient {
|
|
|
56
46
|
query<R>(cursor: PostgresCursor<R>): PostgresCursor<R>;
|
|
57
47
|
release(): void;
|
|
58
48
|
}
|
|
49
|
+
export interface PostgresCursor<T> {
|
|
50
|
+
read(rowsCount: number): Promise<T[]>;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
export declare type PostgresCursorConstructor = new <T>(sql: string, parameters: unknown[]) => PostgresCursor<T>;
|
|
59
54
|
export interface PostgresQueryResult<R> {
|
|
60
55
|
command: 'UPDATE' | 'DELETE' | 'INSERT' | 'SELECT';
|
|
61
56
|
rowCount: number;
|
|
62
57
|
rows: R[];
|
|
63
58
|
}
|
|
64
|
-
export interface PostgresStreamOptions {
|
|
65
|
-
}
|
|
66
59
|
export interface PostgresStream<T> {
|
|
67
60
|
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
|
|
68
61
|
}
|
|
@@ -90,18 +90,23 @@ class PostgresConnection {
|
|
|
90
90
|
if (!this.#options.cursor) {
|
|
91
91
|
throw new Error("'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.");
|
|
92
92
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
93
|
+
if (!Number.isInteger(chunkSize) || chunkSize <= 0) {
|
|
94
|
+
throw new Error('chunkSize must be a positive integer');
|
|
95
|
+
}
|
|
96
|
+
const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters.slice()));
|
|
97
|
+
try {
|
|
98
|
+
while (true) {
|
|
99
|
+
const rows = await cursor.read(chunkSize);
|
|
100
|
+
if (rows.length === 0) {
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
yield {
|
|
104
|
+
rows,
|
|
105
|
+
};
|
|
100
106
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
};
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
await cursor.close();
|
|
105
110
|
}
|
|
106
111
|
}
|
|
107
112
|
[PRIVATE_RELEASE_METHOD]() {
|
|
@@ -21,33 +21,41 @@ class PostgresIntrospector {
|
|
|
21
21
|
let query = this.#db
|
|
22
22
|
.selectFrom('pg_catalog.pg_attribute as a')
|
|
23
23
|
.innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')
|
|
24
|
-
.innerJoin('pg_catalog.
|
|
24
|
+
.innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')
|
|
25
25
|
.innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')
|
|
26
26
|
.select([
|
|
27
27
|
'a.attname as column',
|
|
28
28
|
'a.attnotnull as not_null',
|
|
29
29
|
'a.atthasdef as has_default',
|
|
30
|
-
'
|
|
31
|
-
'
|
|
30
|
+
'c.relname as table',
|
|
31
|
+
'ns.nspname as schema',
|
|
32
32
|
'typ.typname as type',
|
|
33
33
|
// Detect if the column is auto incrementing by finding the sequence
|
|
34
34
|
// that is created for `serial` and `bigserial` columns.
|
|
35
35
|
this.#db
|
|
36
36
|
.selectFrom('pg_class')
|
|
37
37
|
.select((0, sql_js_1.sql) `true`.as('auto_incrementing'))
|
|
38
|
+
// Make sure the sequence is in the same schema as the table.
|
|
39
|
+
.whereRef('relnamespace', '=', 'c.relnamespace')
|
|
38
40
|
.where('relkind', '=', 'S')
|
|
39
|
-
.where('relname', '=', (0, sql_js_1.sql) `
|
|
41
|
+
.where('relname', '=', (0, sql_js_1.sql) `c.relname || '_' || a.attname || '_seq'`)
|
|
40
42
|
.as('auto_incrementing'),
|
|
41
43
|
])
|
|
42
|
-
|
|
43
|
-
.where('
|
|
44
|
-
.where('
|
|
44
|
+
// r == normal table
|
|
45
|
+
.where('c.relkind', '=', 'r')
|
|
46
|
+
.where('ns.nspname', '!~', '^pg_')
|
|
47
|
+
.where('ns.nspname', '!=', 'information_schema')
|
|
48
|
+
// No system columns
|
|
49
|
+
.where('a.attnum', '>=', 0)
|
|
45
50
|
.where('a.attisdropped', '!=', true)
|
|
51
|
+
.orderBy('ns.nspname')
|
|
52
|
+
.orderBy('c.relname')
|
|
53
|
+
.orderBy('a.attname')
|
|
46
54
|
.castTo();
|
|
47
55
|
if (!options.withInternalKyselyTables) {
|
|
48
56
|
query = query
|
|
49
|
-
.where('
|
|
50
|
-
.where('
|
|
57
|
+
.where('c.relname', '!=', migrator_js_1.DEFAULT_MIGRATION_TABLE)
|
|
58
|
+
.where('c.relname', '!=', migrator_js_1.DEFAULT_MIGRATION_LOCK_TABLE);
|
|
51
59
|
}
|
|
52
60
|
const rawColumns = await query.execute();
|
|
53
61
|
return this.#parseTableMetadata(rawColumns);
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
2
2
|
export declare class PostgresQueryCompiler extends DefaultQueryCompiler {
|
|
3
|
-
protected
|
|
4
|
-
protected getLeftIdentifierWrapper(): string;
|
|
5
|
-
protected getRightIdentifierWrapper(): string;
|
|
3
|
+
protected sanitizeIdentifier(identifier: string): string;
|
|
6
4
|
}
|
|
@@ -2,15 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PostgresQueryCompiler = void 0;
|
|
4
4
|
const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
|
|
5
|
+
const ID_WRAP_REGEX = /"/g;
|
|
5
6
|
class PostgresQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
|
|
6
|
-
|
|
7
|
-
return '
|
|
8
|
-
}
|
|
9
|
-
getLeftIdentifierWrapper() {
|
|
10
|
-
return '"';
|
|
11
|
-
}
|
|
12
|
-
getRightIdentifierWrapper() {
|
|
13
|
-
return '"';
|
|
7
|
+
sanitizeIdentifier(identifier) {
|
|
8
|
+
return identifier.replace(ID_WRAP_REGEX, '""');
|
|
14
9
|
}
|
|
15
10
|
}
|
|
16
11
|
exports.PostgresQueryCompiler = PostgresQueryCompiler;
|
|
@@ -18,6 +18,7 @@ class SqliteIntrospector {
|
|
|
18
18
|
.where('type', '=', 'table')
|
|
19
19
|
.where('name', 'not like', 'sqlite_%')
|
|
20
20
|
.select('name')
|
|
21
|
+
.orderBy('name')
|
|
21
22
|
.castTo();
|
|
22
23
|
if (!options.withInternalKyselyTables) {
|
|
23
24
|
query = query
|
|
@@ -50,6 +51,7 @@ class SqliteIntrospector {
|
|
|
50
51
|
const columns = await db
|
|
51
52
|
.selectFrom((0, sql_js_1.sql) `pragma_table_info(${table})`.as('table_info'))
|
|
52
53
|
.select(['name', 'type', 'notnull', 'dflt_value'])
|
|
54
|
+
.orderBy('name')
|
|
53
55
|
.execute();
|
|
54
56
|
return {
|
|
55
57
|
name: table,
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
2
2
|
export declare class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
3
3
|
protected getCurrentParameterPlaceholder(): string;
|
|
4
|
+
protected getLeftExplainOptionsWrapper(): string;
|
|
5
|
+
protected getRightExplainOptionsWrapper(): string;
|
|
4
6
|
protected getLeftIdentifierWrapper(): string;
|
|
5
7
|
protected getRightIdentifierWrapper(): string;
|
|
6
8
|
protected getAutoIncrement(): string;
|
|
9
|
+
protected sanitizeIdentifier(identifier: string): string;
|
|
7
10
|
}
|
|
@@ -2,10 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SqliteQueryCompiler = void 0;
|
|
4
4
|
const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
|
|
5
|
+
const ID_WRAP_REGEX = /"/g;
|
|
5
6
|
class SqliteQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
|
|
6
7
|
getCurrentParameterPlaceholder() {
|
|
7
8
|
return '?';
|
|
8
9
|
}
|
|
10
|
+
getLeftExplainOptionsWrapper() {
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
getRightExplainOptionsWrapper() {
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
9
16
|
getLeftIdentifierWrapper() {
|
|
10
17
|
return '"';
|
|
11
18
|
}
|
|
@@ -15,5 +22,8 @@ class SqliteQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompil
|
|
|
15
22
|
getAutoIncrement() {
|
|
16
23
|
return 'autoincrement';
|
|
17
24
|
}
|
|
25
|
+
sanitizeIdentifier(identifier) {
|
|
26
|
+
return identifier.replace(ID_WRAP_REGEX, '""');
|
|
27
|
+
}
|
|
18
28
|
}
|
|
19
29
|
exports.SqliteQueryCompiler = SqliteQueryCompiler;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -73,6 +73,7 @@ export * from './migration/file-migration-provider.js';
|
|
|
73
73
|
export * from './plugin/kysely-plugin.js';
|
|
74
74
|
export * from './plugin/camel-case/camel-case-plugin.js';
|
|
75
75
|
export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
|
|
76
|
+
export * from './plugin/with-schema/with-schema-plugin.js';
|
|
76
77
|
export * from './operation-node/add-column-node.js';
|
|
77
78
|
export * from './operation-node/add-constraint-node.js';
|
|
78
79
|
export * from './operation-node/alias-node.js';
|
|
@@ -149,8 +150,10 @@ export * from './operation-node/value-node.js';
|
|
|
149
150
|
export * from './operation-node/values-node.js';
|
|
150
151
|
export * from './operation-node/where-node.js';
|
|
151
152
|
export * from './operation-node/with-node.js';
|
|
153
|
+
export * from './operation-node/explain-node.js';
|
|
152
154
|
export * from './util/column-type.js';
|
|
153
155
|
export * from './util/compilable.js';
|
|
156
|
+
export * from './util/explainable.js';
|
|
154
157
|
export * from './util/log.js';
|
|
155
158
|
export { AnyColumn, UnknownRow, AnySelectQueryBuilder, } from './util/type-utils.js';
|
|
156
159
|
export { SelectExpression, SelectExpressionOrList, Selection, } from './parser/select-parser.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -89,6 +89,7 @@ __exportStar(require("./migration/file-migration-provider.js"), exports);
|
|
|
89
89
|
__exportStar(require("./plugin/kysely-plugin.js"), exports);
|
|
90
90
|
__exportStar(require("./plugin/camel-case/camel-case-plugin.js"), exports);
|
|
91
91
|
__exportStar(require("./plugin/deduplicate-joins/deduplicate-joins-plugin.js"), exports);
|
|
92
|
+
__exportStar(require("./plugin/with-schema/with-schema-plugin.js"), exports);
|
|
92
93
|
__exportStar(require("./operation-node/add-column-node.js"), exports);
|
|
93
94
|
__exportStar(require("./operation-node/add-constraint-node.js"), exports);
|
|
94
95
|
__exportStar(require("./operation-node/alias-node.js"), exports);
|
|
@@ -165,6 +166,8 @@ __exportStar(require("./operation-node/value-node.js"), exports);
|
|
|
165
166
|
__exportStar(require("./operation-node/values-node.js"), exports);
|
|
166
167
|
__exportStar(require("./operation-node/where-node.js"), exports);
|
|
167
168
|
__exportStar(require("./operation-node/with-node.js"), exports);
|
|
169
|
+
__exportStar(require("./operation-node/explain-node.js"), exports);
|
|
168
170
|
__exportStar(require("./util/column-type.js"), exports);
|
|
169
171
|
__exportStar(require("./util/compilable.js"), exports);
|
|
172
|
+
__exportStar(require("./util/explainable.js"), exports);
|
|
170
173
|
__exportStar(require("./util/log.js"), exports);
|
|
@@ -3,9 +3,10 @@ import { TableNode } from './table-node.js';
|
|
|
3
3
|
import { ConstraintNode } from './constraint-node.js';
|
|
4
4
|
import { ColumnDefinitionNode } from './column-definition-node.js';
|
|
5
5
|
import { ArrayItemType } from '../util/type-utils.js';
|
|
6
|
+
import { RawNode } from './raw-node.js';
|
|
6
7
|
export declare const ON_COMMIT_ACTIONS: string[];
|
|
7
8
|
export declare type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
|
|
8
|
-
export declare type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints'>;
|
|
9
|
+
export declare type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints' | 'frontModifiers' | 'endModifiers'>;
|
|
9
10
|
export interface CreateTableNode extends OperationNode {
|
|
10
11
|
readonly kind: 'CreateTableNode';
|
|
11
12
|
readonly table: TableNode;
|
|
@@ -14,6 +15,8 @@ export interface CreateTableNode extends OperationNode {
|
|
|
14
15
|
readonly temporary?: boolean;
|
|
15
16
|
readonly ifNotExists?: boolean;
|
|
16
17
|
readonly onCommit?: OnCommitAction;
|
|
18
|
+
readonly frontModifiers?: ReadonlyArray<RawNode>;
|
|
19
|
+
readonly endModifiers?: ReadonlyArray<RawNode>;
|
|
17
20
|
}
|
|
18
21
|
/**
|
|
19
22
|
* @internal
|
|
@@ -23,5 +26,7 @@ export declare const CreateTableNode: Readonly<{
|
|
|
23
26
|
create(table: TableNode): CreateTableNode;
|
|
24
27
|
cloneWithColumn(createTable: CreateTableNode, column: ColumnDefinitionNode): CreateTableNode;
|
|
25
28
|
cloneWithConstraint(createTable: CreateTableNode, constraint: ConstraintNode): CreateTableNode;
|
|
29
|
+
cloneWithFrontModifier(createTable: CreateTableNode, modifier: RawNode): CreateTableNode;
|
|
30
|
+
cloneWithEndModifier(createTable: CreateTableNode, modifier: RawNode): CreateTableNode;
|
|
26
31
|
cloneWith(createTable: CreateTableNode, params: CreateTableNodeParams): CreateTableNode;
|
|
27
32
|
}>;
|
|
@@ -31,6 +31,22 @@ exports.CreateTableNode = (0, object_utils_js_1.freeze)({
|
|
|
31
31
|
: (0, object_utils_js_1.freeze)([constraint]),
|
|
32
32
|
});
|
|
33
33
|
},
|
|
34
|
+
cloneWithFrontModifier(createTable, modifier) {
|
|
35
|
+
return (0, object_utils_js_1.freeze)({
|
|
36
|
+
...createTable,
|
|
37
|
+
frontModifiers: createTable.frontModifiers
|
|
38
|
+
? (0, object_utils_js_1.freeze)([...createTable.frontModifiers, modifier])
|
|
39
|
+
: (0, object_utils_js_1.freeze)([modifier]),
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
cloneWithEndModifier(createTable, modifier) {
|
|
43
|
+
return (0, object_utils_js_1.freeze)({
|
|
44
|
+
...createTable,
|
|
45
|
+
endModifiers: createTable.endModifiers
|
|
46
|
+
? (0, object_utils_js_1.freeze)([...createTable.endModifiers, modifier])
|
|
47
|
+
: (0, object_utils_js_1.freeze)([modifier]),
|
|
48
|
+
});
|
|
49
|
+
},
|
|
34
50
|
cloneWith(createTable, params) {
|
|
35
51
|
return (0, object_utils_js_1.freeze)({
|
|
36
52
|
...createTable,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { IdentifierNode } from './identifier-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
3
3
|
import { ValueListNode } from './value-list-node.js';
|
|
4
4
|
export declare type CreateTypeNodeParams = Omit<Partial<CreateTypeNode>, 'kind'>;
|
|
5
5
|
export interface CreateTypeNode extends OperationNode {
|
|
6
6
|
readonly kind: 'CreateTypeNode';
|
|
7
|
-
readonly name:
|
|
7
|
+
readonly name: SchemableIdentifierNode;
|
|
8
8
|
readonly enum?: ValueListNode;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CreateTypeNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
5
|
+
const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
|
|
6
6
|
const value_list_node_js_1 = require("./value-list-node.js");
|
|
7
7
|
const value_node_js_1 = require("./value-node.js");
|
|
8
8
|
/**
|
|
@@ -15,7 +15,7 @@ exports.CreateTypeNode = (0, object_utils_js_1.freeze)({
|
|
|
15
15
|
create(name) {
|
|
16
16
|
return (0, object_utils_js_1.freeze)({
|
|
17
17
|
kind: 'CreateTypeNode',
|
|
18
|
-
name:
|
|
18
|
+
name: schemable_identifier_node_js_1.SchemableIdentifierNode.create(name),
|
|
19
19
|
});
|
|
20
20
|
},
|
|
21
21
|
cloneWithEnum(createType, values) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ColumnNode } from './column-node.js';
|
|
2
|
-
import { IdentifierNode } from './identifier-node.js';
|
|
3
2
|
import { OperationNode } from './operation-node.js';
|
|
4
3
|
import { RawNode } from './raw-node.js';
|
|
4
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
5
5
|
import { SelectQueryNode } from './select-query-node.js';
|
|
6
6
|
export declare type CreateViewNodeParams = Omit<Partial<CreateViewNode>, 'kind' | 'name'>;
|
|
7
7
|
export interface CreateViewNode extends OperationNode {
|
|
8
8
|
readonly kind: 'CreateViewNode';
|
|
9
|
-
readonly name:
|
|
9
|
+
readonly name: SchemableIdentifierNode;
|
|
10
10
|
readonly temporary?: boolean;
|
|
11
11
|
readonly materialized?: boolean;
|
|
12
12
|
readonly orReplace?: boolean;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CreateViewNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
5
|
+
const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
@@ -13,7 +13,7 @@ exports.CreateViewNode = (0, object_utils_js_1.freeze)({
|
|
|
13
13
|
create(name) {
|
|
14
14
|
return (0, object_utils_js_1.freeze)({
|
|
15
15
|
kind: 'CreateViewNode',
|
|
16
|
-
name:
|
|
16
|
+
name: schemable_identifier_node_js_1.SchemableIdentifierNode.create(name),
|
|
17
17
|
});
|
|
18
18
|
},
|
|
19
19
|
cloneWith(createView, params) {
|
|
@@ -8,6 +8,7 @@ import { WithNode } from './with-node.js';
|
|
|
8
8
|
import { LimitNode } from './limit-node.js';
|
|
9
9
|
import { OrderByNode } from './order-by-node.js';
|
|
10
10
|
import { OrderByItemNode } from './order-by-item-node.js';
|
|
11
|
+
import { ExplainNode } from './explain-node.js';
|
|
11
12
|
export interface DeleteQueryNode extends OperationNode {
|
|
12
13
|
readonly kind: 'DeleteQueryNode';
|
|
13
14
|
readonly from: FromNode;
|
|
@@ -17,6 +18,7 @@ export interface DeleteQueryNode extends OperationNode {
|
|
|
17
18
|
readonly with?: WithNode;
|
|
18
19
|
readonly orderBy?: OrderByNode;
|
|
19
20
|
readonly limit?: LimitNode;
|
|
21
|
+
readonly explain?: ExplainNode;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* @internal
|
|
@@ -26,4 +28,5 @@ export declare const DeleteQueryNode: Readonly<{
|
|
|
26
28
|
create(fromItem: TableExpressionNode, withNode?: WithNode): DeleteQueryNode;
|
|
27
29
|
cloneWithOrderByItem(deleteNode: DeleteQueryNode, item: OrderByItemNode): DeleteQueryNode;
|
|
28
30
|
cloneWithLimit(deleteNode: DeleteQueryNode, limit: LimitNode): DeleteQueryNode;
|
|
31
|
+
cloneWithExplain(deleteNode: DeleteQueryNode, explain: ExplainNode): DeleteQueryNode;
|
|
29
32
|
}>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { IdentifierNode } from './identifier-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
3
3
|
import { TableNode } from './table-node.js';
|
|
4
4
|
export declare type DropIndexNodeProps = Omit<DropIndexNode, 'kind' | 'name'>;
|
|
5
5
|
export interface DropIndexNode extends OperationNode {
|
|
6
6
|
readonly kind: 'DropIndexNode';
|
|
7
|
-
readonly name:
|
|
7
|
+
readonly name: SchemableIdentifierNode;
|
|
8
8
|
readonly table?: TableNode;
|
|
9
9
|
readonly ifExists?: boolean;
|
|
10
10
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DropIndexNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
5
|
+
const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
@@ -13,7 +13,7 @@ exports.DropIndexNode = (0, object_utils_js_1.freeze)({
|
|
|
13
13
|
create(name, params) {
|
|
14
14
|
return (0, object_utils_js_1.freeze)({
|
|
15
15
|
kind: 'DropIndexNode',
|
|
16
|
-
name:
|
|
16
|
+
name: schemable_identifier_node_js_1.SchemableIdentifierNode.create(name),
|
|
17
17
|
...params,
|
|
18
18
|
});
|
|
19
19
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IdentifierNode } from './identifier-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
3
3
|
export declare type DropTypeNodeParams = Omit<Partial<DropTypeNode>, 'kind' | 'name'>;
|
|
4
4
|
export interface DropTypeNode extends OperationNode {
|
|
5
5
|
readonly kind: 'DropTypeNode';
|
|
6
|
-
readonly name:
|
|
6
|
+
readonly name: SchemableIdentifierNode;
|
|
7
7
|
readonly ifExists?: boolean;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DropTypeNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
5
|
+
const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
@@ -13,7 +13,7 @@ exports.DropTypeNode = (0, object_utils_js_1.freeze)({
|
|
|
13
13
|
create(name) {
|
|
14
14
|
return (0, object_utils_js_1.freeze)({
|
|
15
15
|
kind: 'DropTypeNode',
|
|
16
|
-
name:
|
|
16
|
+
name: schemable_identifier_node_js_1.SchemableIdentifierNode.create(name),
|
|
17
17
|
});
|
|
18
18
|
},
|
|
19
19
|
cloneWith(dropType, params) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IdentifierNode } from './identifier-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
3
3
|
export declare type DropViewNodeParams = Omit<Partial<DropViewNode>, 'kind' | 'name'>;
|
|
4
4
|
export interface DropViewNode extends OperationNode {
|
|
5
5
|
readonly kind: 'DropViewNode';
|
|
6
|
-
readonly name:
|
|
6
|
+
readonly name: SchemableIdentifierNode;
|
|
7
7
|
readonly ifExists?: boolean;
|
|
8
8
|
readonly materialized?: boolean;
|
|
9
9
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DropViewNode = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
5
|
+
const schemable_identifier_node_js_1 = require("./schemable-identifier-node.js");
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
@@ -13,7 +13,7 @@ exports.DropViewNode = (0, object_utils_js_1.freeze)({
|
|
|
13
13
|
create(name) {
|
|
14
14
|
return (0, object_utils_js_1.freeze)({
|
|
15
15
|
kind: 'DropViewNode',
|
|
16
|
-
name:
|
|
16
|
+
name: schemable_identifier_node_js_1.SchemableIdentifierNode.create(name),
|
|
17
17
|
});
|
|
18
18
|
},
|
|
19
19
|
cloneWith(dropView, params) {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExplainFormat } from '../util/explainable.js';
|
|
2
|
+
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
3
|
+
import { OperationNode } from './operation-node.js';
|
|
4
|
+
import { RawNode } from './raw-node.js';
|
|
5
|
+
export interface ExplainNode extends OperationNode {
|
|
6
|
+
readonly kind: 'ExplainNode';
|
|
7
|
+
readonly format?: ExplainFormat;
|
|
8
|
+
readonly options?: RawNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare const ExplainNode: Readonly<{
|
|
14
|
+
is(node: OperationNode): node is ExplainNode;
|
|
15
|
+
create(format?: ExplainFormat, options?: AnyRawBuilder): ExplainNode;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExplainNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.ExplainNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'ExplainNode';
|
|
11
|
+
},
|
|
12
|
+
create(format, options) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'ExplainNode',
|
|
15
|
+
format,
|
|
16
|
+
options: options?.toOperationNode(),
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
2
|
export interface IdentifierNode extends OperationNode {
|
|
3
3
|
readonly kind: 'IdentifierNode';
|
|
4
|
-
readonly
|
|
4
|
+
readonly name: string;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
export declare const IdentifierNode: Readonly<{
|
|
10
10
|
is(node: OperationNode): node is IdentifierNode;
|
|
11
|
-
create(
|
|
11
|
+
create(name: string): IdentifierNode;
|
|
12
12
|
}>;
|
|
@@ -9,10 +9,10 @@ exports.IdentifierNode = (0, object_utils_js_1.freeze)({
|
|
|
9
9
|
is(node) {
|
|
10
10
|
return node.kind === 'IdentifierNode';
|
|
11
11
|
},
|
|
12
|
-
create(
|
|
12
|
+
create(name) {
|
|
13
13
|
return (0, object_utils_js_1.freeze)({
|
|
14
14
|
kind: 'IdentifierNode',
|
|
15
|
-
|
|
15
|
+
name,
|
|
16
16
|
});
|
|
17
17
|
},
|
|
18
18
|
});
|