kysely 0.19.9 → 0.19.12
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 +56 -7
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +10 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +25 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +29 -0
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +6 -2
- package/dist/cjs/dialect/postgres/postgres-driver.js +24 -2
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +3 -0
- package/dist/cjs/driver/database-connection.d.ts +1 -0
- package/dist/cjs/driver/dummy-driver.js +3 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/create-table-node.js +2 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +17 -0
- package/dist/cjs/operation-node/create-type-node.js +27 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.d.ts +16 -0
- package/dist/cjs/operation-node/drop-type-node.js +25 -0
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +2 -2
- package/dist/cjs/operation-node/insert-query-node.d.ts +2 -1
- package/dist/cjs/operation-node/insert-query-node.js +2 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -0
- 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/references-node.d.ts +3 -1
- package/dist/cjs/operation-node/references-node.js +8 -1
- package/dist/cjs/parser/on-commit-action-parse.d.ts +2 -0
- package/dist/cjs/parser/on-commit-action-parse.js +11 -0
- package/dist/cjs/parser/on-modify-action-parser.d.ts +2 -0
- package/dist/cjs/parser/on-modify-action-parser.js +11 -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/insert-query-builder.d.ts +1 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +27 -0
- package/dist/cjs/query-builder/select-query-builder.js +34 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +35 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +3 -1
- package/dist/cjs/query-creator.d.ts +27 -0
- package/dist/cjs/query-creator.js +33 -0
- package/dist/cjs/query-executor/query-executor-base.d.ts +6 -0
- package/dist/cjs/query-executor/query-executor-base.js +19 -0
- package/dist/cjs/query-executor/query-executor.d.ts +11 -0
- package/dist/cjs/schema/column-definition-builder.js +3 -2
- package/dist/cjs/schema/create-table-builder.d.ts +6 -6
- package/dist/cjs/schema/create-table-builder.js +8 -7
- package/dist/cjs/schema/create-type-builder.d.ts +28 -0
- package/dist/cjs/schema/create-type-builder.js +38 -0
- package/dist/cjs/schema/drop-type-builder.d.ts +19 -0
- package/dist/cjs/schema/drop-type-builder.js +31 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +3 -2
- package/dist/cjs/schema/schema.d.ts +32 -0
- package/dist/cjs/schema/schema.js +46 -0
- package/dist/cjs/util/deferred.d.ts +7 -0
- package/dist/cjs/util/deferred.js +28 -0
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +10 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +25 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +29 -0
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +6 -2
- package/dist/esm/dialect/postgres/postgres-driver.js +24 -2
- package/dist/esm/dialect/sqlite/sqlite-driver.js +3 -0
- package/dist/esm/driver/database-connection.d.ts +1 -0
- package/dist/esm/driver/dummy-driver.js +3 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/operation-node/create-table-node.d.ts +3 -1
- package/dist/esm/operation-node/create-table-node.js +1 -0
- package/dist/esm/operation-node/create-type-node.d.ts +17 -0
- package/dist/esm/operation-node/create-type-node.js +25 -0
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.d.ts +16 -0
- package/dist/esm/operation-node/drop-type-node.js +23 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +2 -2
- package/dist/esm/operation-node/insert-query-node.d.ts +2 -1
- package/dist/esm/operation-node/insert-query-node.js +2 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -0
- package/dist/esm/operation-node/operation-node-transformer.js +17 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -0
- 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/references-node.d.ts +3 -1
- package/dist/esm/operation-node/references-node.js +7 -0
- package/dist/esm/parser/on-commit-action-parse.d.ts +2 -0
- package/dist/esm/parser/on-commit-action-parse.js +8 -0
- package/dist/esm/parser/on-modify-action-parser.d.ts +2 -0
- package/dist/esm/parser/on-modify-action-parser.js +8 -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/insert-query-builder.d.ts +1 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +27 -0
- package/dist/esm/query-builder/select-query-builder.js +34 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -0
- package/dist/esm/query-compiler/default-query-compiler.js +35 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +3 -1
- package/dist/esm/query-creator.d.ts +27 -0
- package/dist/esm/query-creator.js +33 -0
- package/dist/esm/query-executor/query-executor-base.d.ts +6 -0
- package/dist/esm/query-executor/query-executor-base.js +19 -0
- package/dist/esm/query-executor/query-executor.d.ts +11 -0
- package/dist/esm/schema/column-definition-builder.js +3 -2
- package/dist/esm/schema/create-table-builder.d.ts +6 -6
- package/dist/esm/schema/create-table-builder.js +8 -7
- package/dist/esm/schema/create-type-builder.d.ts +28 -0
- package/dist/esm/schema/create-type-builder.js +35 -0
- package/dist/esm/schema/drop-type-builder.d.ts +19 -0
- package/dist/esm/schema/drop-type-builder.js +28 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +3 -2
- package/dist/esm/schema/schema.d.ts +32 -0
- package/dist/esm/schema/schema.js +46 -0
- package/dist/esm/util/deferred.d.ts +7 -0
- package/dist/esm/util/deferred.js +25 -0
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Kysely makes sure you only refer to tables and columns that are visible to the p
|
|
|
15
15
|
you're writing. The result type only has the selected columns with correct types and aliases. As an
|
|
16
16
|
added bonus you get autocompletion for all that stuff.
|
|
17
17
|
|
|
18
|
-
As
|
|
18
|
+
As shown in the gif above, through the pure magic of modern typescript, Kysely is even able to parse
|
|
19
19
|
the alias given to `pet.name` and add the `pet_name` column to the result row type. Kysely is able to infer
|
|
20
20
|
column names, aliases and types from selected subqueries, joined subqueries, `with` statements and pretty
|
|
21
21
|
much anything you can think of.
|
|
@@ -32,15 +32,21 @@ You can find a more thorough introduction [here](https://www.jakso.me/blog/kysel
|
|
|
32
32
|
# Table of contents
|
|
33
33
|
|
|
34
34
|
- [Installation](#installation)
|
|
35
|
+
- [3rd party dialects](#3rd-party-dialects)
|
|
35
36
|
- [Minimal example](#minimal-example)
|
|
36
37
|
- [Generating types](#generating-types)
|
|
37
38
|
- [Query examples](#query-examples)
|
|
38
|
-
- [
|
|
39
|
+
- [Select queries](#select-queries)
|
|
40
|
+
- [Stream select query results](#stream-select-query-results)
|
|
41
|
+
- [Update queries](#update-queries)
|
|
42
|
+
- [Insert queries](#insert-queries)
|
|
43
|
+
- [Delete queries](#delete-queries)
|
|
39
44
|
- [Migrations](#migrations)
|
|
45
|
+
- [PostgreSQL migration example](#postgresql-migration-example)
|
|
46
|
+
- [MySQL migration example](#mysql-migration-example)
|
|
40
47
|
- [Deno](#deno)
|
|
41
48
|
- [Browser](#browser)
|
|
42
|
-
- [
|
|
43
|
-
- [Changelog](https://github.com/koskimas/kysely/releases)
|
|
49
|
+
- [Why not just contribute to knex](#why-not-just-contribute-to-knex)
|
|
44
50
|
|
|
45
51
|
# Installation
|
|
46
52
|
|
|
@@ -180,6 +186,48 @@ You can find examples of select queries in the documentation of the
|
|
|
180
186
|
the [where method](https://koskimas.github.io/kysely/classes/SelectQueryBuilder.html#where)
|
|
181
187
|
among other places.
|
|
182
188
|
|
|
189
|
+
### Stream select query results
|
|
190
|
+
|
|
191
|
+
*Currently only supported by `postgres` and `mysql` dialects.*
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
import { Pool } from 'pg'
|
|
195
|
+
// or `import * as Cursor from 'pg-cursor'` depending on your tsconfig
|
|
196
|
+
import Cursor from 'pg-cursor'
|
|
197
|
+
import {
|
|
198
|
+
Kysely,
|
|
199
|
+
PostgresDialect,
|
|
200
|
+
} from 'kysely'
|
|
201
|
+
|
|
202
|
+
const db = new Kysely<Database>({
|
|
203
|
+
// PostgresDialect requires the Cursor dependency
|
|
204
|
+
dialect: new PostgresDialect({
|
|
205
|
+
pool: new Pool({
|
|
206
|
+
host: 'localhost',
|
|
207
|
+
database: 'kysely_test'
|
|
208
|
+
}),
|
|
209
|
+
cursor: Cursor
|
|
210
|
+
}),
|
|
211
|
+
|
|
212
|
+
// MysqlDialect doesn't require any special configuration
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
async function demo() {
|
|
216
|
+
for await (const male of db.selectFrom("person")
|
|
217
|
+
.selectAll()
|
|
218
|
+
.where("person.gender", "=", "male")
|
|
219
|
+
.stream()) {
|
|
220
|
+
console.log(`Hello mr. ${male.first_name}!`)
|
|
221
|
+
|
|
222
|
+
if (male.first_name === "John") {
|
|
223
|
+
// After this line the db connection is released and no more
|
|
224
|
+
// rows are streamed from the database to the client
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
183
231
|
## Update queries
|
|
184
232
|
|
|
185
233
|
See the [set method](https://koskimas.github.io/kysely/classes/UpdateQueryBuilder.html#set) and the
|
|
@@ -213,10 +261,11 @@ export async function down(db: Kysely<any>): Promise<void> {
|
|
|
213
261
|
}
|
|
214
262
|
```
|
|
215
263
|
|
|
216
|
-
The `up` function is called when you update your database schema to next version and `down`
|
|
264
|
+
The `up` function is called when you update your database schema to the next version and `down`
|
|
217
265
|
when you go back to previous version. The only argument for the functions is an instance of
|
|
218
|
-
`Kysely<any>`. It's important to use `Kysely<any>` and not `Kysely<YourDatabase>`.
|
|
219
|
-
|
|
266
|
+
`Kysely<any>`. It's important to use `Kysely<any>` and not `Kysely<YourDatabase>`.
|
|
267
|
+
|
|
268
|
+
Migrations should never depend on the current code of your app because they need to work even when the app
|
|
220
269
|
changes. Migrations need to be "frozen in time".
|
|
221
270
|
|
|
222
271
|
The migrations can use the [Kysely.schema](https://koskimas.github.io/kysely/classes/SchemaModule.html)
|
|
@@ -31,9 +31,19 @@ export interface MysqlPool {
|
|
|
31
31
|
end(callback: (error: unknown) => void): void;
|
|
32
32
|
}
|
|
33
33
|
export interface MysqlPoolConnection {
|
|
34
|
+
query(sql: string, parameters: ReadonlyArray<unknown>): {
|
|
35
|
+
stream: <T>(options: MysqlStreamOptions) => MysqlStream<T>;
|
|
36
|
+
};
|
|
34
37
|
query(sql: string, parameters: ReadonlyArray<unknown>, callback: (error: unknown, result: MysqlQueryResult) => void): void;
|
|
35
38
|
release(): void;
|
|
36
39
|
}
|
|
40
|
+
export interface MysqlStreamOptions {
|
|
41
|
+
highWaterMark?: number;
|
|
42
|
+
objectMode?: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface MysqlStream<T> {
|
|
45
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
|
|
46
|
+
}
|
|
37
47
|
export interface MysqlOkPacket {
|
|
38
48
|
affectedRows: number;
|
|
39
49
|
insertId: number;
|
|
@@ -42,6 +42,7 @@ declare class MysqlConnection implements DatabaseConnection {
|
|
|
42
42
|
#private;
|
|
43
43
|
constructor(rawConnection: MysqlPoolConnection);
|
|
44
44
|
executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>>;
|
|
45
|
+
streamQuery<O>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
|
|
45
46
|
[PRIVATE_RELEASE_METHOD](): void;
|
|
46
47
|
}
|
|
47
48
|
export {};
|
|
@@ -124,6 +124,31 @@ class MysqlConnection {
|
|
|
124
124
|
});
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
+
async *streamQuery(compiledQuery, chunkSize) {
|
|
128
|
+
const stream = this.#rawConnection
|
|
129
|
+
.query(compiledQuery.sql, compiledQuery.parameters)
|
|
130
|
+
.stream({
|
|
131
|
+
objectMode: true,
|
|
132
|
+
});
|
|
133
|
+
try {
|
|
134
|
+
for await (const row of stream) {
|
|
135
|
+
yield {
|
|
136
|
+
rows: [row],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (ex) {
|
|
141
|
+
if (ex &&
|
|
142
|
+
typeof ex === 'object' &&
|
|
143
|
+
'code' in ex &&
|
|
144
|
+
// @ts-ignore
|
|
145
|
+
ex.code === 'ERR_STREAM_PREMATURE_CLOSE') {
|
|
146
|
+
// Most likely because of https://github.com/mysqljs/mysql/blob/master/lib/protocol/sequences/Query.js#L220
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
throw ex;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
127
152
|
[PRIVATE_RELEASE_METHOD]() {
|
|
128
153
|
this.#rawConnection.release();
|
|
129
154
|
}
|
|
@@ -1,4 +1,14 @@
|
|
|
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
|
+
};
|
|
2
12
|
/**
|
|
3
13
|
* Config for the PostgreSQL dialect.
|
|
4
14
|
*/
|
|
@@ -11,6 +21,19 @@ export interface PostgresDialectConfig {
|
|
|
11
21
|
* https://node-postgres.com/api/pool
|
|
12
22
|
*/
|
|
13
23
|
pool: PostgresPool | (() => Promise<PostgresPool>);
|
|
24
|
+
/**
|
|
25
|
+
* https://github.com/brianc/node-postgres/tree/master/packages/pg-cursor
|
|
26
|
+
* ```ts
|
|
27
|
+
* import Cursor from 'pg-cursor'
|
|
28
|
+
* // or
|
|
29
|
+
* import * as Cursor from 'pg-cursor'
|
|
30
|
+
*
|
|
31
|
+
* new PostgresDialect({
|
|
32
|
+
* cursor: Cursor
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
cursor?: PostgresCursorConstructor;
|
|
14
37
|
/**
|
|
15
38
|
* Called once for each created connection.
|
|
16
39
|
*/
|
|
@@ -30,6 +53,7 @@ export interface PostgresPool {
|
|
|
30
53
|
}
|
|
31
54
|
export interface PostgresPoolClient {
|
|
32
55
|
query<R>(sql: string, parameters: ReadonlyArray<unknown>): Promise<PostgresQueryResult<R>>;
|
|
56
|
+
query<R>(cursor: PostgresCursor<R>): PostgresCursor<R>;
|
|
33
57
|
release(): void;
|
|
34
58
|
}
|
|
35
59
|
export interface PostgresQueryResult<R> {
|
|
@@ -37,3 +61,8 @@ export interface PostgresQueryResult<R> {
|
|
|
37
61
|
rowCount: number;
|
|
38
62
|
rows: R[];
|
|
39
63
|
}
|
|
64
|
+
export interface PostgresStreamOptions {
|
|
65
|
+
}
|
|
66
|
+
export interface PostgresStream<T> {
|
|
67
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
|
|
68
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DatabaseConnection, QueryResult } from '../../driver/database-connection.js';
|
|
2
2
|
import { Driver, TransactionSettings } from '../../driver/driver.js';
|
|
3
3
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
4
|
-
import { PostgresDialectConfig, PostgresPoolClient } from './postgres-dialect-config.js';
|
|
4
|
+
import { PostgresCursorConstructor, PostgresDialectConfig, PostgresPoolClient } from './postgres-dialect-config.js';
|
|
5
5
|
declare const PRIVATE_RELEASE_METHOD: unique symbol;
|
|
6
6
|
export declare class PostgresDriver implements Driver {
|
|
7
7
|
#private;
|
|
@@ -38,10 +38,14 @@ export declare class PostgresDriver implements Driver {
|
|
|
38
38
|
*/
|
|
39
39
|
destroy(): Promise<void>;
|
|
40
40
|
}
|
|
41
|
+
interface PostgresConnectionOptions {
|
|
42
|
+
cursor: PostgresCursorConstructor | null;
|
|
43
|
+
}
|
|
41
44
|
declare class PostgresConnection implements DatabaseConnection {
|
|
42
45
|
#private;
|
|
43
|
-
constructor(client: PostgresPoolClient);
|
|
46
|
+
constructor(client: PostgresPoolClient, options: PostgresConnectionOptions);
|
|
44
47
|
executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>>;
|
|
48
|
+
streamQuery<O>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
|
|
45
49
|
[PRIVATE_RELEASE_METHOD](): void;
|
|
46
50
|
}
|
|
47
51
|
export {};
|
|
@@ -21,7 +21,9 @@ class PostgresDriver {
|
|
|
21
21
|
const client = await this.#pool.connect();
|
|
22
22
|
let connection = this.#connections.get(client);
|
|
23
23
|
if (!connection) {
|
|
24
|
-
connection = new PostgresConnection(client
|
|
24
|
+
connection = new PostgresConnection(client, {
|
|
25
|
+
cursor: this.#config.cursor ?? null,
|
|
26
|
+
});
|
|
25
27
|
this.#connections.set(client, connection);
|
|
26
28
|
// The driver must take care of calling `onCreateConnection` when a new
|
|
27
29
|
// connection is created. The `pg` module doesn't provide an async hook
|
|
@@ -60,8 +62,10 @@ class PostgresDriver {
|
|
|
60
62
|
exports.PostgresDriver = PostgresDriver;
|
|
61
63
|
class PostgresConnection {
|
|
62
64
|
#client;
|
|
63
|
-
|
|
65
|
+
#options;
|
|
66
|
+
constructor(client, options) {
|
|
64
67
|
this.#client = client;
|
|
68
|
+
this.#options = options;
|
|
65
69
|
}
|
|
66
70
|
async executeQuery(compiledQuery) {
|
|
67
71
|
try {
|
|
@@ -82,6 +86,24 @@ class PostgresConnection {
|
|
|
82
86
|
throw (0, stack_trace_utils_js_1.extendStackTrace)(err, new Error());
|
|
83
87
|
}
|
|
84
88
|
}
|
|
89
|
+
async *streamQuery(compiledQuery, chunkSize) {
|
|
90
|
+
if (!this.#options.cursor) {
|
|
91
|
+
throw new Error("'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.");
|
|
92
|
+
}
|
|
93
|
+
const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters));
|
|
94
|
+
while (true) {
|
|
95
|
+
if (cursor.state === 'done') {
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
if (cursor.state === 'error') {
|
|
99
|
+
throw cursor._error;
|
|
100
|
+
}
|
|
101
|
+
const rows = await cursor.read(chunkSize);
|
|
102
|
+
yield {
|
|
103
|
+
rows,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
85
107
|
[PRIVATE_RELEASE_METHOD]() {
|
|
86
108
|
this.#client.release();
|
|
87
109
|
}
|
|
@@ -6,6 +6,7 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export interface DatabaseConnection {
|
|
8
8
|
executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
|
|
9
|
+
streamQuery<R>(compiledQuery: CompiledQuery, chunkSize?: number): AsyncIterableIterator<QueryResult<R>>;
|
|
9
10
|
}
|
|
10
11
|
export interface QueryResult<O> {
|
|
11
12
|
/**
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -25,7 +25,9 @@ export * from './query-compiler/default-query-compiler.js';
|
|
|
25
25
|
export * from './query-compiler/compiled-query.js';
|
|
26
26
|
export * from './schema/schema.js';
|
|
27
27
|
export * from './schema/create-table-builder.js';
|
|
28
|
+
export * from './schema/create-type-builder.js';
|
|
28
29
|
export * from './schema/drop-table-builder.js';
|
|
30
|
+
export * from './schema/drop-type-builder.js';
|
|
29
31
|
export * from './schema/create-index-builder.js';
|
|
30
32
|
export * from './schema/drop-index-builder.js';
|
|
31
33
|
export * from './schema/create-schema-builder.js';
|
|
@@ -87,6 +89,7 @@ export * from './operation-node/constraint-node.js';
|
|
|
87
89
|
export * from './operation-node/create-index-node.js';
|
|
88
90
|
export * from './operation-node/create-schema-node.js';
|
|
89
91
|
export * from './operation-node/create-table-node.js';
|
|
92
|
+
export * from './operation-node/create-type-node.js';
|
|
90
93
|
export * from './operation-node/create-view-node.js';
|
|
91
94
|
export * from './operation-node/data-type-node.js';
|
|
92
95
|
export * from './operation-node/default-value-node.js';
|
|
@@ -96,6 +99,7 @@ export * from './operation-node/drop-constraint-node.js';
|
|
|
96
99
|
export * from './operation-node/drop-index-node.js';
|
|
97
100
|
export * from './operation-node/drop-schema-node.js';
|
|
98
101
|
export * from './operation-node/drop-table-node.js';
|
|
102
|
+
export * from './operation-node/drop-type-node.js';
|
|
99
103
|
export * from './operation-node/drop-view-node.js';
|
|
100
104
|
export * from './operation-node/filter-node.js';
|
|
101
105
|
export * from './operation-node/foreign-key-constraint-node.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -41,7 +41,9 @@ __exportStar(require("./query-compiler/default-query-compiler.js"), exports);
|
|
|
41
41
|
__exportStar(require("./query-compiler/compiled-query.js"), exports);
|
|
42
42
|
__exportStar(require("./schema/schema.js"), exports);
|
|
43
43
|
__exportStar(require("./schema/create-table-builder.js"), exports);
|
|
44
|
+
__exportStar(require("./schema/create-type-builder.js"), exports);
|
|
44
45
|
__exportStar(require("./schema/drop-table-builder.js"), exports);
|
|
46
|
+
__exportStar(require("./schema/drop-type-builder.js"), exports);
|
|
45
47
|
__exportStar(require("./schema/create-index-builder.js"), exports);
|
|
46
48
|
__exportStar(require("./schema/drop-index-builder.js"), exports);
|
|
47
49
|
__exportStar(require("./schema/create-schema-builder.js"), exports);
|
|
@@ -103,6 +105,7 @@ __exportStar(require("./operation-node/constraint-node.js"), exports);
|
|
|
103
105
|
__exportStar(require("./operation-node/create-index-node.js"), exports);
|
|
104
106
|
__exportStar(require("./operation-node/create-schema-node.js"), exports);
|
|
105
107
|
__exportStar(require("./operation-node/create-table-node.js"), exports);
|
|
108
|
+
__exportStar(require("./operation-node/create-type-node.js"), exports);
|
|
106
109
|
__exportStar(require("./operation-node/create-view-node.js"), exports);
|
|
107
110
|
__exportStar(require("./operation-node/data-type-node.js"), exports);
|
|
108
111
|
__exportStar(require("./operation-node/default-value-node.js"), exports);
|
|
@@ -112,6 +115,7 @@ __exportStar(require("./operation-node/drop-constraint-node.js"), exports);
|
|
|
112
115
|
__exportStar(require("./operation-node/drop-index-node.js"), exports);
|
|
113
116
|
__exportStar(require("./operation-node/drop-schema-node.js"), exports);
|
|
114
117
|
__exportStar(require("./operation-node/drop-table-node.js"), exports);
|
|
118
|
+
__exportStar(require("./operation-node/drop-type-node.js"), exports);
|
|
115
119
|
__exportStar(require("./operation-node/drop-view-node.js"), exports);
|
|
116
120
|
__exportStar(require("./operation-node/filter-node.js"), exports);
|
|
117
121
|
__exportStar(require("./operation-node/foreign-key-constraint-node.js"), exports);
|
|
@@ -2,7 +2,9 @@ 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
|
-
|
|
5
|
+
import { ArrayItemType } from '../util/type-utils.js';
|
|
6
|
+
export declare const ON_COMMIT_ACTIONS: string[];
|
|
7
|
+
export declare type OnCommitAction = ArrayItemType<typeof ON_COMMIT_ACTIONS>;
|
|
6
8
|
export declare type CreateTableNodeParams = Omit<CreateTableNode, 'kind' | 'table' | 'columns' | 'constraints'>;
|
|
7
9
|
export interface CreateTableNode extends OperationNode {
|
|
8
10
|
readonly kind: 'CreateTableNode';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreateTableNode = void 0;
|
|
3
|
+
exports.CreateTableNode = exports.ON_COMMIT_ACTIONS = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
exports.ON_COMMIT_ACTIONS = ['preserve rows', 'delete rows', 'drop'];
|
|
5
6
|
/**
|
|
6
7
|
* @internal
|
|
7
8
|
*/
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IdentifierNode } from './identifier-node.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
import { ValueListNode } from './value-list-node.js';
|
|
4
|
+
export declare type CreateTypeNodeParams = Omit<Partial<CreateTypeNode>, 'kind'>;
|
|
5
|
+
export interface CreateTypeNode extends OperationNode {
|
|
6
|
+
readonly kind: 'CreateTypeNode';
|
|
7
|
+
readonly name: IdentifierNode;
|
|
8
|
+
readonly enum?: ValueListNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare const CreateTypeNode: Readonly<{
|
|
14
|
+
is(node: OperationNode): node is CreateTypeNode;
|
|
15
|
+
create(name: string): CreateTypeNode;
|
|
16
|
+
cloneWithEnum(createType: CreateTypeNode, values: string[]): CreateTypeNode;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateTypeNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const identifier_node_js_1 = require("./identifier-node.js");
|
|
6
|
+
const value_list_node_js_1 = require("./value-list-node.js");
|
|
7
|
+
const value_node_js_1 = require("./value-node.js");
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
exports.CreateTypeNode = (0, object_utils_js_1.freeze)({
|
|
12
|
+
is(node) {
|
|
13
|
+
return node.kind === 'CreateTypeNode';
|
|
14
|
+
},
|
|
15
|
+
create(name) {
|
|
16
|
+
return (0, object_utils_js_1.freeze)({
|
|
17
|
+
kind: 'CreateTypeNode',
|
|
18
|
+
name: identifier_node_js_1.IdentifierNode.create(name),
|
|
19
|
+
});
|
|
20
|
+
},
|
|
21
|
+
cloneWithEnum(createType, values) {
|
|
22
|
+
return (0, object_utils_js_1.freeze)({
|
|
23
|
+
...createType,
|
|
24
|
+
enum: value_list_node_js_1.ValueListNode.create(values.map((value) => value_node_js_1.ValueNode.createImmediate(value))),
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
|
-
export declare type ColumnDataType = 'varchar' | `varchar(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | 'date' | 'datetime' | 'time' | 'timetz' | 'timestamp' | 'timestamptz' | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
|
|
2
|
+
export declare type ColumnDataType = 'varchar' | `varchar(${number})` | 'text' | 'integer' | 'int2' | 'int4' | 'int8' | 'bigint' | 'boolean' | 'real' | 'double precision' | 'float4' | 'float8' | 'decimal' | `decimal(${number}, ${number})` | 'numeric' | `numeric(${number}, ${number})` | 'binary' | 'date' | 'datetime' | `datetime(${number})` | 'time' | `time(${number})` | 'timetz' | `timetz(${number})` | 'timestamp' | `timestamp(${number})` | 'timestamptz' | `timestamptz(${number})` | 'serial' | 'bigserial' | 'uuid' | 'json' | 'jsonb' | 'blob';
|
|
3
3
|
export declare type DataTypeParams = Omit<DataTypeNode, 'kind' | 'dataType'>;
|
|
4
4
|
export interface DataTypeNode extends OperationNode {
|
|
5
5
|
readonly kind: 'DataTypeNode';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IdentifierNode } from './identifier-node.js';
|
|
2
|
+
import { OperationNode } from './operation-node.js';
|
|
3
|
+
export declare type DropTypeNodeParams = Omit<Partial<DropTypeNode>, 'kind' | 'name'>;
|
|
4
|
+
export interface DropTypeNode extends OperationNode {
|
|
5
|
+
readonly kind: 'DropTypeNode';
|
|
6
|
+
readonly name: IdentifierNode;
|
|
7
|
+
readonly ifExists?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export declare const DropTypeNode: Readonly<{
|
|
13
|
+
is(node: OperationNode): node is DropTypeNode;
|
|
14
|
+
create(name: string): DropTypeNode;
|
|
15
|
+
cloneWith(dropType: DropTypeNode, params: DropTypeNodeParams): DropTypeNode;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DropTypeNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const identifier_node_js_1 = require("./identifier-node.js");
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
exports.DropTypeNode = (0, object_utils_js_1.freeze)({
|
|
10
|
+
is(node) {
|
|
11
|
+
return node.kind === 'DropTypeNode';
|
|
12
|
+
},
|
|
13
|
+
create(name) {
|
|
14
|
+
return (0, object_utils_js_1.freeze)({
|
|
15
|
+
kind: 'DropTypeNode',
|
|
16
|
+
name: identifier_node_js_1.IdentifierNode.create(name),
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
cloneWith(dropType, params) {
|
|
20
|
+
return (0, object_utils_js_1.freeze)({
|
|
21
|
+
...dropType,
|
|
22
|
+
...params,
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
});
|
|
@@ -20,8 +20,8 @@ export declare const ForeignKeyConstraintNode: Readonly<{
|
|
|
20
20
|
create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
|
|
21
21
|
cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
|
|
22
22
|
name?: IdentifierNode | undefined;
|
|
23
|
-
onDelete?:
|
|
24
|
-
onUpdate?:
|
|
23
|
+
onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
|
|
24
|
+
onUpdate?: "no action" | "restrict" | "cascade" | "set null" | "set default" | undefined;
|
|
25
25
|
kind: 'ForeignKeyConstraintNode';
|
|
26
26
|
columns: ReadonlyArray<ColumnNode>;
|
|
27
27
|
references: ReferencesNode;
|
|
@@ -19,12 +19,13 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
19
19
|
readonly onDuplicateKey?: OnDuplicateKeyNode;
|
|
20
20
|
readonly with?: WithNode;
|
|
21
21
|
readonly ignore?: boolean;
|
|
22
|
+
readonly replace?: boolean;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* @internal
|
|
25
26
|
*/
|
|
26
27
|
export declare const InsertQueryNode: Readonly<{
|
|
27
28
|
is(node: OperationNode): node is InsertQueryNode;
|
|
28
|
-
create(into: TableNode, withNode?: WithNode): InsertQueryNode;
|
|
29
|
+
create(into: TableNode, withNode?: WithNode, replace?: boolean): InsertQueryNode;
|
|
29
30
|
cloneWith(insertQuery: InsertQueryNode, props: InsertQueryNodeProps): InsertQueryNode;
|
|
30
31
|
}>;
|
|
@@ -9,11 +9,12 @@ exports.InsertQueryNode = (0, object_utils_js_1.freeze)({
|
|
|
9
9
|
is(node) {
|
|
10
10
|
return node.kind === 'InsertQueryNode';
|
|
11
11
|
},
|
|
12
|
-
create(into, withNode) {
|
|
12
|
+
create(into, withNode, replace) {
|
|
13
13
|
return (0, object_utils_js_1.freeze)({
|
|
14
14
|
kind: 'InsertQueryNode',
|
|
15
15
|
into,
|
|
16
16
|
...(withNode && { with: withNode }),
|
|
17
|
+
replace,
|
|
17
18
|
});
|
|
18
19
|
},
|
|
19
20
|
cloneWith(insertQuery, props) {
|
|
@@ -66,6 +66,8 @@ import { DefaultValueNode } from './default-value-node.js';
|
|
|
66
66
|
import { OnNode } from './on-node.js';
|
|
67
67
|
import { ValuesNode } from './values-node.js';
|
|
68
68
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
69
|
+
import { CreateTypeNode } from './create-type-node.js';
|
|
70
|
+
import { DropTypeNode } from './drop-type-node.js';
|
|
69
71
|
/**
|
|
70
72
|
* Transforms an operation node tree into another one.
|
|
71
73
|
*
|
|
@@ -162,6 +164,8 @@ export declare class OperationNodeTransformer {
|
|
|
162
164
|
protected transformDefaultValue(node: DefaultValueNode): DefaultValueNode;
|
|
163
165
|
protected transformOn(node: OnNode): OnNode;
|
|
164
166
|
protected transformSelectModifier(node: SelectModifierNode): SelectModifierNode;
|
|
167
|
+
protected transformCreateType(node: CreateTypeNode): CreateTypeNode;
|
|
168
|
+
protected transformDropType(node: DropTypeNode): DropTypeNode;
|
|
165
169
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|
166
170
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|
167
171
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|
@@ -102,6 +102,8 @@ class OperationNodeTransformer {
|
|
|
102
102
|
OnNode: this.transformOn.bind(this),
|
|
103
103
|
ValuesNode: this.transformValues.bind(this),
|
|
104
104
|
SelectModifierNode: this.transformSelectModifier.bind(this),
|
|
105
|
+
CreateTypeNode: this.transformCreateType.bind(this),
|
|
106
|
+
DropTypeNode: this.transformDropType.bind(this),
|
|
105
107
|
});
|
|
106
108
|
transformNode = (node) => {
|
|
107
109
|
if (!node) {
|
|
@@ -242,6 +244,7 @@ class OperationNodeTransformer {
|
|
|
242
244
|
onDuplicateKey: this.transformNode(node.onDuplicateKey),
|
|
243
245
|
with: this.transformNode(node.with),
|
|
244
246
|
ignore: node.ignore,
|
|
247
|
+
replace: node.replace,
|
|
245
248
|
});
|
|
246
249
|
}
|
|
247
250
|
transformValues(node) {
|
|
@@ -603,6 +606,20 @@ class OperationNodeTransformer {
|
|
|
603
606
|
rawModifier: this.transformNode(node.rawModifier),
|
|
604
607
|
});
|
|
605
608
|
}
|
|
609
|
+
transformCreateType(node) {
|
|
610
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
611
|
+
kind: 'CreateTypeNode',
|
|
612
|
+
name: this.transformNode(node.name),
|
|
613
|
+
enum: this.transformNode(node.enum),
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
transformDropType(node) {
|
|
617
|
+
return (0, require_all_props_js_1.requireAllProps)({
|
|
618
|
+
kind: 'DropTypeNode',
|
|
619
|
+
name: this.transformNode(node.name),
|
|
620
|
+
ifExists: node.ifExists,
|
|
621
|
+
});
|
|
622
|
+
}
|
|
606
623
|
transformDataType(node) {
|
|
607
624
|
// An Object.freezed leaf node. No need to clone.
|
|
608
625
|
return node;
|
|
@@ -66,6 +66,8 @@ import { DefaultValueNode } from './default-value-node.js';
|
|
|
66
66
|
import { OnNode } from './on-node.js';
|
|
67
67
|
import { ValuesNode } from './values-node.js';
|
|
68
68
|
import { SelectModifierNode } from './select-modifier-node.js';
|
|
69
|
+
import { CreateTypeNode } from './create-type-node.js';
|
|
70
|
+
import { DropTypeNode } from './drop-type-node.js';
|
|
69
71
|
export declare abstract class OperationNodeVisitor {
|
|
70
72
|
#private;
|
|
71
73
|
protected readonly nodeStack: OperationNode[];
|
|
@@ -138,4 +140,6 @@ export declare abstract class OperationNodeVisitor {
|
|
|
138
140
|
protected abstract visitOn(node: OnNode): void;
|
|
139
141
|
protected abstract visitValues(node: ValuesNode): void;
|
|
140
142
|
protected abstract visitSelectModifier(node: SelectModifierNode): void;
|
|
143
|
+
protected abstract visitCreateType(node: CreateTypeNode): void;
|
|
144
|
+
protected abstract visitDropType(node: DropTypeNode): void;
|
|
141
145
|
}
|
|
@@ -75,6 +75,8 @@ class OperationNodeVisitor {
|
|
|
75
75
|
OnNode: this.visitOn.bind(this),
|
|
76
76
|
ValuesNode: this.visitValues.bind(this),
|
|
77
77
|
SelectModifierNode: this.visitSelectModifier.bind(this),
|
|
78
|
+
CreateTypeNode: this.visitCreateType.bind(this),
|
|
79
|
+
DropTypeNode: this.visitDropType.bind(this),
|
|
78
80
|
});
|
|
79
81
|
visitNode = (node) => {
|
|
80
82
|
this.nodeStack.push(node);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode';
|
|
1
|
+
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { OperationNode } from './operation-node.js';
|
|
2
2
|
import { ColumnNode } from './column-node.js';
|
|
3
3
|
import { TableNode } from './table-node.js';
|
|
4
|
-
|
|
4
|
+
import { ArrayItemType } from '../util/type-utils.js';
|
|
5
|
+
export declare const ON_MODIFY_FOREIGN_ACTIONS: readonly ["no action", "restrict", "cascade", "set null", "set default"];
|
|
6
|
+
export declare type OnModifyForeignAction = ArrayItemType<typeof ON_MODIFY_FOREIGN_ACTIONS>;
|
|
5
7
|
export interface ReferencesNode extends OperationNode {
|
|
6
8
|
readonly kind: 'ReferencesNode';
|
|
7
9
|
readonly table: TableNode;
|