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
|
@@ -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
|
}
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
/// <reference types="./mysql-query-compiler.d.ts" />
|
|
2
2
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
3
|
+
const ID_WRAP_REGEX = /`/g;
|
|
3
4
|
export class MysqlQueryCompiler extends DefaultQueryCompiler {
|
|
4
5
|
getCurrentParameterPlaceholder() {
|
|
5
6
|
return '?';
|
|
6
7
|
}
|
|
8
|
+
getLeftExplainOptionsWrapper() {
|
|
9
|
+
return '';
|
|
10
|
+
}
|
|
11
|
+
getExplainOptionAssignment() {
|
|
12
|
+
return '=';
|
|
13
|
+
}
|
|
14
|
+
getExplainOptionsDelimiter() {
|
|
15
|
+
return ' ';
|
|
16
|
+
}
|
|
17
|
+
getRightExplainOptionsWrapper() {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
7
20
|
getLeftIdentifierWrapper() {
|
|
8
21
|
return '`';
|
|
9
22
|
}
|
|
10
23
|
getRightIdentifierWrapper() {
|
|
11
24
|
return '`';
|
|
12
25
|
}
|
|
26
|
+
sanitizeIdentifier(identifier) {
|
|
27
|
+
return identifier.replace(ID_WRAP_REGEX, '``');
|
|
28
|
+
}
|
|
13
29
|
}
|
|
@@ -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
|
}
|
|
@@ -87,18 +87,23 @@ class PostgresConnection {
|
|
|
87
87
|
if (!this.#options.cursor) {
|
|
88
88
|
throw new Error("'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.");
|
|
89
89
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
if (!Number.isInteger(chunkSize) || chunkSize <= 0) {
|
|
91
|
+
throw new Error('chunkSize must be a positive integer');
|
|
92
|
+
}
|
|
93
|
+
const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters.slice()));
|
|
94
|
+
try {
|
|
95
|
+
while (true) {
|
|
96
|
+
const rows = await cursor.read(chunkSize);
|
|
97
|
+
if (rows.length === 0) {
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
yield {
|
|
101
|
+
rows,
|
|
102
|
+
};
|
|
97
103
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
};
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
await cursor.close();
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
109
|
[PRIVATE_RELEASE_METHOD]() {
|
|
@@ -19,33 +19,41 @@ export class PostgresIntrospector {
|
|
|
19
19
|
let query = this.#db
|
|
20
20
|
.selectFrom('pg_catalog.pg_attribute as a')
|
|
21
21
|
.innerJoin('pg_catalog.pg_class as c', 'a.attrelid', 'c.oid')
|
|
22
|
-
.innerJoin('pg_catalog.
|
|
22
|
+
.innerJoin('pg_catalog.pg_namespace as ns', 'c.relnamespace', 'ns.oid')
|
|
23
23
|
.innerJoin('pg_catalog.pg_type as typ', 'a.atttypid', 'typ.oid')
|
|
24
24
|
.select([
|
|
25
25
|
'a.attname as column',
|
|
26
26
|
'a.attnotnull as not_null',
|
|
27
27
|
'a.atthasdef as has_default',
|
|
28
|
-
'
|
|
29
|
-
'
|
|
28
|
+
'c.relname as table',
|
|
29
|
+
'ns.nspname as schema',
|
|
30
30
|
'typ.typname as type',
|
|
31
31
|
// Detect if the column is auto incrementing by finding the sequence
|
|
32
32
|
// that is created for `serial` and `bigserial` columns.
|
|
33
33
|
this.#db
|
|
34
34
|
.selectFrom('pg_class')
|
|
35
35
|
.select(sql `true`.as('auto_incrementing'))
|
|
36
|
+
// Make sure the sequence is in the same schema as the table.
|
|
37
|
+
.whereRef('relnamespace', '=', 'c.relnamespace')
|
|
36
38
|
.where('relkind', '=', 'S')
|
|
37
|
-
.where('relname', '=', sql `
|
|
39
|
+
.where('relname', '=', sql `c.relname || '_' || a.attname || '_seq'`)
|
|
38
40
|
.as('auto_incrementing'),
|
|
39
41
|
])
|
|
40
|
-
|
|
41
|
-
.where('
|
|
42
|
-
.where('
|
|
42
|
+
// r == normal table
|
|
43
|
+
.where('c.relkind', '=', 'r')
|
|
44
|
+
.where('ns.nspname', '!~', '^pg_')
|
|
45
|
+
.where('ns.nspname', '!=', 'information_schema')
|
|
46
|
+
// No system columns
|
|
47
|
+
.where('a.attnum', '>=', 0)
|
|
43
48
|
.where('a.attisdropped', '!=', true)
|
|
49
|
+
.orderBy('ns.nspname')
|
|
50
|
+
.orderBy('c.relname')
|
|
51
|
+
.orderBy('a.attname')
|
|
44
52
|
.castTo();
|
|
45
53
|
if (!options.withInternalKyselyTables) {
|
|
46
54
|
query = query
|
|
47
|
-
.where('
|
|
48
|
-
.where('
|
|
55
|
+
.where('c.relname', '!=', DEFAULT_MIGRATION_TABLE)
|
|
56
|
+
.where('c.relname', '!=', DEFAULT_MIGRATION_LOCK_TABLE);
|
|
49
57
|
}
|
|
50
58
|
const rawColumns = await query.execute();
|
|
51
59
|
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
|
}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
/// <reference types="./postgres-query-compiler.d.ts" />
|
|
2
2
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
3
|
+
const ID_WRAP_REGEX = /"/g;
|
|
3
4
|
export class PostgresQueryCompiler extends DefaultQueryCompiler {
|
|
4
|
-
|
|
5
|
-
return '
|
|
6
|
-
}
|
|
7
|
-
getLeftIdentifierWrapper() {
|
|
8
|
-
return '"';
|
|
9
|
-
}
|
|
10
|
-
getRightIdentifierWrapper() {
|
|
11
|
-
return '"';
|
|
5
|
+
sanitizeIdentifier(identifier) {
|
|
6
|
+
return identifier.replace(ID_WRAP_REGEX, '""');
|
|
12
7
|
}
|
|
13
8
|
}
|
|
@@ -16,6 +16,7 @@ export class SqliteIntrospector {
|
|
|
16
16
|
.where('type', '=', 'table')
|
|
17
17
|
.where('name', 'not like', 'sqlite_%')
|
|
18
18
|
.select('name')
|
|
19
|
+
.orderBy('name')
|
|
19
20
|
.castTo();
|
|
20
21
|
if (!options.withInternalKyselyTables) {
|
|
21
22
|
query = query
|
|
@@ -48,6 +49,7 @@ export class SqliteIntrospector {
|
|
|
48
49
|
const columns = await db
|
|
49
50
|
.selectFrom(sql `pragma_table_info(${table})`.as('table_info'))
|
|
50
51
|
.select(['name', 'type', 'notnull', 'dflt_value'])
|
|
52
|
+
.orderBy('name')
|
|
51
53
|
.execute();
|
|
52
54
|
return {
|
|
53
55
|
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
|
}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/// <reference types="./sqlite-query-compiler.d.ts" />
|
|
2
2
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
3
|
+
const ID_WRAP_REGEX = /"/g;
|
|
3
4
|
export class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
4
5
|
getCurrentParameterPlaceholder() {
|
|
5
6
|
return '?';
|
|
6
7
|
}
|
|
8
|
+
getLeftExplainOptionsWrapper() {
|
|
9
|
+
return '';
|
|
10
|
+
}
|
|
11
|
+
getRightExplainOptionsWrapper() {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
7
14
|
getLeftIdentifierWrapper() {
|
|
8
15
|
return '"';
|
|
9
16
|
}
|
|
@@ -13,4 +20,7 @@ export class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
|
13
20
|
getAutoIncrement() {
|
|
14
21
|
return 'autoincrement';
|
|
15
22
|
}
|
|
23
|
+
sanitizeIdentifier(identifier) {
|
|
24
|
+
return identifier.replace(ID_WRAP_REGEX, '""');
|
|
25
|
+
}
|
|
16
26
|
}
|
package/dist/esm/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/esm/index.js
CHANGED
|
@@ -74,6 +74,7 @@ export * from './migration/file-migration-provider.js';
|
|
|
74
74
|
export * from './plugin/kysely-plugin.js';
|
|
75
75
|
export * from './plugin/camel-case/camel-case-plugin.js';
|
|
76
76
|
export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
|
|
77
|
+
export * from './plugin/with-schema/with-schema-plugin.js';
|
|
77
78
|
export * from './operation-node/add-column-node.js';
|
|
78
79
|
export * from './operation-node/add-constraint-node.js';
|
|
79
80
|
export * from './operation-node/alias-node.js';
|
|
@@ -150,6 +151,8 @@ export * from './operation-node/value-node.js';
|
|
|
150
151
|
export * from './operation-node/values-node.js';
|
|
151
152
|
export * from './operation-node/where-node.js';
|
|
152
153
|
export * from './operation-node/with-node.js';
|
|
154
|
+
export * from './operation-node/explain-node.js';
|
|
153
155
|
export * from './util/column-type.js';
|
|
154
156
|
export * from './util/compilable.js';
|
|
157
|
+
export * from './util/explainable.js';
|
|
155
158
|
export * from './util/log.js';
|
|
@@ -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
|
}>;
|
|
@@ -29,6 +29,22 @@ export const CreateTableNode = freeze({
|
|
|
29
29
|
: freeze([constraint]),
|
|
30
30
|
});
|
|
31
31
|
},
|
|
32
|
+
cloneWithFrontModifier(createTable, modifier) {
|
|
33
|
+
return freeze({
|
|
34
|
+
...createTable,
|
|
35
|
+
frontModifiers: createTable.frontModifiers
|
|
36
|
+
? freeze([...createTable.frontModifiers, modifier])
|
|
37
|
+
: freeze([modifier]),
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
cloneWithEndModifier(createTable, modifier) {
|
|
41
|
+
return freeze({
|
|
42
|
+
...createTable,
|
|
43
|
+
endModifiers: createTable.endModifiers
|
|
44
|
+
? freeze([...createTable.endModifiers, modifier])
|
|
45
|
+
: freeze([modifier]),
|
|
46
|
+
});
|
|
47
|
+
},
|
|
32
48
|
cloneWith(createTable, params) {
|
|
33
49
|
return freeze({
|
|
34
50
|
...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
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./create-type-node.d.ts" />
|
|
2
2
|
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
4
4
|
import { ValueListNode } from './value-list-node.js';
|
|
5
5
|
import { ValueNode } from './value-node.js';
|
|
6
6
|
/**
|
|
@@ -13,7 +13,7 @@ export const CreateTypeNode = freeze({
|
|
|
13
13
|
create(name) {
|
|
14
14
|
return freeze({
|
|
15
15
|
kind: 'CreateTypeNode',
|
|
16
|
-
name:
|
|
16
|
+
name: SchemableIdentifierNode.create(name),
|
|
17
17
|
});
|
|
18
18
|
},
|
|
19
19
|
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;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./create-view-node.d.ts" />
|
|
2
2
|
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
@@ -11,7 +11,7 @@ export const CreateViewNode = freeze({
|
|
|
11
11
|
create(name) {
|
|
12
12
|
return freeze({
|
|
13
13
|
kind: 'CreateViewNode',
|
|
14
|
-
name:
|
|
14
|
+
name: SchemableIdentifierNode.create(name),
|
|
15
15
|
});
|
|
16
16
|
},
|
|
17
17
|
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
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./drop-index-node.d.ts" />
|
|
2
2
|
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
@@ -11,7 +11,7 @@ export const DropIndexNode = freeze({
|
|
|
11
11
|
create(name, params) {
|
|
12
12
|
return freeze({
|
|
13
13
|
kind: 'DropIndexNode',
|
|
14
|
-
name:
|
|
14
|
+
name: SchemableIdentifierNode.create(name),
|
|
15
15
|
...params,
|
|
16
16
|
});
|
|
17
17
|
},
|
|
@@ -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
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./drop-type-node.d.ts" />
|
|
2
2
|
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
@@ -11,7 +11,7 @@ export const DropTypeNode = freeze({
|
|
|
11
11
|
create(name) {
|
|
12
12
|
return freeze({
|
|
13
13
|
kind: 'DropTypeNode',
|
|
14
|
-
name:
|
|
14
|
+
name: SchemableIdentifierNode.create(name),
|
|
15
15
|
});
|
|
16
16
|
},
|
|
17
17
|
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
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./drop-view-node.d.ts" />
|
|
2
2
|
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
@@ -11,7 +11,7 @@ export const DropViewNode = freeze({
|
|
|
11
11
|
create(name) {
|
|
12
12
|
return freeze({
|
|
13
13
|
kind: 'DropViewNode',
|
|
14
|
-
name:
|
|
14
|
+
name: SchemableIdentifierNode.create(name),
|
|
15
15
|
});
|
|
16
16
|
},
|
|
17
17
|
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,17 @@
|
|
|
1
|
+
/// <reference types="./explain-node.d.ts" />
|
|
2
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export const ExplainNode = freeze({
|
|
7
|
+
is(node) {
|
|
8
|
+
return node.kind === 'ExplainNode';
|
|
9
|
+
},
|
|
10
|
+
create(format, options) {
|
|
11
|
+
return freeze({
|
|
12
|
+
kind: 'ExplainNode',
|
|
13
|
+
format,
|
|
14
|
+
options: options?.toOperationNode(),
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
});
|
|
@@ -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
|
}>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColumnNode } from './column-node.js';
|
|
2
|
+
import { ExplainNode } from './explain-node.js';
|
|
2
3
|
import { OnConflictNode } from './on-conflict-node.js';
|
|
3
4
|
import { OnDuplicateKeyNode } from './on-duplicate-key-node.js';
|
|
4
5
|
import { OperationNode } from './operation-node.js';
|
|
@@ -20,6 +21,7 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
20
21
|
readonly with?: WithNode;
|
|
21
22
|
readonly ignore?: boolean;
|
|
22
23
|
readonly replace?: boolean;
|
|
24
|
+
readonly explain?: ExplainNode;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* @internal
|