mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-23 15:09:33 +01:00
6375 lines
302 KiB
Diff
6375 lines
302 KiB
Diff
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.d.ts b/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.d.ts
|
|||
|
|
index dc87916..e3fb628 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.d.ts
|
|||
|
|
@@ -7,6 +7,14 @@ import { DialectAdapter, MigrationLockOptions } from './dialect-adapter.js';
|
|||
|
|
* they are added and there will be less breaking changes.
|
|||
|
|
*/
|
|||
|
|
export declare abstract class DialectAdapterBase implements DialectAdapter {
|
|||
|
|
+ /**
|
|||
|
|
+ * Whether or not this dialect supports `if not exists` in creation of tables/schemas/views/etc.
|
|||
|
|
+ *
|
|||
|
|
+ * If this is false, Kysely's internal migrations tables and schemas are created
|
|||
|
|
+ * without `if not exists` in migrations. This is not a problem if the dialect
|
|||
|
|
+ * supports transactional DDL.
|
|||
|
|
+ */
|
|||
|
|
+ get supportsCreateIfNotExists(): boolean;
|
|||
|
|
/**
|
|||
|
|
* Whether or not this dialect supports transactional DDL.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.js b/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.js
|
|||
|
|
index a8a950f..53c47b0 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/dialect-adapter-base.js
|
|||
|
|
@@ -8,6 +8,9 @@ exports.DialectAdapterBase = void 0;
|
|||
|
|
* they are added and there will be less breaking changes.
|
|||
|
|
*/
|
|||
|
|
class DialectAdapterBase {
|
|||
|
|
+ get supportsCreateIfNotExists() {
|
|||
|
|
+ return true;
|
|||
|
|
+ }
|
|||
|
|
get supportsTransactionalDdl() {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/dialect-adapter.d.ts b/node_modules/kysely/dist/cjs/dialect/dialect-adapter.d.ts
|
|||
|
|
index 73a925a..fe7f1b3 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/dialect-adapter.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/dialect-adapter.d.ts
|
|||
|
|
@@ -8,6 +8,14 @@ import { Kysely } from '../kysely.js';
|
|||
|
|
* it. For that there's a `supportsTransactionalDdl` boolean in this interface.
|
|||
|
|
*/
|
|||
|
|
export interface DialectAdapter {
|
|||
|
|
+ /**
|
|||
|
|
+ * Whether or not this dialect supports `if not exists` in creation of tables/schemas/views/etc.
|
|||
|
|
+ *
|
|||
|
|
+ * If this is false, Kysely's internal migrations tables and schemas are created
|
|||
|
|
+ * without `if not exists` in migrations. This is not a problem if the dialect
|
|||
|
|
+ * supports transactional DDL.
|
|||
|
|
+ */
|
|||
|
|
+ readonly supportsCreateIfNotExists: boolean;
|
|||
|
|
/**
|
|||
|
|
* Whether or not this dialect supports transactional DDL.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/postgres/postgres-driver.js b/node_modules/kysely/dist/cjs/dialect/postgres/postgres-driver.js
|
|||
|
|
index 4f205f4..a67ea6f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/postgres/postgres-driver.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/postgres/postgres-driver.js
|
|||
|
|
@@ -28,7 +28,7 @@ class PostgresDriver {
|
|||
|
|
// The driver must take care of calling `onCreateConnection` when a new
|
|||
|
|
// connection is created. The `pg` module doesn't provide an async hook
|
|||
|
|
// for the connection creation. We need to call the method explicitly.
|
|||
|
|
- if (this.#config?.onCreateConnection) {
|
|||
|
|
+ if (this.#config.onCreateConnection) {
|
|||
|
|
await this.#config.onCreateConnection(connection);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts
|
|||
|
|
index 69a0a7d..550df53 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts
|
|||
|
|
@@ -1,7 +1,7 @@
|
|||
|
|
import { Kysely } from '../../kysely.js';
|
|||
|
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|||
|
|
import { MigrationLockOptions } from '../dialect-adapter.js';
|
|||
|
|
-export declare class SqliteAdapter implements DialectAdapterBase {
|
|||
|
|
+export declare class SqliteAdapter extends DialectAdapterBase {
|
|||
|
|
/**
|
|||
|
|
* Whether or not this dialect supports transactional DDL.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.js b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.js
|
|||
|
|
index 78850a0..ef9f504 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-adapter.js
|
|||
|
|
@@ -1,7 +1,8 @@
|
|||
|
|
"use strict";
|
|||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
exports.SqliteAdapter = void 0;
|
|||
|
|
-class SqliteAdapter {
|
|||
|
|
+const dialect_adapter_base_js_1 = require("../dialect-adapter-base.js");
|
|||
|
|
+class SqliteAdapter extends dialect_adapter_base_js_1.DialectAdapterBase {
|
|||
|
|
get supportsTransactionalDdl() {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts
|
|||
|
|
index 810af98..a873682 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts
|
|||
|
|
@@ -37,4 +37,5 @@ export interface SqliteStatement {
|
|||
|
|
changes: number | bigint;
|
|||
|
|
lastInsertRowid: number | bigint;
|
|||
|
|
};
|
|||
|
|
+ iterate(parameters: ReadonlyArray<unknown>): IterableIterator<unknown>;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-driver.js b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-driver.js
|
|||
|
|
index 13594af..99676cf 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-driver.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/dialect/sqlite/sqlite-driver.js
|
|||
|
|
@@ -1,6 +1,7 @@
|
|||
|
|
"use strict";
|
|||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
exports.SqliteDriver = void 0;
|
|||
|
|
+const select_query_node_js_1 = require("../../operation-node/select-query-node.js");
|
|||
|
|
const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|||
|
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|||
|
|
class SqliteDriver {
|
|||
|
|
@@ -70,8 +71,20 @@ class SqliteConnection {
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
- async *streamQuery() {
|
|||
|
|
- throw new Error("Sqlite driver doesn't support streaming");
|
|||
|
|
+ async *streamQuery(compiledQuery, _chunkSize) {
|
|||
|
|
+ const { sql, parameters, query } = compiledQuery;
|
|||
|
|
+ const stmt = this.#db.prepare(sql);
|
|||
|
|
+ if (select_query_node_js_1.SelectQueryNode.is(query)) {
|
|||
|
|
+ const iter = stmt.iterate(parameters);
|
|||
|
|
+ for (const row of iter) {
|
|||
|
|
+ yield {
|
|||
|
|
+ rows: [row],
|
|||
|
|
+ };
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ else {
|
|||
|
|
+ throw new Error('Sqlite driver only supports streaming of select queries');
|
|||
|
|
+ }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
class ConnectionMutex {
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/driver/driver.d.ts b/node_modules/kysely/dist/cjs/driver/driver.d.ts
|
|||
|
|
index 00babcb..11d2d55 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/driver/driver.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/driver/driver.d.ts
|
|||
|
|
@@ -40,5 +40,5 @@ export interface Driver {
|
|||
|
|
export interface TransactionSettings {
|
|||
|
|
readonly isolationLevel?: IsolationLevel;
|
|||
|
|
}
|
|||
|
|
-export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable"];
|
|||
|
|
+export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable", "snapshot"];
|
|||
|
|
export type IsolationLevel = ArrayItemType<typeof TRANSACTION_ISOLATION_LEVELS>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/driver/driver.js b/node_modules/kysely/dist/cjs/driver/driver.js
|
|||
|
|
index 8acf3ea..80b9c33 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/driver/driver.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/driver/driver.js
|
|||
|
|
@@ -6,4 +6,5 @@ exports.TRANSACTION_ISOLATION_LEVELS = [
|
|||
|
|
'read committed',
|
|||
|
|
'repeatable read',
|
|||
|
|
'serializable',
|
|||
|
|
+ 'snapshot',
|
|||
|
|
];
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/driver/single-connection-provider.js b/node_modules/kysely/dist/cjs/driver/single-connection-provider.js
|
|||
|
|
index cf064c4..db6bca0 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/driver/single-connection-provider.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/driver/single-connection-provider.js
|
|||
|
|
@@ -1,6 +1,7 @@
|
|||
|
|
"use strict";
|
|||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
exports.SingleConnectionProvider = void 0;
|
|||
|
|
+const ignoreError = () => { };
|
|||
|
|
class SingleConnectionProvider {
|
|||
|
|
#connection;
|
|||
|
|
#runningPromise;
|
|||
|
|
@@ -9,17 +10,15 @@ class SingleConnectionProvider {
|
|||
|
|
}
|
|||
|
|
async provideConnection(consumer) {
|
|||
|
|
while (this.#runningPromise) {
|
|||
|
|
- await this.#runningPromise;
|
|||
|
|
+ await this.#runningPromise.catch(ignoreError);
|
|||
|
|
}
|
|||
|
|
- const promise = this.#run(consumer);
|
|||
|
|
- this.#runningPromise = promise
|
|||
|
|
- .then(() => {
|
|||
|
|
- this.#runningPromise = undefined;
|
|||
|
|
- })
|
|||
|
|
- .catch(() => {
|
|||
|
|
+ // `#runningPromise` must be set to undefined before it's
|
|||
|
|
+ // resolved or rejected. Otherwise the while loop above
|
|||
|
|
+ // will misbehave.
|
|||
|
|
+ this.#runningPromise = this.#run(consumer).finally(() => {
|
|||
|
|
this.#runningPromise = undefined;
|
|||
|
|
});
|
|||
|
|
- return promise;
|
|||
|
|
+ return this.#runningPromise;
|
|||
|
|
}
|
|||
|
|
// Run the runner in an async function to make sure it doesn't
|
|||
|
|
// throw synchronous errors.
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/expression/expression-builder.d.ts b/node_modules/kysely/dist/cjs/expression/expression-builder.d.ts
|
|||
|
|
index 7b4a340..07933a1 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/expression/expression-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/expression/expression-builder.d.ts
|
|||
|
|
@@ -14,6 +14,7 @@ import { JSONPathBuilder } from '../query-builder/json-path-builder.js';
|
|||
|
|
import { OperandExpression } from '../parser/expression-parser.js';
|
|||
|
|
import { CallbackSelection, SelectCallback, SelectExpression, Selection } from '../parser/select-parser.js';
|
|||
|
|
import { RefTuple2, RefTuple3, RefTuple4, RefTuple5, ValTuple2, ValTuple3, ValTuple4, ValTuple5 } from '../parser/tuple-parser.js';
|
|||
|
|
+import { Selectable } from '../util/column-type.js';
|
|||
|
|
export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|||
|
|
/**
|
|||
|
|
* Creates a binary expression.
|
|||
|
|
@@ -344,6 +345,30 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|||
|
|
*/
|
|||
|
|
ref<RE extends StringReference<DB, TB>>(reference: RE): ExpressionWrapper<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|||
|
|
ref<RE extends StringReference<DB, TB>>(reference: RE, op: JSONOperatorWith$): JSONPathBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Creates a table reference.
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.selectFrom('person')
|
|||
|
|
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
+ * .select(eb => [
|
|||
|
|
+ * 'person.id',
|
|||
|
|
+ * sql<Pet[]>`jsonb_agg(${eb.table('pet')})`.as('pets')
|
|||
|
|
+ * ])
|
|||
|
|
+ * .groupBy('person.id')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * select "person"."id", jsonb_agg("pet") as "pets"
|
|||
|
|
+ * from "person"
|
|||
|
|
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
+ * group by "person"."id"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ table<T extends TB & string>(table: T): ExpressionWrapper<DB, TB, Selectable<DB[T]>>;
|
|||
|
|
/**
|
|||
|
|
* Returns a value expression.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/expression/expression-builder.js b/node_modules/kysely/dist/cjs/expression/expression-builder.js
|
|||
|
|
index 172dfab..cdcef14 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/expression/expression-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/expression/expression-builder.js
|
|||
|
|
@@ -60,8 +60,11 @@ function createExpressionBuilder(executor = noop_query_executor_js_1.NOOP_QUERY_
|
|||
|
|
}
|
|||
|
|
return new json_path_builder_js_1.JSONPathBuilder((0, reference_parser_js_1.parseJSONReference)(reference, op));
|
|||
|
|
},
|
|||
|
|
+ table(table) {
|
|||
|
|
+ return new expression_wrapper_js_1.ExpressionWrapper((0, table_parser_js_1.parseTable)(table));
|
|||
|
|
+ },
|
|||
|
|
val(value) {
|
|||
|
|
- return new expression_wrapper_js_1.ExpressionWrapper((0, value_parser_js_1.parseValueExpressionOrList)(value));
|
|||
|
|
+ return new expression_wrapper_js_1.ExpressionWrapper((0, value_parser_js_1.parseValueExpression)(value));
|
|||
|
|
},
|
|||
|
|
refTuple(...values) {
|
|||
|
|
return new expression_wrapper_js_1.ExpressionWrapper(tuple_node_js_1.TupleNode.create(values.map(reference_parser_js_1.parseReferenceExpression)));
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/index.d.ts b/node_modules/kysely/dist/cjs/index.d.ts
|
|||
|
|
index cf166f8..37cf701 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/index.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/index.d.ts
|
|||
|
|
@@ -72,6 +72,12 @@ export * from './dialect/postgres/postgres-dialect.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-introspector.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-adapter.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-adapter.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-dialect-config.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-dialect.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-driver.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-introspector.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-query-compiler.js';
|
|||
|
|
export * from './query-compiler/default-query-compiler.js';
|
|||
|
|
export * from './query-compiler/query-compiler.js';
|
|||
|
|
export * from './migration/migrator.js';
|
|||
|
|
@@ -176,7 +182,7 @@ export * from './util/compilable.js';
|
|||
|
|
export * from './util/explainable.js';
|
|||
|
|
export * from './util/streamable.js';
|
|||
|
|
export * from './util/log.js';
|
|||
|
|
-export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, } from './util/type-utils.js';
|
|||
|
|
+export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, Nullable, } from './util/type-utils.js';
|
|||
|
|
export * from './util/infer-result.js';
|
|||
|
|
export { logOnce } from './util/log-once.js';
|
|||
|
|
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/index.js b/node_modules/kysely/dist/cjs/index.js
|
|||
|
|
index a61ec58..714cbda 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/index.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/index.js
|
|||
|
|
@@ -90,6 +90,12 @@ __exportStar(require("./dialect/postgres/postgres-dialect.js"), exports);
|
|||
|
|
__exportStar(require("./dialect/sqlite/sqlite-query-compiler.js"), exports);
|
|||
|
|
__exportStar(require("./dialect/sqlite/sqlite-introspector.js"), exports);
|
|||
|
|
__exportStar(require("./dialect/sqlite/sqlite-adapter.js"), exports);
|
|||
|
|
+__exportStar(require("./dialect/mssql/mssql-adapter.js"), exports);
|
|||
|
|
+__exportStar(require("./dialect/mssql/mssql-dialect-config.js"), exports);
|
|||
|
|
+__exportStar(require("./dialect/mssql/mssql-dialect.js"), exports);
|
|||
|
|
+__exportStar(require("./dialect/mssql/mssql-driver.js"), exports);
|
|||
|
|
+__exportStar(require("./dialect/mssql/mssql-introspector.js"), exports);
|
|||
|
|
+__exportStar(require("./dialect/mssql/mssql-query-compiler.js"), exports);
|
|||
|
|
__exportStar(require("./query-compiler/default-query-compiler.js"), exports);
|
|||
|
|
__exportStar(require("./query-compiler/query-compiler.js"), exports);
|
|||
|
|
__exportStar(require("./migration/migrator.js"), exports);
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/kysely.d.ts b/node_modules/kysely/dist/cjs/kysely.d.ts
|
|||
|
|
index 52e909a..8e45b8c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/kysely.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/kysely.d.ts
|
|||
|
|
@@ -66,7 +66,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|||
|
|
/**
|
|||
|
|
* Returns the {@link SchemaModule} module for building database schema.
|
|||
|
|
*/
|
|||
|
|
- get schema(): SchemaModule;
|
|||
|
|
+ get schema(): SchemaModule<DB>;
|
|||
|
|
/**
|
|||
|
|
* Returns a the {@link DynamicModule} module.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/migration/migrator.js b/node_modules/kysely/dist/cjs/migration/migrator.js
|
|||
|
|
index 76f2d83..6f1c144 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/migration/migrator.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/migration/migrator.js
|
|||
|
|
@@ -220,10 +220,7 @@ class Migrator {
|
|||
|
|
}
|
|||
|
|
if (!(await this.#doesSchemaExists())) {
|
|||
|
|
try {
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
- .createSchema(this.#migrationTableSchema)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
- .execute();
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|||
|
|
}
|
|||
|
|
catch (error) {
|
|||
|
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create schema`
|
|||
|
|
@@ -239,20 +236,15 @@ class Migrator {
|
|||
|
|
if (!(await this.#doesTableExists(this.#migrationTable))) {
|
|||
|
|
try {
|
|||
|
|
if (this.#migrationTableSchema) {
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
- .createSchema(this.#migrationTableSchema)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
- .execute();
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|||
|
|
}
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema
|
|||
|
|
.withPlugin(this.#schemaPlugin)
|
|||
|
|
.createTable(this.#migrationTable)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
.addColumn('name', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|||
|
|
// The migration run time as ISO string. This is not a real date type as we
|
|||
|
|
// can't know which data type is supported by all future dialects.
|
|||
|
|
- .addColumn('timestamp', 'varchar(255)', (col) => col.notNull())
|
|||
|
|
- .execute();
|
|||
|
|
+ .addColumn('timestamp', 'varchar(255)', (col) => col.notNull()));
|
|||
|
|
}
|
|||
|
|
catch (error) {
|
|||
|
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|||
|
|
@@ -267,13 +259,11 @@ class Migrator {
|
|||
|
|
async #ensureMigrationLockTableExists() {
|
|||
|
|
if (!(await this.#doesTableExists(this.#migrationLockTable))) {
|
|||
|
|
try {
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema
|
|||
|
|
.withPlugin(this.#schemaPlugin)
|
|||
|
|
.createTable(this.#migrationLockTable)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
.addColumn('id', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|||
|
|
- .addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0))
|
|||
|
|
- .execute();
|
|||
|
|
+ .addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0)));
|
|||
|
|
}
|
|||
|
|
catch (error) {
|
|||
|
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|||
|
|
@@ -481,6 +471,12 @@ class Migrator {
|
|||
|
|
}
|
|||
|
|
return { results };
|
|||
|
|
}
|
|||
|
|
+ async #createIfNotExists(qb) {
|
|||
|
|
+ if (this.#props.db.getExecutor().adapter.supportsCreateIfNotExists) {
|
|||
|
|
+ qb = qb.ifNotExists();
|
|||
|
|
+ }
|
|||
|
|
+ await qb.execute();
|
|||
|
|
+ }
|
|||
|
|
}
|
|||
|
|
exports.Migrator = Migrator;
|
|||
|
|
class MigrationResultSetError extends Error {
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/add-index-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/add-index-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..b81f95f
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/add-index-node.d.ts
|
|||
|
|
@@ -0,0 +1,21 @@
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+import { RawNode } from './raw-node.js';
|
|||
|
|
+export type AddIndexNodeProps = Omit<AddIndexNode, 'kind' | 'name'>;
|
|||
|
|
+export interface AddIndexNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'AddIndexNode';
|
|||
|
|
+ readonly name: IdentifierNode;
|
|||
|
|
+ readonly columns?: OperationNode[];
|
|||
|
|
+ readonly unique?: boolean;
|
|||
|
|
+ readonly using?: RawNode;
|
|||
|
|
+ readonly ifNotExists?: boolean;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const AddIndexNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is AddIndexNode;
|
|||
|
|
+ create(name: string): AddIndexNode;
|
|||
|
|
+ cloneWith(node: AddIndexNode, props: AddIndexNodeProps): AddIndexNode;
|
|||
|
|
+ cloneWithColumns(node: AddIndexNode, columns: OperationNode[]): AddIndexNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/add-index-node.js b/node_modules/kysely/dist/cjs/operation-node/add-index-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..0341e28
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/add-index-node.js
|
|||
|
|
@@ -0,0 +1,31 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.AddIndexNode = void 0;
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+const identifier_node_js_1 = require("./identifier-node.js");
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+exports.AddIndexNode = (0, object_utils_js_1.freeze)({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'AddIndexNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(name) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ kind: 'AddIndexNode',
|
|||
|
|
+ name: identifier_node_js_1.IdentifierNode.create(name)
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(node, props) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...node,
|
|||
|
|
+ ...props,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWithColumns(node, columns) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...node,
|
|||
|
|
+ columns: [...(node.columns || []), ...columns],
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/alter-table-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/alter-table-node.d.ts
|
|||
|
|
index 5b03535..b09aca3 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/alter-table-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/alter-table-node.d.ts
|
|||
|
|
@@ -8,7 +8,9 @@ import { AlterColumnNode } from './alter-column-node.js';
|
|||
|
|
import { AddConstraintNode } from './add-constraint-node.js';
|
|||
|
|
import { DropConstraintNode } from './drop-constraint-node.js';
|
|||
|
|
import { ModifyColumnNode } from './modify-column-node.js';
|
|||
|
|
-export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
|
|||
|
|
+import { DropIndexNode } from './drop-index-node.js';
|
|||
|
|
+import { AddIndexNode } from './add-index-node.js';
|
|||
|
|
+export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint' | 'addIndex' | 'dropIndex'>;
|
|||
|
|
export type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
|
|||
|
|
export interface AlterTableNode extends OperationNode {
|
|||
|
|
readonly kind: 'AlterTableNode';
|
|||
|
|
@@ -18,6 +20,8 @@ export interface AlterTableNode extends OperationNode {
|
|||
|
|
readonly columnAlterations?: ReadonlyArray<AlterTableColumnAlterationNode>;
|
|||
|
|
readonly addConstraint?: AddConstraintNode;
|
|||
|
|
readonly dropConstraint?: DropConstraintNode;
|
|||
|
|
+ readonly addIndex?: AddIndexNode;
|
|||
|
|
+ readonly dropIndex?: DropIndexNode;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/column-definition-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/column-definition-node.d.ts
|
|||
|
|
index 6442d83..b518d35 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/column-definition-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/column-definition-node.d.ts
|
|||
|
|
@@ -20,6 +20,7 @@ export interface ColumnDefinitionNode extends OperationNode {
|
|||
|
|
readonly unsigned?: boolean;
|
|||
|
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
+ readonly nullsNotDistinct?: boolean;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/column-update-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/column-update-node.d.ts
|
|||
|
|
index 2e8ab34..bb59937 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/column-update-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/column-update-node.d.ts
|
|||
|
|
@@ -1,8 +1,7 @@
|
|||
|
|
-import { ColumnNode } from './column-node.js';
|
|||
|
|
import { OperationNode } from './operation-node.js';
|
|||
|
|
export interface ColumnUpdateNode extends OperationNode {
|
|||
|
|
readonly kind: 'ColumnUpdateNode';
|
|||
|
|
- readonly column: ColumnNode;
|
|||
|
|
+ readonly column: OperationNode;
|
|||
|
|
readonly value: OperationNode;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
@@ -10,5 +9,5 @@ export interface ColumnUpdateNode extends OperationNode {
|
|||
|
|
*/
|
|||
|
|
export declare const ColumnUpdateNode: Readonly<{
|
|||
|
|
is(node: OperationNode): node is ColumnUpdateNode;
|
|||
|
|
- create(column: ColumnNode, value: OperationNode): ColumnUpdateNode;
|
|||
|
|
+ create(column: OperationNode, value: OperationNode): ColumnUpdateNode;
|
|||
|
|
}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/create-index-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/create-index-node.d.ts
|
|||
|
|
index a3a99d1..d474032 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/create-index-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/create-index-node.d.ts
|
|||
|
|
@@ -14,6 +14,7 @@ export interface CreateIndexNode extends OperationNode {
|
|||
|
|
readonly using?: RawNode;
|
|||
|
|
readonly ifNotExists?: boolean;
|
|||
|
|
readonly where?: WhereNode;
|
|||
|
|
+ readonly nullsNotDistinct?: boolean;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/create-table-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/create-table-node.d.ts
|
|||
|
|
index cc8ceda..f36036c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/create-table-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/create-table-node.d.ts
|
|||
|
|
@@ -16,6 +16,7 @@ export interface CreateTableNode extends OperationNode {
|
|||
|
|
readonly onCommit?: OnCommitAction;
|
|||
|
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
+ readonly selectQuery?: OperationNode;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/create-trigger-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/create-trigger-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..8244954
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/create-trigger-node.d.ts
|
|||
|
|
@@ -0,0 +1,34 @@
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+import { TableNode } from './table-node.js';
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+import { QueryNode } from './query-node.js';
|
|||
|
|
+import { TriggerEventNode } from './trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from './trigger-order-node.js';
|
|||
|
|
+import { FunctionNode } from './function-node.js';
|
|||
|
|
+export type TriggerTime = 'after' | 'before' | 'instead of';
|
|||
|
|
+export type CreateTriggerNodeParams = Omit<CreateTriggerNode, 'kind' | 'name' | 'queries'>;
|
|||
|
|
+export interface CreateTriggerNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'CreateTriggerNode';
|
|||
|
|
+ readonly name: IdentifierNode;
|
|||
|
|
+ readonly queries?: ReadonlyArray<QueryNode>;
|
|||
|
|
+ readonly function?: FunctionNode;
|
|||
|
|
+ readonly time?: TriggerTime;
|
|||
|
|
+ readonly events?: ReadonlyArray<TriggerEventNode>;
|
|||
|
|
+ readonly table?: TableNode;
|
|||
|
|
+ readonly orReplace?: boolean;
|
|||
|
|
+ readonly ifNotExists?: boolean;
|
|||
|
|
+ readonly when?: OperationNode;
|
|||
|
|
+ readonly temporary?: boolean;
|
|||
|
|
+ readonly forEach?: 'row' | 'statement';
|
|||
|
|
+ readonly order?: TriggerOrderNode;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const CreateTriggerNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is CreateTriggerNode;
|
|||
|
|
+ create(name: IdentifierNode): CreateTriggerNode;
|
|||
|
|
+ cloneWithQuery(createTrigger: CreateTriggerNode, query: QueryNode): CreateTriggerNode;
|
|||
|
|
+ cloneWithEvent(createTrigger: CreateTriggerNode, event: TriggerEventNode): CreateTriggerNode;
|
|||
|
|
+ cloneWith(createTrigger: CreateTriggerNode, params: CreateTriggerNodeParams): CreateTriggerNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/create-trigger-node.js b/node_modules/kysely/dist/cjs/operation-node/create-trigger-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..47ba119
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/create-trigger-node.js
|
|||
|
|
@@ -0,0 +1,36 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.CreateTriggerNode = void 0;
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+exports.CreateTriggerNode = (0, object_utils_js_1.freeze)({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'CreateTriggerNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(name) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ kind: 'CreateTriggerNode',
|
|||
|
|
+ name,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWithQuery(createTrigger, query) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...createTrigger,
|
|||
|
|
+ queries: (0, object_utils_js_1.freeze)([...(createTrigger.queries || []), query]),
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWithEvent(createTrigger, event) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...createTrigger,
|
|||
|
|
+ events: (0, object_utils_js_1.freeze)([...(createTrigger.events || []), event]),
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(createTrigger, params) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...createTrigger,
|
|||
|
|
+ ...params,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/drop-trigger-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/drop-trigger-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..4e38772
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/drop-trigger-node.d.ts
|
|||
|
|
@@ -0,0 +1,17 @@
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|||
|
|
+export type DropTriggerNodeParams = Omit<Partial<DropTriggerNode>, 'kind' | 'name'>;
|
|||
|
|
+export interface DropTriggerNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'DropTriggerNode';
|
|||
|
|
+ readonly name: SchemableIdentifierNode;
|
|||
|
|
+ readonly ifExists?: boolean;
|
|||
|
|
+ readonly cascade?: boolean;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const DropTriggerNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is DropTriggerNode;
|
|||
|
|
+ create(name: SchemableIdentifierNode): DropTriggerNode;
|
|||
|
|
+ cloneWith(dropTrigger: DropTriggerNode, params: DropTriggerNodeParams): DropTriggerNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/drop-trigger-node.js b/node_modules/kysely/dist/cjs/operation-node/drop-trigger-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..2bb067e
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/drop-trigger-node.js
|
|||
|
|
@@ -0,0 +1,24 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.DropTriggerNode = void 0;
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+exports.DropTriggerNode = (0, object_utils_js_1.freeze)({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'DropTriggerNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(name) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ kind: 'DropTriggerNode',
|
|||
|
|
+ name,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(dropTrigger, params) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...dropTrigger,
|
|||
|
|
+ ...params,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.d.ts b/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.d.ts
|
|||
|
|
index 6b3a13c..5d7fd9d 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.d.ts
|
|||
|
|
@@ -85,6 +85,11 @@ import { JSONPathNode } from './json-path-node.js';
|
|||
|
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|||
|
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|||
|
|
import { TupleNode } from './tuple-node.js';
|
|||
|
|
+import { AddIndexNode } from './add-index-node.js';
|
|||
|
|
+import { CreateTriggerNode } from './create-trigger-node.js';
|
|||
|
|
+import { DropTriggerNode } from './drop-trigger-node.js';
|
|||
|
|
+import { TriggerEventNode } from './trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from './trigger-order-node.js';
|
|||
|
|
/**
|
|||
|
|
* Transforms an operation node tree into another one.
|
|||
|
|
*
|
|||
|
|
@@ -139,9 +144,13 @@ export declare class OperationNodeTransformer {
|
|||
|
|
protected transformDeleteQuery(node: DeleteQueryNode): DeleteQueryNode;
|
|||
|
|
protected transformReturning(node: ReturningNode): ReturningNode;
|
|||
|
|
protected transformCreateTable(node: CreateTableNode): CreateTableNode;
|
|||
|
|
+ protected transformCreateTrigger(node: CreateTriggerNode): CreateTriggerNode;
|
|||
|
|
+ protected transformTriggerEvent(node: TriggerEventNode): TriggerEventNode;
|
|||
|
|
+ protected transformTriggerOrder(node: TriggerOrderNode): TriggerOrderNode;
|
|||
|
|
protected transformColumnDefinition(node: ColumnDefinitionNode): ColumnDefinitionNode;
|
|||
|
|
protected transformAddColumn(node: AddColumnNode): AddColumnNode;
|
|||
|
|
protected transformDropTable(node: DropTableNode): DropTableNode;
|
|||
|
|
+ protected transformDropTrigger(node: DropTriggerNode): DropTriggerNode;
|
|||
|
|
protected transformOrderBy(node: OrderByNode): OrderByNode;
|
|||
|
|
protected transformOrderByItem(node: OrderByItemNode): OrderByItemNode;
|
|||
|
|
protected transformGroupBy(node: GroupByNode): GroupByNode;
|
|||
|
|
@@ -199,6 +208,7 @@ export declare class OperationNodeTransformer {
|
|||
|
|
protected transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNode;
|
|||
|
|
protected transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNode;
|
|||
|
|
protected transformTuple(node: TupleNode): TupleNode;
|
|||
|
|
+ protected transformAddIndex(node: AddIndexNode): AddIndexNode;
|
|||
|
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|||
|
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|||
|
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.js b/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.js
|
|||
|
|
index bc3d0a4..839914f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operation-node-transformer.js
|
|||
|
|
@@ -121,6 +121,11 @@ class OperationNodeTransformer {
|
|||
|
|
JSONPathLegNode: this.transformJSONPathLeg.bind(this),
|
|||
|
|
JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
|
|||
|
|
TupleNode: this.transformTuple.bind(this),
|
|||
|
|
+ AddIndexNode: this.transformAddIndex.bind(this),
|
|||
|
|
+ CreateTriggerNode: this.transformCreateTrigger.bind(this),
|
|||
|
|
+ TriggerEventNode: this.transformTriggerEvent.bind(this),
|
|||
|
|
+ TriggerOrderNode: this.transformTriggerOrder.bind(this),
|
|||
|
|
+ DropTriggerNode: this.transformDropTrigger.bind(this),
|
|||
|
|
});
|
|||
|
|
transformNode(node) {
|
|||
|
|
if (!node) {
|
|||
|
|
@@ -297,6 +302,38 @@ class OperationNodeTransformer {
|
|||
|
|
onCommit: node.onCommit,
|
|||
|
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|||
|
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|||
|
|
+ selectQuery: this.transformNode(node.selectQuery),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ transformCreateTrigger(node) {
|
|||
|
|
+ return (0, require_all_props_js_1.requireAllProps)({
|
|||
|
|
+ kind: 'CreateTriggerNode',
|
|||
|
|
+ name: this.transformNode(node.name),
|
|||
|
|
+ table: this.transformNode(node.table),
|
|||
|
|
+ ifNotExists: node.ifNotExists,
|
|||
|
|
+ time: node.time,
|
|||
|
|
+ events: this.transformNodeList(node.events),
|
|||
|
|
+ forEach: node.forEach,
|
|||
|
|
+ orReplace: node.orReplace,
|
|||
|
|
+ temporary: node.temporary,
|
|||
|
|
+ queries: this.transformNodeList(node.queries),
|
|||
|
|
+ function: this.transformNode(node.function),
|
|||
|
|
+ when: this.transformNode(node.when),
|
|||
|
|
+ order: this.transformNode(node.order),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ transformTriggerEvent(node) {
|
|||
|
|
+ return (0, require_all_props_js_1.requireAllProps)({
|
|||
|
|
+ kind: 'TriggerEventNode',
|
|||
|
|
+ event: node.event,
|
|||
|
|
+ columns: this.transformNodeList(node.columns),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ transformTriggerOrder(node) {
|
|||
|
|
+ return (0, require_all_props_js_1.requireAllProps)({
|
|||
|
|
+ kind: 'TriggerOrderNode',
|
|||
|
|
+ order: node.order,
|
|||
|
|
+ otherTriggerName: this.transformNode(node.otherTriggerName),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformColumnDefinition(node) {
|
|||
|
|
@@ -315,6 +352,7 @@ class OperationNodeTransformer {
|
|||
|
|
generated: this.transformNode(node.generated),
|
|||
|
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|||
|
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|||
|
|
+ nullsNotDistinct: node.nullsNotDistinct,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformAddColumn(node) {
|
|||
|
|
@@ -331,6 +369,14 @@ class OperationNodeTransformer {
|
|||
|
|
cascade: node.cascade,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ transformDropTrigger(node) {
|
|||
|
|
+ return (0, require_all_props_js_1.requireAllProps)({
|
|||
|
|
+ kind: 'DropTriggerNode',
|
|||
|
|
+ name: this.transformNode(node.name),
|
|||
|
|
+ ifExists: node.ifExists,
|
|||
|
|
+ cascade: node.cascade,
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
transformOrderBy(node) {
|
|||
|
|
return (0, require_all_props_js_1.requireAllProps)({
|
|||
|
|
kind: 'OrderByNode',
|
|||
|
|
@@ -416,6 +462,7 @@ class OperationNodeTransformer {
|
|||
|
|
using: this.transformNode(node.using),
|
|||
|
|
ifNotExists: node.ifNotExists,
|
|||
|
|
where: this.transformNode(node.where),
|
|||
|
|
+ nullsNotDistinct: node.nullsNotDistinct,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformList(node) {
|
|||
|
|
@@ -445,6 +492,7 @@ class OperationNodeTransformer {
|
|||
|
|
kind: 'UniqueConstraintNode',
|
|||
|
|
columns: this.transformNodeList(node.columns),
|
|||
|
|
name: this.transformNode(node.name),
|
|||
|
|
+ nullsNotDistinct: node.nullsNotDistinct,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformForeignKeyConstraint(node) {
|
|||
|
|
@@ -533,6 +581,8 @@ class OperationNodeTransformer {
|
|||
|
|
columnAlterations: this.transformNodeList(node.columnAlterations),
|
|||
|
|
addConstraint: this.transformNode(node.addConstraint),
|
|||
|
|
dropConstraint: this.transformNode(node.dropConstraint),
|
|||
|
|
+ addIndex: this.transformNode(node.addIndex),
|
|||
|
|
+ dropIndex: this.transformNode(node.dropIndex),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformDropColumn(node) {
|
|||
|
|
@@ -765,6 +815,16 @@ class OperationNodeTransformer {
|
|||
|
|
values: this.transformNodeList(node.values),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ transformAddIndex(node) {
|
|||
|
|
+ return (0, require_all_props_js_1.requireAllProps)({
|
|||
|
|
+ kind: 'AddIndexNode',
|
|||
|
|
+ name: this.transformNode(node.name),
|
|||
|
|
+ columns: this.transformNodeList(node.columns),
|
|||
|
|
+ unique: node.unique,
|
|||
|
|
+ using: this.transformNode(node.using),
|
|||
|
|
+ ifNotExists: node.ifNotExists,
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
transformDataType(node) {
|
|||
|
|
// An Object.freezed leaf node. No need to clone.
|
|||
|
|
return node;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.d.ts b/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.d.ts
|
|||
|
|
index 7c267cd..6a66bc7 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.d.ts
|
|||
|
|
@@ -85,6 +85,11 @@ import { JSONPathNode } from './json-path-node.js';
|
|||
|
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|||
|
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|||
|
|
import { TupleNode } from './tuple-node.js';
|
|||
|
|
+import { AddIndexNode } from './add-index-node.js';
|
|||
|
|
+import { CreateTriggerNode } from './create-trigger-node.js';
|
|||
|
|
+import { DropTriggerNode } from './drop-trigger-node.js';
|
|||
|
|
+import { TriggerEventNode } from './trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from './trigger-order-node.js';
|
|||
|
|
export declare abstract class OperationNodeVisitor {
|
|||
|
|
#private;
|
|||
|
|
protected readonly nodeStack: OperationNode[];
|
|||
|
|
@@ -108,9 +113,13 @@ export declare abstract class OperationNodeVisitor {
|
|||
|
|
protected abstract visitDeleteQuery(node: DeleteQueryNode): void;
|
|||
|
|
protected abstract visitReturning(node: ReturningNode): void;
|
|||
|
|
protected abstract visitCreateTable(node: CreateTableNode): void;
|
|||
|
|
+ protected abstract visitCreateTrigger(node: CreateTriggerNode): void;
|
|||
|
|
+ protected abstract visitTriggerEvent(node: TriggerEventNode): void;
|
|||
|
|
+ protected abstract visitTriggerOrder(node: TriggerOrderNode): void;
|
|||
|
|
protected abstract visitAddColumn(node: AddColumnNode): void;
|
|||
|
|
protected abstract visitColumnDefinition(node: ColumnDefinitionNode): void;
|
|||
|
|
protected abstract visitDropTable(node: DropTableNode): void;
|
|||
|
|
+ protected abstract visitDropTrigger(node: DropTriggerNode): void;
|
|||
|
|
protected abstract visitOrderBy(node: OrderByNode): void;
|
|||
|
|
protected abstract visitOrderByItem(node: OrderByItemNode): void;
|
|||
|
|
protected abstract visitGroupBy(node: GroupByNode): void;
|
|||
|
|
@@ -176,4 +185,5 @@ export declare abstract class OperationNodeVisitor {
|
|||
|
|
protected abstract visitJSONPathLeg(node: JSONPathLegNode): void;
|
|||
|
|
protected abstract visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|||
|
|
protected abstract visitTuple(node: TupleNode): void;
|
|||
|
|
+ protected abstract visitAddIndex(node: AddIndexNode): void;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.js b/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.js
|
|||
|
|
index 8a50e0b..acc4d6e 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operation-node-visitor.js
|
|||
|
|
@@ -94,6 +94,11 @@ class OperationNodeVisitor {
|
|||
|
|
JSONPathLegNode: this.visitJSONPathLeg.bind(this),
|
|||
|
|
JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
|
|||
|
|
TupleNode: this.visitTuple.bind(this),
|
|||
|
|
+ AddIndexNode: this.visitAddIndex.bind(this),
|
|||
|
|
+ CreateTriggerNode: this.visitCreateTrigger.bind(this),
|
|||
|
|
+ TriggerEventNode: this.visitTriggerEvent.bind(this),
|
|||
|
|
+ TriggerOrderNode: this.visitTriggerOrder.bind(this),
|
|||
|
|
+ DropTriggerNode: this.visitDropTrigger.bind(this),
|
|||
|
|
});
|
|||
|
|
visitNode = (node) => {
|
|||
|
|
this.nodeStack.push(node);
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operation-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/operation-node.d.ts
|
|||
|
|
index 24cad68..a01b9ed 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operation-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operation-node.d.ts
|
|||
|
|
@@ -1,4 +1,4 @@
|
|||
|
|
-export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | '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' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode';
|
|||
|
|
+export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | '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' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'AddIndexNode' | 'CreateTriggerNode' | 'TriggerEventNode' | 'TriggerOrderNode' | 'DropTriggerNode';
|
|||
|
|
export interface OperationNode {
|
|||
|
|
readonly kind: OperationNodeKind;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operator-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/operator-node.d.ts
|
|||
|
|
index 1076866..18b6e05 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operator-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operator-node.d.ts
|
|||
|
|
@@ -1,11 +1,11 @@
|
|||
|
|
import { OperationNode } from './operation-node.js';
|
|||
|
|
-export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp"];
|
|||
|
|
+export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
|
|||
|
|
export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
|
|||
|
|
export declare const JSON_OPERATORS: readonly ["->", "->>"];
|
|||
|
|
-export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|||
|
|
+export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|||
|
|
export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
|
|||
|
|
export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
|
|||
|
|
-export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|||
|
|
+export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|||
|
|
export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
|
|||
|
|
export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
|
|||
|
|
export type JSONOperator = (typeof JSON_OPERATORS)[number];
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/operator-node.js b/node_modules/kysely/dist/cjs/operation-node/operator-node.js
|
|||
|
|
index 1b4ff0a..5407a85 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/operator-node.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/operator-node.js
|
|||
|
|
@@ -37,6 +37,8 @@ exports.COMPARISON_OPERATORS = [
|
|||
|
|
'!!',
|
|||
|
|
'<->',
|
|||
|
|
'regexp',
|
|||
|
|
+ 'is distinct from',
|
|||
|
|
+ 'is not distinct from',
|
|||
|
|
];
|
|||
|
|
exports.ARITHMETIC_OPERATORS = [
|
|||
|
|
'+',
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/trigger-event-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/trigger-event-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..8a3677d
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/trigger-event-node.d.ts
|
|||
|
|
@@ -0,0 +1,15 @@
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+export type TriggerEvent = 'delete' | 'update' | 'insert' | 'truncate';
|
|||
|
|
+export type TriggerEventNodeParams = Omit<TriggerEventNode, 'kind'>;
|
|||
|
|
+export interface TriggerEventNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'TriggerEventNode';
|
|||
|
|
+ readonly event: TriggerEvent;
|
|||
|
|
+ readonly columns?: ReadonlyArray<OperationNode>;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const TriggerEventNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is TriggerEventNode;
|
|||
|
|
+ create(event: TriggerEvent, columns?: ReadonlyArray<OperationNode>): TriggerEventNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/trigger-event-node.js b/node_modules/kysely/dist/cjs/operation-node/trigger-event-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..85f3975
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/trigger-event-node.js
|
|||
|
|
@@ -0,0 +1,19 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.TriggerEventNode = void 0;
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+exports.TriggerEventNode = (0, object_utils_js_1.freeze)({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'TriggerEventNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(event, columns) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ kind: 'TriggerEventNode',
|
|||
|
|
+ event,
|
|||
|
|
+ columns,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/trigger-order-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/trigger-order-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..12bad8d
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/trigger-order-node.d.ts
|
|||
|
|
@@ -0,0 +1,16 @@
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+export type TriggerOrder = 'follows' | 'precedes';
|
|||
|
|
+export type TriggerOrderNodeParams = Omit<TriggerOrderNode, 'kind'>;
|
|||
|
|
+export interface TriggerOrderNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'TriggerOrderNode';
|
|||
|
|
+ readonly order: TriggerOrder;
|
|||
|
|
+ readonly otherTriggerName: IdentifierNode;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const TriggerOrderNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is TriggerOrderNode;
|
|||
|
|
+ create(order: TriggerOrder, otherTriggerName: IdentifierNode): TriggerOrderNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/trigger-order-node.js b/node_modules/kysely/dist/cjs/operation-node/trigger-order-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..2b40780
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/trigger-order-node.js
|
|||
|
|
@@ -0,0 +1,19 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.TriggerOrderNode = void 0;
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+exports.TriggerOrderNode = (0, object_utils_js_1.freeze)({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'TriggerOrderNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(order, otherTriggerName) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ kind: 'TriggerOrderNode',
|
|||
|
|
+ order,
|
|||
|
|
+ otherTriggerName,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.d.ts b/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.d.ts
|
|||
|
|
index c179f1f..4a544de 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.d.ts
|
|||
|
|
@@ -5,11 +5,14 @@ export interface UniqueConstraintNode extends OperationNode {
|
|||
|
|
readonly kind: 'UniqueConstraintNode';
|
|||
|
|
readonly columns: ReadonlyArray<ColumnNode>;
|
|||
|
|
readonly name?: IdentifierNode;
|
|||
|
|
+ readonly nullsNotDistinct?: boolean;
|
|||
|
|
}
|
|||
|
|
+export type UniqueConstraintNodeProps = Omit<Partial<UniqueConstraintNode>, 'kind'>;
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
*/
|
|||
|
|
export declare const UniqueConstraintNode: Readonly<{
|
|||
|
|
is(node: OperationNode): node is UniqueConstraintNode;
|
|||
|
|
- create(columns: string[], constraintName?: string): UniqueConstraintNode;
|
|||
|
|
+ create(columns: string[], constraintName?: string, nullsNotDistinct?: boolean): UniqueConstraintNode;
|
|||
|
|
+ cloneWith(node: UniqueConstraintNode, props: UniqueConstraintNodeProps): UniqueConstraintNode;
|
|||
|
|
}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.js b/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.js
|
|||
|
|
index d615f74..ba9b265 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/operation-node/unique-constraint-node.js
|
|||
|
|
@@ -11,11 +11,18 @@ exports.UniqueConstraintNode = (0, object_utils_js_1.freeze)({
|
|||
|
|
is(node) {
|
|||
|
|
return node.kind === 'UniqueConstraintNode';
|
|||
|
|
},
|
|||
|
|
- create(columns, constraintName) {
|
|||
|
|
+ create(columns, constraintName, nullsNotDistinct) {
|
|||
|
|
return (0, object_utils_js_1.freeze)({
|
|||
|
|
kind: 'UniqueConstraintNode',
|
|||
|
|
columns: (0, object_utils_js_1.freeze)(columns.map(column_node_js_1.ColumnNode.create)),
|
|||
|
|
name: constraintName ? identifier_node_js_1.IdentifierNode.create(constraintName) : undefined,
|
|||
|
|
+ nullsNotDistinct,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(node, props) {
|
|||
|
|
+ return (0, object_utils_js_1.freeze)({
|
|||
|
|
+ ...node,
|
|||
|
|
+ ...props,
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/parser/binary-operation-parser.js b/node_modules/kysely/dist/cjs/parser/binary-operation-parser.js
|
|||
|
|
index 2ebff87..b5e9a08 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/parser/binary-operation-parser.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/parser/binary-operation-parser.js
|
|||
|
|
@@ -41,7 +41,7 @@ exports.parseFilterObject = parseFilterObject;
|
|||
|
|
function parseFilterList(list, combinator) {
|
|||
|
|
const combine = combinator === 'and' ? and_node_js_1.AndNode.create : or_node_js_1.OrNode.create;
|
|||
|
|
if (list.length === 0) {
|
|||
|
|
- return value_node_js_1.ValueNode.createImmediate(combinator === 'and');
|
|||
|
|
+ return binary_operation_node_js_1.BinaryOperationNode.create(value_node_js_1.ValueNode.createImmediate(1), operator_node_js_1.OperatorNode.create('='), value_node_js_1.ValueNode.createImmediate(combinator === 'and' ? 1 : 0));
|
|||
|
|
}
|
|||
|
|
let node = toOperationNode(list[0]);
|
|||
|
|
for (let i = 1; i < list.length; ++i) {
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/parser/reference-parser.d.ts b/node_modules/kysely/dist/cjs/parser/reference-parser.d.ts
|
|||
|
|
index cd4d656..08204c7 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/parser/reference-parser.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/parser/reference-parser.d.ts
|
|||
|
|
@@ -16,7 +16,8 @@ export type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyCo
|
|||
|
|
export type SimpleReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|||
|
|
export type ReferenceExpression<DB, TB extends keyof DB> = SimpleReferenceExpression<DB, TB> | ExpressionOrFactory<DB, TB, any>;
|
|||
|
|
export type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|||
|
|
-export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|||
|
|
+export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = SelectType<ExtractRawTypeFromReferenceExpression<DB, TB, RE, DV>>;
|
|||
|
|
+export type ExtractRawTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|||
|
|
export type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, DV = unknown> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : DV;
|
|||
|
|
export type OrderedColumnName<C extends string> = C extends `${string} ${infer O}` ? O extends OrderByDirection ? C : never : C;
|
|||
|
|
export type ExtractColumnNameFromOrderedColumnName<C extends string> = C extends `${infer CL} ${infer O}` ? O extends OrderByDirection ? CL : never : C;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/parser/update-set-parser.d.ts b/node_modules/kysely/dist/cjs/parser/update-set-parser.d.ts
|
|||
|
|
index d4b2dd0..2763b7c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/parser/update-set-parser.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/parser/update-set-parser.d.ts
|
|||
|
|
@@ -2,9 +2,12 @@ import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|||
|
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|||
|
|
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|||
|
|
import { ValueExpression } from './value-parser.js';
|
|||
|
|
+import { ExtractRawTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|||
|
|
export type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB = TB> = {
|
|||
|
|
[C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
|
|||
|
|
};
|
|||
|
|
export type UpdateObjectFactory<DB, TB extends keyof DB, UT extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => UpdateObject<DB, TB, UT>;
|
|||
|
|
-export type UpdateExpression<DB, TB extends keyof DB, UT extends keyof DB = TB> = UpdateObject<DB, TB, UT> | UpdateObjectFactory<DB, TB, UT>;
|
|||
|
|
-export declare function parseUpdateExpression(update: UpdateExpression<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|||
|
|
+export type UpdateObjectExpression<DB, TB extends keyof DB, UT extends keyof DB = TB> = UpdateObject<DB, TB, UT> | UpdateObjectFactory<DB, TB, UT>;
|
|||
|
|
+export type ExtractUpdateTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = UpdateType<ExtractRawTypeFromReferenceExpression<DB, TB, RE, DV>>;
|
|||
|
|
+export declare function parseUpdate(...args: [UpdateObjectExpression<any, any, any>] | [ReferenceExpression<any, any>, ValueExpression<any, any, any>]): ReadonlyArray<ColumnUpdateNode>;
|
|||
|
|
+export declare function parseUpdateObjectExpression(update: UpdateObjectExpression<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/parser/update-set-parser.js b/node_modules/kysely/dist/cjs/parser/update-set-parser.js
|
|||
|
|
index bbb1618..e741a9e 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/parser/update-set-parser.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/parser/update-set-parser.js
|
|||
|
|
@@ -1,12 +1,22 @@
|
|||
|
|
"use strict";
|
|||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
-exports.parseUpdateExpression = void 0;
|
|||
|
|
+exports.parseUpdateObjectExpression = exports.parseUpdate = void 0;
|
|||
|
|
const column_node_js_1 = require("../operation-node/column-node.js");
|
|||
|
|
const column_update_node_js_1 = require("../operation-node/column-update-node.js");
|
|||
|
|
const expression_builder_js_1 = require("../expression/expression-builder.js");
|
|||
|
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
const value_parser_js_1 = require("./value-parser.js");
|
|||
|
|
-function parseUpdateExpression(update) {
|
|||
|
|
+const reference_parser_js_1 = require("./reference-parser.js");
|
|||
|
|
+function parseUpdate(...args) {
|
|||
|
|
+ if (args.length === 2) {
|
|||
|
|
+ return [
|
|||
|
|
+ column_update_node_js_1.ColumnUpdateNode.create((0, reference_parser_js_1.parseReferenceExpression)(args[0]), (0, value_parser_js_1.parseValueExpression)(args[1])),
|
|||
|
|
+ ];
|
|||
|
|
+ }
|
|||
|
|
+ return parseUpdateObjectExpression(args[0]);
|
|||
|
|
+}
|
|||
|
|
+exports.parseUpdate = parseUpdate;
|
|||
|
|
+function parseUpdateObjectExpression(update) {
|
|||
|
|
const updateObj = (0, object_utils_js_1.isFunction)(update) ? update((0, expression_builder_js_1.expressionBuilder)()) : update;
|
|||
|
|
return Object.entries(updateObj)
|
|||
|
|
.filter(([_, value]) => value !== undefined)
|
|||
|
|
@@ -14,4 +24,4 @@ function parseUpdateExpression(update) {
|
|||
|
|
return column_update_node_js_1.ColumnUpdateNode.create(column_node_js_1.ColumnNode.create(key), (0, value_parser_js_1.parseValueExpression)(value));
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
-exports.parseUpdateExpression = parseUpdateExpression;
|
|||
|
|
+exports.parseUpdateObjectExpression = parseUpdateObjectExpression;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/plugin/with-schema/with-schema-transformer.js b/node_modules/kysely/dist/cjs/plugin/with-schema/with-schema-transformer.js
|
|||
|
|
index 4b3caa6..97287a4 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/plugin/with-schema/with-schema-transformer.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/plugin/with-schema/with-schema-transformer.js
|
|||
|
|
@@ -19,12 +19,14 @@ const ROOT_OPERATION_NODES = (0, object_utils_js_1.freeze)({
|
|||
|
|
CreateTableNode: true,
|
|||
|
|
CreateTypeNode: true,
|
|||
|
|
CreateViewNode: true,
|
|||
|
|
+ CreateTriggerNode: true,
|
|||
|
|
DeleteQueryNode: true,
|
|||
|
|
DropIndexNode: true,
|
|||
|
|
DropSchemaNode: true,
|
|||
|
|
DropTableNode: true,
|
|||
|
|
DropTypeNode: true,
|
|||
|
|
DropViewNode: true,
|
|||
|
|
+ DropTriggerNode: true,
|
|||
|
|
InsertQueryNode: true,
|
|||
|
|
RawNode: true,
|
|||
|
|
SelectQueryNode: true,
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/function-module.d.ts b/node_modules/kysely/dist/cjs/query-builder/function-module.d.ts
|
|||
|
|
index 592c5e9..8f326c1 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/function-module.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/function-module.d.ts
|
|||
|
|
@@ -7,6 +7,7 @@ import { KyselyTypeError } from '../util/type-error.js';
|
|||
|
|
import { Equals, IsAny } from '../util/type-utils.js';
|
|||
|
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|||
|
|
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|||
|
|
+import { Selectable } from '../util/column-type.js';
|
|||
|
|
/**
|
|||
|
|
* Helpers for type safe SQL function calls.
|
|||
|
|
*
|
|||
|
|
@@ -17,21 +18,47 @@ import { SelectQueryBuilderExpression } from '../query-builder/select-query-buil
|
|||
|
|
*
|
|||
|
|
* <!-- siteExample("select", "Function calls", 60) -->
|
|||
|
|
*
|
|||
|
|
- * This example uses the `fn` module to select some aggregates:
|
|||
|
|
+ * This example shows how to create function calls. These examples also work in any
|
|||
|
|
+ * other place (`where` calls, updates, inserts etc.). The only difference is that you
|
|||
|
|
+ * leave out the alias (the `as` call) if you use these in any other place than `select`.
|
|||
|
|
*
|
|||
|
|
* ```ts
|
|||
|
|
+ * import { sql } from 'kysely'
|
|||
|
|
+ *
|
|||
|
|
* const result = await db.selectFrom('person')
|
|||
|
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
- * .select(({ fn }) => [
|
|||
|
|
+ * .select(({ fn, val, ref }) => [
|
|||
|
|
* 'person.id',
|
|||
|
|
*
|
|||
|
|
* // The `fn` module contains the most common
|
|||
|
|
* // functions.
|
|||
|
|
* fn.count<number>('pet.id').as('pet_count'),
|
|||
|
|
*
|
|||
|
|
- * // You can call any function using the
|
|||
|
|
- * // `agg` method
|
|||
|
|
- * fn.agg<string[]>('array_agg', ['pet.name']).as('pet_names')
|
|||
|
|
+ * // You can call any function by calling `fn`
|
|||
|
|
+ * // directly. The arguments are treated as column
|
|||
|
|
+ * // references by default. If you want to pass in
|
|||
|
|
+ * // values, use the `val` function.
|
|||
|
|
+ * fn<string>('concat', [
|
|||
|
|
+ * val('Ms. '),
|
|||
|
|
+ * 'first_name',
|
|||
|
|
+ * val(' '),
|
|||
|
|
+ * 'last_name'
|
|||
|
|
+ * ]).as('full_name_with_title'),
|
|||
|
|
+ *
|
|||
|
|
+ * // You can call any aggregate function using the
|
|||
|
|
+ * // `fn.agg` function.
|
|||
|
|
+ * fn.agg<string[]>('array_agg', ['pet.name']).as('pet_names'),
|
|||
|
|
+ *
|
|||
|
|
+ * // And once again, you can use the `sql`
|
|||
|
|
+ * // template tag. The template tag substitutions
|
|||
|
|
+ * // are treated as values by default. If you want
|
|||
|
|
+ * // to reference columns, you can use the `ref`
|
|||
|
|
+ * // function.
|
|||
|
|
+ * sql<string>`concat(
|
|||
|
|
+ * ${ref('first_name')},
|
|||
|
|
+ * ' ',
|
|||
|
|
+ * ${ref('last_name')}
|
|||
|
|
+ * )`.as('full_name')
|
|||
|
|
* ])
|
|||
|
|
* .groupBy('person.id')
|
|||
|
|
* .having((eb) => eb.fn.count('pet.id'), '>', 10)
|
|||
|
|
@@ -44,11 +71,13 @@ import { SelectQueryBuilderExpression } from '../query-builder/select-query-buil
|
|||
|
|
* select
|
|||
|
|
* "person"."id",
|
|||
|
|
* count("pet"."id") as "pet_count",
|
|||
|
|
- * array_agg("pet"."name") as "pet_names"
|
|||
|
|
+ * concat($1, "first_name", $2, "last_name") as "full_name_with_title",
|
|||
|
|
+ * array_agg("pet"."name") as "pet_names",
|
|||
|
|
+ * concat("first_name", ' ', "last_name") as "full_name"
|
|||
|
|
* from "person"
|
|||
|
|
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
* group by "person"."id"
|
|||
|
|
- * having count("pet"."id") > $1
|
|||
|
|
+ * having count("pet"."id") > $3
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
export interface FunctionModule<DB, TB extends keyof DB> {
|
|||
|
|
@@ -540,6 +569,50 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|||
|
|
any<RE extends StringReference<DB, TB>>(expr: RE): Exclude<ExtractTypeFromStringReference<DB, TB, RE>, null> extends ReadonlyArray<infer I> ? ExpressionWrapper<DB, TB, I> : KyselyTypeError<'any(expr) call failed: expr must be an array'>;
|
|||
|
|
any<T>(subquery: SelectQueryBuilderExpression<Record<string, T>>): ExpressionWrapper<DB, TB, T>;
|
|||
|
|
any<T>(expr: Expression<ReadonlyArray<T>>): ExpressionWrapper<DB, TB, T>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Creates a json_agg function call.
|
|||
|
|
+ *
|
|||
|
|
+ * This function is only available on PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.selectFrom('person')
|
|||
|
|
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
+ * .select((eb) => ['first_name', eb.fn.jsonAgg('pet').as('pets')])
|
|||
|
|
+ * .groupBy('person.first_name')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * select "first_name", json_agg("pet") as "pets"
|
|||
|
|
+ * from "person"
|
|||
|
|
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
+ * group by "person"."first_name"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Selectable<DB[T]>[] : T extends Expression<infer O> ? O[] : never>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Creates a to_json function call.
|
|||
|
|
+ *
|
|||
|
|
+ * This function is only available on PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.selectFrom('person')
|
|||
|
|
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
+ * .select((eb) => ['first_name', eb.fn.toJson('pet').as('pet')])
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * select "first_name", to_json("pet") as "pet"
|
|||
|
|
+ * from "person"
|
|||
|
|
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ toJson<T extends (TB & string) | Expression<unknown>>(table: T): ExpressionWrapper<DB, TB, T extends TB ? Selectable<DB[T]> : T extends Expression<infer O> ? O : never>;
|
|||
|
|
}
|
|||
|
|
export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
|
|||
|
|
type OutputBoundStringReference<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = IsAny<O> extends true ? C : Equals<ExtractTypeFromReferenceExpression<DB, TB, C> | null, O | null> extends true ? C : never;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/function-module.js b/node_modules/kysely/dist/cjs/query-builder/function-module.js
|
|||
|
|
index b894b62..01a2a51 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/function-module.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/function-module.js
|
|||
|
|
@@ -7,6 +7,8 @@ const function_node_js_1 = require("../operation-node/function-node.js");
|
|||
|
|
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|||
|
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|||
|
|
const aggregate_function_builder_js_1 = require("./aggregate-function-builder.js");
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+const table_parser_js_1 = require("../parser/table-parser.js");
|
|||
|
|
function createFunctionModule() {
|
|||
|
|
const fn = (name, args) => {
|
|||
|
|
return new expression_wrapper_js_1.ExpressionWrapper(function_node_js_1.FunctionNode.create(name, (0, reference_parser_js_1.parseReferenceExpressionOrList)(args)));
|
|||
|
|
@@ -44,6 +46,18 @@ function createFunctionModule() {
|
|||
|
|
any(column) {
|
|||
|
|
return fn('any', [column]);
|
|||
|
|
},
|
|||
|
|
+ jsonAgg(table) {
|
|||
|
|
+ return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|||
|
|
+ aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('json_agg', [
|
|||
|
|
+ (0, object_utils_js_1.isString)(table) ? (0, table_parser_js_1.parseTable)(table) : table.toOperationNode(),
|
|||
|
|
+ ]),
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ toJson(table) {
|
|||
|
|
+ return new expression_wrapper_js_1.ExpressionWrapper(function_node_js_1.FunctionNode.create('to_json', [
|
|||
|
|
+ (0, object_utils_js_1.isString)(table) ? (0, table_parser_js_1.parseTable)(table) : table.toOperationNode(),
|
|||
|
|
+ ]));
|
|||
|
|
+ },
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
exports.createFunctionModule = createFunctionModule;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.d.ts b/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.d.ts
|
|||
|
|
index 6be4113..ffc6c3f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.d.ts
|
|||
|
|
@@ -5,7 +5,7 @@ import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-
|
|||
|
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { NarrowPartial, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|||
|
|
-import { UpdateExpression } from '../parser/update-set-parser.js';
|
|||
|
|
+import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|||
|
|
import { Compilable } from '../util/compilable.js';
|
|||
|
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
import { QueryId } from '../util/query-id.js';
|
|||
|
|
@@ -60,13 +60,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* })
|
|||
|
|
* .executeTakeFirst()
|
|||
|
|
*
|
|||
|
|
+ * // `insertId` is only available on dialects that
|
|||
|
|
+ * // automatically return the id of the inserted row
|
|||
|
|
+ * // such as MySQL and SQLite. On PostgreSQL, for example,
|
|||
|
|
+ * // you need to add a `returning` clause to the query to
|
|||
|
|
+ * // get anything out. See the "returning data" example.
|
|||
|
|
* console.log(result.insertId)
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
- * The generated SQL (PostgreSQL):
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
- * insert into "person" ("first_name", "last_name", "age") values ($1, $2, $3)
|
|||
|
|
+ * insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* <!-- siteExample("insert", "Multiple rows", 20) -->
|
|||
|
|
@@ -131,11 +136,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* ```ts
|
|||
|
|
* import { sql } from 'kysely'
|
|||
|
|
*
|
|||
|
|
+ * const ani = "Ani"
|
|||
|
|
+ * const ston = "ston"
|
|||
|
|
+ *
|
|||
|
|
* const result = await db
|
|||
|
|
* .insertInto('person')
|
|||
|
|
* .values(({ ref, selectFrom, fn }) => ({
|
|||
|
|
* first_name: 'Jennifer',
|
|||
|
|
- * last_name: sql`${'Ani'} || ${'ston'}`,
|
|||
|
|
+ * last_name: sql`concat(${ani}, ${ston})`,
|
|||
|
|
* middle_name: ref('first_name'),
|
|||
|
|
* age: selectFrom('person')
|
|||
|
|
* .select(fn.avg<number>('age')
|
|||
|
|
@@ -147,8 +155,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* The generated SQL (PostgreSQL):
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
- * insert into "person" ("first_name", "last_name", "age")
|
|||
|
|
- * values ($1, $2 || $3, (select avg("age") as "avg_age" from "person"))
|
|||
|
|
+ * insert into "person" (
|
|||
|
|
+ * "first_name",
|
|||
|
|
+ * "last_name",
|
|||
|
|
+ * "middle_name",
|
|||
|
|
+ * "age"
|
|||
|
|
+ * )
|
|||
|
|
+ * values (
|
|||
|
|
+ * $1,
|
|||
|
|
+ * concat($2, $3),
|
|||
|
|
+ * "first_name",
|
|||
|
|
+ * (select avg("age") as "avg_age" from "person")
|
|||
|
|
+ * )
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* You can also use the callback version of subqueries or raw expressions:
|
|||
|
|
@@ -208,7 +226,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* .select((eb) => [
|
|||
|
|
* 'pet.name',
|
|||
|
|
* eb.val('Petson').as('last_name'),
|
|||
|
|
- * eb.val(7).as('age'),
|
|||
|
|
+ * eb.lit(7).as('age'),
|
|||
|
|
* ])
|
|||
|
|
* )
|
|||
|
|
* .execute()
|
|||
|
|
@@ -218,7 +236,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
* insert into "person" ("first_name", "last_name", "age")
|
|||
|
|
- * select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
|
|||
|
|
+ * select "pet"."name", $1 as "last_name", 7 as "age from "pet"
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
|
|||
|
|
@@ -414,7 +432,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
- onDuplicateKeyUpdate(update: UpdateExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|||
|
|
+ onDuplicateKeyUpdate(update: UpdateObjectExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|||
|
|
/**
|
|||
|
|
* Allows you to return data from modified rows.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.js b/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.js
|
|||
|
|
index ba57ff0..d89d1b8 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/insert-query-builder.js
|
|||
|
|
@@ -77,7 +77,7 @@ class InsertQueryBuilder {
|
|||
|
|
* .select((eb) => [
|
|||
|
|
* 'pet.name',
|
|||
|
|
* eb.val('Petson').as('last_name'),
|
|||
|
|
- * eb.val(7).as('age'),
|
|||
|
|
+ * eb.lit(7).as('age'),
|
|||
|
|
* ])
|
|||
|
|
* )
|
|||
|
|
* .execute()
|
|||
|
|
@@ -87,7 +87,7 @@ class InsertQueryBuilder {
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
* insert into "person" ("first_name", "last_name", "age")
|
|||
|
|
- * select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
|
|||
|
|
+ * select "pet"."name", $1 as "last_name", 7 as "age from "pet"
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
expression(expression) {
|
|||
|
|
@@ -310,7 +310,7 @@ class InsertQueryBuilder {
|
|||
|
|
return new InsertQueryBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|||
|
|
- onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateExpression)(update)),
|
|||
|
|
+ onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObjectExpression)(update)),
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/insert-result.d.ts b/node_modules/kysely/dist/cjs/query-builder/insert-result.d.ts
|
|||
|
|
index c16fb08..d22a9e5 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/insert-result.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/insert-result.d.ts
|
|||
|
|
@@ -23,7 +23,14 @@
|
|||
|
|
*/
|
|||
|
|
export declare class InsertResult {
|
|||
|
|
/**
|
|||
|
|
- * The auto incrementing primary key
|
|||
|
|
+ * The auto incrementing primary key of the inserted row.
|
|||
|
|
+ *
|
|||
|
|
+ * This property can be undefined when the query contains an `on conflict`
|
|||
|
|
+ * clause that makes the query succeed even when nothing gets inserted.
|
|||
|
|
+ *
|
|||
|
|
+ * This property is always undefined on dialects like PostgreSQL that
|
|||
|
|
+ * don't return the inserted id by default. On those dialects you need
|
|||
|
|
+ * to use the {@link ReturningInterface.returning | returning} method.
|
|||
|
|
*/
|
|||
|
|
readonly insertId: bigint | undefined;
|
|||
|
|
/**
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/insert-result.js b/node_modules/kysely/dist/cjs/query-builder/insert-result.js
|
|||
|
|
index 6a3246d..b564a4a 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/insert-result.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/insert-result.js
|
|||
|
|
@@ -26,7 +26,14 @@ exports.InsertResult = void 0;
|
|||
|
|
*/
|
|||
|
|
class InsertResult {
|
|||
|
|
/**
|
|||
|
|
- * The auto incrementing primary key
|
|||
|
|
+ * The auto incrementing primary key of the inserted row.
|
|||
|
|
+ *
|
|||
|
|
+ * This property can be undefined when the query contains an `on conflict`
|
|||
|
|
+ * clause that makes the query succeed even when nothing gets inserted.
|
|||
|
|
+ *
|
|||
|
|
+ * This property is always undefined on dialects like PostgreSQL that
|
|||
|
|
+ * don't return the inserted id by default. On those dialects you need
|
|||
|
|
+ * to use the {@link ReturningInterface.returning | returning} method.
|
|||
|
|
*/
|
|||
|
|
insertId;
|
|||
|
|
/**
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.d.ts b/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.d.ts
|
|||
|
|
index 803563e..cfb9d96 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.d.ts
|
|||
|
|
@@ -4,7 +4,7 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|||
|
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|||
|
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|||
|
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|||
|
|
-import { UpdateExpression } from '../parser/update-set-parser.js';
|
|||
|
|
+import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|||
|
|
import { AnyColumn, SqlBool } from '../util/type-utils.js';
|
|||
|
|
import { WhereInterface } from './where-interface.js';
|
|||
|
|
export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
|
|||
|
|
@@ -435,7 +435,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|||
|
|
* )
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
- doUpdateSet(update: UpdateExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|||
|
|
+ doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|||
|
|
/**
|
|||
|
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
* what the provided function returns.
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.js b/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.js
|
|||
|
|
index cfb3a0b..b3b7e7e 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/on-conflict-builder.js
|
|||
|
|
@@ -175,7 +175,7 @@ class OnConflictBuilder {
|
|||
|
|
return new OnConflictUpdateBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|||
|
|
- updates: (0, update_set_parser_js_1.parseUpdateExpression)(update),
|
|||
|
|
+ updates: (0, update_set_parser_js_1.parseUpdateObjectExpression)(update),
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/update-query-builder.d.ts b/node_modules/kysely/dist/cjs/query-builder/update-query-builder.d.ts
|
|||
|
|
index 3d30eed..a71462a 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/update-query-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/update-query-builder.d.ts
|
|||
|
|
@@ -8,7 +8,7 @@ import { ReferenceExpression } from '../parser/reference-parser.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|||
|
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|||
|
|
-import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|||
|
|
+import { UpdateObject, UpdateObjectFactory, ExtractUpdateTypeFromReferenceExpression } from '../parser/update-set-parser.js';
|
|||
|
|
import { Compilable } from '../util/compilable.js';
|
|||
|
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
import { QueryId } from '../util/query-id.js';
|
|||
|
|
@@ -24,6 +24,7 @@ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../p
|
|||
|
|
import { KyselyTypeError } from '../util/type-error.js';
|
|||
|
|
import { Streamable } from '../util/streamable.js';
|
|||
|
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|||
|
|
+import { ValueExpression } from '../parser/value-parser.js';
|
|||
|
|
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|||
|
|
#private;
|
|||
|
|
constructor(props: UpdateQueryBuilderProps);
|
|||
|
|
@@ -625,6 +626,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|||
|
|
* "id" = $4
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
+ * If you provide two arguments the first one is interpreted as the column
|
|||
|
|
+ * (or other target) and the second as the value:
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * const result = await db
|
|||
|
|
+ * .updateTable('person')
|
|||
|
|
+ * .set('first_name', 'Foo')
|
|||
|
|
+ * // As always, both arguments can be arbitrary expressions or
|
|||
|
|
+ * // callbacks that give you access to an expression builder:
|
|||
|
|
+ * .set(sql`address['postalCode']`, (eb) => eb.val('61710))
|
|||
|
|
+ * .where('id', '=', '1')
|
|||
|
|
+ * .executeTakeFirst()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
* On PostgreSQL you can chain `returning` to the query to get
|
|||
|
|
* the updated rows' columns (or any other expression) as the
|
|||
|
|
* return value:
|
|||
|
|
@@ -682,6 +697,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|||
|
|
*/
|
|||
|
|
set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|||
|
|
set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|||
|
|
+ set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|||
|
|
/**
|
|||
|
|
* Allows you to return data from modified rows.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-builder/update-query-builder.js b/node_modules/kysely/dist/cjs/query-builder/update-query-builder.js
|
|||
|
|
index 1207bfd..6d24d8f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-builder/update-query-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-builder/update-query-builder.js
|
|||
|
|
@@ -65,10 +65,10 @@ class UpdateQueryBuilder {
|
|||
|
|
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
- set(update) {
|
|||
|
|
+ set(...args) {
|
|||
|
|
return new UpdateQueryBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
- queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateExpression)(update)),
|
|||
|
|
+ queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdate)(...args)),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
returning(selection) {
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.d.ts b/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.d.ts
|
|||
|
|
index dbd954a..2f73125 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.d.ts
|
|||
|
|
@@ -48,7 +48,7 @@ import { RootOperationNode, QueryCompiler } from './query-compiler.js';
|
|||
|
|
import { HavingNode } from '../operation-node/having-node.js';
|
|||
|
|
import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
|
|||
|
|
import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
|
|||
|
|
-import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
+import { AlterTableColumnAlterationNode, AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
import { DropColumnNode } from '../operation-node/drop-column-node.js';
|
|||
|
|
import { RenameColumnNode } from '../operation-node/rename-column-node.js';
|
|||
|
|
import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|||
|
|
@@ -88,6 +88,11 @@ import { JSONPathNode } from '../operation-node/json-path-node.js';
|
|||
|
|
import { JSONPathLegNode } from '../operation-node/json-path-leg-node.js';
|
|||
|
|
import { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';
|
|||
|
|
import { TupleNode } from '../operation-node/tuple-node.js';
|
|||
|
|
+import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
+import { TriggerEventNode } from '../operation-node/trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from '../operation-node/trigger-order-node.js';
|
|||
|
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|||
|
|
#private;
|
|||
|
|
protected get numParameters(): number;
|
|||
|
|
@@ -124,6 +129,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|||
|
|
protected visitTable(node: TableNode): void;
|
|||
|
|
protected visitSchemableIdentifier(node: SchemableIdentifierNode): void;
|
|||
|
|
protected visitCreateTable(node: CreateTableNode): void;
|
|||
|
|
+ protected visitCreateTrigger(node: CreateTriggerNode): void;
|
|||
|
|
+ protected visitTriggerEvent(node: TriggerEventNode): void;
|
|||
|
|
+ protected visitTriggerOrder(node: TriggerOrderNode): void;
|
|||
|
|
+ protected visitDropTrigger(node: DropTriggerNode): void;
|
|||
|
|
protected visitColumnDefinition(node: ColumnDefinitionNode): void;
|
|||
|
|
protected getAutoIncrement(): string;
|
|||
|
|
protected visitReferences(node: ReferencesNode): void;
|
|||
|
|
@@ -184,6 +193,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|||
|
|
protected visitJSONPath(node: JSONPathNode): void;
|
|||
|
|
protected visitJSONPathLeg(node: JSONPathLegNode): void;
|
|||
|
|
protected visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|||
|
|
+ protected visitAddIndex(node: AddIndexNode): void;
|
|||
|
|
protected append(str: string): void;
|
|||
|
|
protected appendValue(parameter: unknown): void;
|
|||
|
|
protected getLeftIdentifierWrapper(): string;
|
|||
|
|
@@ -197,4 +207,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|||
|
|
protected addParameter(parameter: unknown): void;
|
|||
|
|
protected appendImmediateValue(value: unknown): void;
|
|||
|
|
protected sortSelectModifiers(arr: SelectModifierNode[]): ReadonlyArray<SelectModifierNode>;
|
|||
|
|
+ protected compileColumnAlterations(columnAlterations: readonly AlterTableColumnAlterationNode[]): void;
|
|||
|
|
+ /**
|
|||
|
|
+ * controls whether the dialect adds a "type" keyword before a column's new data
|
|||
|
|
+ * type in an ALTER TABLE statement.
|
|||
|
|
+ */
|
|||
|
|
+ protected announcesNewColumnDataType(): boolean;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.js b/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.js
|
|||
|
|
index faf80c6..e1c4561 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-compiler/default-query-compiler.js
|
|||
|
|
@@ -1,6 +1,7 @@
|
|||
|
|
"use strict";
|
|||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
exports.DefaultQueryCompiler = void 0;
|
|||
|
|
+const create_table_node_js_1 = require("../operation-node/create-table-node.js");
|
|||
|
|
const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
|
|||
|
|
const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
|
|||
|
|
const operator_node_js_1 = require("../operation-node/operator-node.js");
|
|||
|
|
@@ -32,6 +33,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
const wrapInParens = this.parentNode !== undefined &&
|
|||
|
|
!parens_node_js_1.ParensNode.is(this.parentNode) &&
|
|||
|
|
!insert_query_node_js_1.InsertQueryNode.is(this.parentNode) &&
|
|||
|
|
+ !create_table_node_js_1.CreateTableNode.is(this.parentNode) &&
|
|||
|
|
!create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
|
|||
|
|
!set_operation_node_js_1.SetOperationNode.is(this.parentNode);
|
|||
|
|
if (this.parentNode === undefined && node.explain) {
|
|||
|
|
@@ -348,17 +350,83 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
this.append('if not exists ');
|
|||
|
|
}
|
|||
|
|
this.visitNode(node.table);
|
|||
|
|
- this.append(' (');
|
|||
|
|
- this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|||
|
|
- this.append(')');
|
|||
|
|
- if (node.onCommit) {
|
|||
|
|
- this.append(' on commit ');
|
|||
|
|
- this.append(node.onCommit);
|
|||
|
|
+ if (node.selectQuery) {
|
|||
|
|
+ this.append(' as ');
|
|||
|
|
+ this.visitNode(node.selectQuery);
|
|||
|
|
}
|
|||
|
|
- if (node.endModifiers && node.endModifiers.length > 0) {
|
|||
|
|
- this.append(' ');
|
|||
|
|
- this.compileList(node.endModifiers, ' ');
|
|||
|
|
+ else {
|
|||
|
|
+ this.append(' (');
|
|||
|
|
+ this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|||
|
|
+ this.append(')');
|
|||
|
|
+ if (node.onCommit) {
|
|||
|
|
+ this.append(' on commit ');
|
|||
|
|
+ this.append(node.onCommit);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.endModifiers && node.endModifiers.length > 0) {
|
|||
|
|
+ this.append(' ');
|
|||
|
|
+ this.compileList(node.endModifiers, ' ');
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ visitCreateTrigger(node) {
|
|||
|
|
+ if (!node.time)
|
|||
|
|
+ throw new Error('Trigger time is required.');
|
|||
|
|
+ if (!node.events)
|
|||
|
|
+ throw new Error('Trigger event is required.');
|
|||
|
|
+ if (!node.table)
|
|||
|
|
+ throw new Error('Trigger table is required.');
|
|||
|
|
+ this.append('create ');
|
|||
|
|
+ if (node.temporary) {
|
|||
|
|
+ this.append('temporary ');
|
|||
|
|
}
|
|||
|
|
+ if (node.orReplace) {
|
|||
|
|
+ this.append('or replace ');
|
|||
|
|
+ }
|
|||
|
|
+ this.append('trigger ');
|
|||
|
|
+ if (node.ifNotExists) {
|
|||
|
|
+ this.append('if not exists ');
|
|||
|
|
+ }
|
|||
|
|
+ this.visitNode(node.name);
|
|||
|
|
+ this.append(` ${node.time} `);
|
|||
|
|
+ this.compileList(node.events, ' or ');
|
|||
|
|
+ this.append(' on ');
|
|||
|
|
+ this.visitNode(node.table);
|
|||
|
|
+ if (node.forEach)
|
|||
|
|
+ this.append(` for each ${node.forEach} `);
|
|||
|
|
+ if (node.when) {
|
|||
|
|
+ this.append(' when ');
|
|||
|
|
+ this.visitNode(node.when);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.order)
|
|||
|
|
+ this.visitNode(node.order);
|
|||
|
|
+ if (node.queries) {
|
|||
|
|
+ this.append(' begin ');
|
|||
|
|
+ this.compileList(node.queries, '; ');
|
|||
|
|
+ this.append('; ');
|
|||
|
|
+ this.append('end');
|
|||
|
|
+ }
|
|||
|
|
+ else if (node.function) {
|
|||
|
|
+ this.append(' execute function ');
|
|||
|
|
+ this.visitNode(node.function);
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ visitTriggerEvent(node) {
|
|||
|
|
+ this.append(`${node.event} `);
|
|||
|
|
+ if (node.event === 'update' && node.columns) {
|
|||
|
|
+ this.append('of ');
|
|||
|
|
+ this.compileList(node.columns, ', ');
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ visitTriggerOrder(node) {
|
|||
|
|
+ this.append(`${node.order} `);
|
|||
|
|
+ this.visitNode(node.otherTriggerName);
|
|||
|
|
+ }
|
|||
|
|
+ visitDropTrigger(node) {
|
|||
|
|
+ this.append('drop trigger ');
|
|||
|
|
+ if (node.ifExists) {
|
|||
|
|
+ this.append('if exists ');
|
|||
|
|
+ }
|
|||
|
|
+ this.visitNode(node.name);
|
|||
|
|
}
|
|||
|
|
visitColumnDefinition(node) {
|
|||
|
|
this.visitNode(node.column);
|
|||
|
|
@@ -385,6 +453,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
if (node.unique) {
|
|||
|
|
this.append(' unique');
|
|||
|
|
}
|
|||
|
|
+ if (node.nullsNotDistinct) {
|
|||
|
|
+ this.append(' nulls not distinct');
|
|||
|
|
+ }
|
|||
|
|
if (node.primaryKey) {
|
|||
|
|
this.append(' primary key');
|
|||
|
|
}
|
|||
|
|
@@ -565,6 +636,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
this.compileList(node.columns);
|
|||
|
|
this.append(')');
|
|||
|
|
}
|
|||
|
|
+ if (node.nullsNotDistinct) {
|
|||
|
|
+ this.append(' nulls not distinct');
|
|||
|
|
+ }
|
|||
|
|
if (node.where) {
|
|||
|
|
this.append(' ');
|
|||
|
|
this.visitNode(node.where);
|
|||
|
|
@@ -617,7 +691,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
this.visitNode(node.name);
|
|||
|
|
this.append(' ');
|
|||
|
|
}
|
|||
|
|
- this.append('unique (');
|
|||
|
|
+ this.append('unique');
|
|||
|
|
+ if (node.nullsNotDistinct) {
|
|||
|
|
+ this.append(' nulls not distinct');
|
|||
|
|
+ }
|
|||
|
|
+ this.append(' (');
|
|||
|
|
this.compileList(node.columns);
|
|||
|
|
this.append(')');
|
|||
|
|
}
|
|||
|
|
@@ -698,7 +776,13 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
this.visitNode(node.dropConstraint);
|
|||
|
|
}
|
|||
|
|
if (node.columnAlterations) {
|
|||
|
|
- this.compileList(node.columnAlterations);
|
|||
|
|
+ this.compileColumnAlterations(node.columnAlterations);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.addIndex) {
|
|||
|
|
+ this.visitNode(node.addIndex);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.dropIndex) {
|
|||
|
|
+ this.visitNode(node.dropIndex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
visitAddColumn(node) {
|
|||
|
|
@@ -720,7 +804,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
this.visitNode(node.column);
|
|||
|
|
this.append(' ');
|
|||
|
|
if (node.dataType) {
|
|||
|
|
- this.append('type ');
|
|||
|
|
+ if (this.announcesNewColumnDataType()) {
|
|||
|
|
+ this.append('type ');
|
|||
|
|
+ }
|
|||
|
|
this.visitNode(node.dataType);
|
|||
|
|
if (node.dataTypeExpression) {
|
|||
|
|
this.append('using ');
|
|||
|
|
@@ -1006,6 +1092,23 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
this.visitNode(node.values[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
+ visitAddIndex(node) {
|
|||
|
|
+ this.append('add ');
|
|||
|
|
+ if (node.unique) {
|
|||
|
|
+ this.append('unique ');
|
|||
|
|
+ }
|
|||
|
|
+ this.append('index ');
|
|||
|
|
+ this.visitNode(node.name);
|
|||
|
|
+ if (node.columns) {
|
|||
|
|
+ this.append(' (');
|
|||
|
|
+ this.compileList(node.columns);
|
|||
|
|
+ this.append(')');
|
|||
|
|
+ }
|
|||
|
|
+ if (node.using) {
|
|||
|
|
+ this.append(' using ');
|
|||
|
|
+ this.visitNode(node.using);
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
append(str) {
|
|||
|
|
this.#sql += str;
|
|||
|
|
}
|
|||
|
|
@@ -1079,6 +1182,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|||
|
|
: 1);
|
|||
|
|
return (0, object_utils_js_1.freeze)(arr);
|
|||
|
|
}
|
|||
|
|
+ compileColumnAlterations(columnAlterations) {
|
|||
|
|
+ this.compileList(columnAlterations);
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * controls whether the dialect adds a "type" keyword before a column's new data
|
|||
|
|
+ * type in an ALTER TABLE statement.
|
|||
|
|
+ */
|
|||
|
|
+ announcesNewColumnDataType() {
|
|||
|
|
+ return true;
|
|||
|
|
+ }
|
|||
|
|
}
|
|||
|
|
exports.DefaultQueryCompiler = DefaultQueryCompiler;
|
|||
|
|
const SELECT_MODIFIER_SQL = (0, object_utils_js_1.freeze)({
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/query-compiler/query-compiler.d.ts b/node_modules/kysely/dist/cjs/query-compiler/query-compiler.d.ts
|
|||
|
|
index e3a8555..e96bd90 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/query-compiler/query-compiler.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/query-compiler/query-compiler.d.ts
|
|||
|
|
@@ -2,17 +2,19 @@ import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
import { CreateIndexNode } from '../operation-node/create-index-node.js';
|
|||
|
|
import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
|
|||
|
|
import { CreateTableNode } from '../operation-node/create-table-node.js';
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
import { CreateTypeNode } from '../operation-node/create-type-node.js';
|
|||
|
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|||
|
|
import { DropIndexNode } from '../operation-node/drop-index-node.js';
|
|||
|
|
import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
|
|||
|
|
import { DropTableNode } from '../operation-node/drop-table-node.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
import { DropTypeNode } from '../operation-node/drop-type-node.js';
|
|||
|
|
import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { RawNode } from '../operation-node/raw-node.js';
|
|||
|
|
import { CompiledQuery } from './compiled-query.js';
|
|||
|
|
-export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode;
|
|||
|
|
+export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode | CreateTriggerNode | DropTriggerNode;
|
|||
|
|
/**
|
|||
|
|
* a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/alter-table-add-index-builder.d.ts b/node_modules/kysely/dist/cjs/schema/alter-table-add-index-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..b297698
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/alter-table-add-index-builder.d.ts
|
|||
|
|
@@ -0,0 +1,104 @@
|
|||
|
|
+import { Expression } from '../expression/expression.js';
|
|||
|
|
+import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
+import { IndexType } from '../operation-node/create-index-node.js';
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { OrderedColumnName } from '../parser/reference-parser.js';
|
|||
|
|
+import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|||
|
|
+import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
+import { Compilable } from '../util/compilable.js';
|
|||
|
|
+import { QueryId } from '../util/query-id.js';
|
|||
|
|
+export declare class AlterTableAddIndexBuilder implements OperationNodeSource, Compilable {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: AlterTableAddIndexBuilderProps);
|
|||
|
|
+ /**
|
|||
|
|
+ * Makes the index unique.
|
|||
|
|
+ */
|
|||
|
|
+ unique(): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a column to the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|||
|
|
+ * for specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .createIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .column('age desc')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ column<CL extends string>(column: OrderedColumnName<CL>): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies a list of columns for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link column} for adding a single column or {@link expression} for
|
|||
|
|
+ * specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .columns(['first_name', 'age desc'])
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ columns<CL extends string>(columns: OrderedColumnName<CL>[]): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies an arbitrary expression for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * import { sql } from 'kysely'
|
|||
|
|
+ *
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_index')
|
|||
|
|
+ * .expression(sql`(first_name < 'Sami')`)
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ expression(expression: Expression<any>): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies the index type.
|
|||
|
|
+ */
|
|||
|
|
+ using(indexType: IndexType): AlterTableAddIndexBuilder;
|
|||
|
|
+ using(indexType: string): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call<T>(func: (qb: this) => T): T;
|
|||
|
|
+ toOperationNode(): AlterTableNode;
|
|||
|
|
+ compile(): CompiledQuery;
|
|||
|
|
+ execute(): Promise<void>;
|
|||
|
|
+}
|
|||
|
|
+export interface AlterTableAddIndexBuilderProps {
|
|||
|
|
+ readonly queryId: QueryId;
|
|||
|
|
+ readonly executor: QueryExecutor;
|
|||
|
|
+ readonly node: AlterTableNode;
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/alter-table-add-index-builder.js b/node_modules/kysely/dist/cjs/schema/alter-table-add-index-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..005284b
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/alter-table-add-index-builder.js
|
|||
|
|
@@ -0,0 +1,146 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.AlterTableAddIndexBuilder = void 0;
|
|||
|
|
+const add_index_node_js_1 = require("../operation-node/add-index-node.js");
|
|||
|
|
+const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
|
|||
|
|
+const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|||
|
|
+const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+const prevent_await_js_1 = require("../util/prevent-await.js");
|
|||
|
|
+class AlterTableAddIndexBuilder {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = (0, object_utils_js_1.freeze)(props);
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Makes the index unique.
|
|||
|
|
+ */
|
|||
|
|
+ unique() {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: add_index_node_js_1.AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|||
|
|
+ unique: true,
|
|||
|
|
+ }),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a column to the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|||
|
|
+ * for specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .createIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .column('age desc')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ column(column) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: add_index_node_js_1.AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [(0, reference_parser_js_1.parseOrderedColumnName)(column)]),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies a list of columns for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link column} for adding a single column or {@link expression} for
|
|||
|
|
+ * specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .columns(['first_name', 'age desc'])
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ columns(columns) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: add_index_node_js_1.AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(reference_parser_js_1.parseOrderedColumnName)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies an arbitrary expression for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * import { sql } from 'kysely'
|
|||
|
|
+ *
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_index')
|
|||
|
|
+ * .expression(sql`(first_name < 'Sami')`)
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ expression(expression) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: add_index_node_js_1.AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [expression.toOperationNode()]),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ using(indexType) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: add_index_node_js_1.AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|||
|
|
+ using: raw_node_js_1.RawNode.createWithSql(indexType),
|
|||
|
|
+ }),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call(func) {
|
|||
|
|
+ return func(this);
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ compile() {
|
|||
|
|
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ async execute() {
|
|||
|
|
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+exports.AlterTableAddIndexBuilder = AlterTableAddIndexBuilder;
|
|||
|
|
+(0, prevent_await_js_1.preventAwait)(AlterTableAddIndexBuilder, "don't await AlterTableAddIndexBuilder instances directly. To execute the query you need to call `execute`");
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/alter-table-builder.d.ts b/node_modules/kysely/dist/cjs/schema/alter-table-builder.d.ts
|
|||
|
|
index b0726ca..4453c5b 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/alter-table-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/alter-table-builder.d.ts
|
|||
|
|
@@ -11,6 +11,8 @@ import { AlterColumnBuilderCallback } from './alter-column-builder.js';
|
|||
|
|
import { AlterTableExecutor } from './alter-table-executor.js';
|
|||
|
|
import { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';
|
|||
|
|
import { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';
|
|||
|
|
+import { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';
|
|||
|
|
+import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `alter table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -35,7 +37,7 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|||
|
|
/**
|
|||
|
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|||
|
|
+ addUniqueConstraint(constraintName: string, columns: string[], build?: UniqueConstraintNodeBuilderCallback): AlterTableExecutor;
|
|||
|
|
/**
|
|||
|
|
* See {@link CreateTableBuilder.addCheckConstraint}
|
|||
|
|
*/
|
|||
|
|
@@ -53,6 +55,44 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|||
|
|
*/
|
|||
|
|
addPrimaryKeyConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|||
|
|
dropConstraint(constraintName: string): AlterTableDropConstraintBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to add index to table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .addIndex('person_email_index')
|
|||
|
|
+ * .column('email')
|
|||
|
|
+ * .unique()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add unique index `person_email_index` (`email`)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ addIndex(indexName: string): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to drop index from table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .dropIndex('person_email_index')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` drop index `test_first_name_index`
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ dropIndex(indexName: string): AlterTableExecutor;
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/alter-table-builder.js b/node_modules/kysely/dist/cjs/schema/alter-table-builder.js
|
|||
|
|
index a3fb975..0c586d8 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/alter-table-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/alter-table-builder.js
|
|||
|
|
@@ -25,6 +25,10 @@ const alter_table_executor_js_1 = require("./alter-table-executor.js");
|
|||
|
|
const alter_table_add_foreign_key_constraint_builder_js_1 = require("./alter-table-add-foreign-key-constraint-builder.js");
|
|||
|
|
const alter_table_drop_constraint_builder_js_1 = require("./alter-table-drop-constraint-builder.js");
|
|||
|
|
const primary_constraint_node_js_1 = require("../operation-node/primary-constraint-node.js");
|
|||
|
|
+const drop_index_node_js_1 = require("../operation-node/drop-index-node.js");
|
|||
|
|
+const add_index_node_js_1 = require("../operation-node/add-index-node.js");
|
|||
|
|
+const alter_table_add_index_builder_js_1 = require("./alter-table-add-index-builder.js");
|
|||
|
|
+const unique_constraint_builder_js_1 = require("./unique-constraint-builder.js");
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `alter table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -85,11 +89,12 @@ class AlterTableBuilder {
|
|||
|
|
/**
|
|||
|
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName, columns) {
|
|||
|
|
+ addUniqueConstraint(constraintName, columns, build = object_utils_js_1.noop) {
|
|||
|
|
+ const uniqueConstraintBuilder = build(new unique_constraint_builder_js_1.UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)));
|
|||
|
|
return new alter_table_executor_js_1.AlterTableExecutor({
|
|||
|
|
...this.#props,
|
|||
|
|
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
- addConstraint: add_constraint_node_js_1.AddConstraintNode.create(unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)),
|
|||
|
|
+ addConstraint: add_constraint_node_js_1.AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
@@ -136,6 +141,58 @@ class AlterTableBuilder {
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to add index to table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .addIndex('person_email_index')
|
|||
|
|
+ * .column('email')
|
|||
|
|
+ * .unique()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add unique index `person_email_index` (`email`)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ addIndex(indexName) {
|
|||
|
|
+ return new alter_table_add_index_builder_js_1.AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: add_index_node_js_1.AddIndexNode.create(indexName),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to drop index from table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .dropIndex('person_email_index')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` drop index `test_first_name_index`
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ dropIndex(indexName) {
|
|||
|
|
+ return new alter_table_executor_js_1.AlterTableExecutor({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ dropIndex: drop_index_node_js_1.DropIndexNode.create(indexName),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/column-definition-builder.d.ts b/node_modules/kysely/dist/cjs/schema/column-definition-builder.d.ts
|
|||
|
|
index 2a99c4c..a76104c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/column-definition-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/column-definition-builder.d.ts
|
|||
|
|
@@ -183,6 +183,31 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier.
|
|||
|
|
+ * Should be used with `unique` constraint.
|
|||
|
|
+ *
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('person')
|
|||
|
|
+ * .addColumn('id', 'integer', col => col.primaryKey())
|
|||
|
|
+ * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create table "person" (
|
|||
|
|
+ * "id" integer primary key,
|
|||
|
|
+ * "first_name" varchar(30) unique nulls not distinct
|
|||
|
|
+ * )
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct(): ColumnDefinitionBuilder;
|
|||
|
|
/**
|
|||
|
|
* This can be used to add any additional SQL to the end of the column definition.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/column-definition-builder.js b/node_modules/kysely/dist/cjs/schema/column-definition-builder.js
|
|||
|
|
index aebbf98..eef0fcc 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/column-definition-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/column-definition-builder.js
|
|||
|
|
@@ -258,6 +258,33 @@ class ColumnDefinitionBuilder {
|
|||
|
|
modifyFront(modifier) {
|
|||
|
|
return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier.
|
|||
|
|
+ * Should be used with `unique` constraint.
|
|||
|
|
+ *
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('person')
|
|||
|
|
+ * .addColumn('id', 'integer', col => col.primaryKey())
|
|||
|
|
+ * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create table "person" (
|
|||
|
|
+ * "id" integer primary key,
|
|||
|
|
+ * "first_name" varchar(30) unique nulls not distinct
|
|||
|
|
+ * )
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct() {
|
|||
|
|
+ return new ColumnDefinitionBuilder(column_definition_node_js_1.ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* This can be used to add any additional SQL to the end of the column definition.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/create-index-builder.d.ts b/node_modules/kysely/dist/cjs/schema/create-index-builder.d.ts
|
|||
|
|
index 27502c4..b44e116 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/create-index-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/create-index-builder.d.ts
|
|||
|
|
@@ -22,6 +22,29 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
|
|||
|
|
* Makes the index unique.
|
|||
|
|
*/
|
|||
|
|
unique(): CreateIndexBuilder<C>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier to index.
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createIndex('person_first_name_index')
|
|||
|
|
+ * .on('person')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .nullsNotDistinct()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create index "person_first_name_index"
|
|||
|
|
+ * on "test" ("first_name")
|
|||
|
|
+ * nulls not distinct;
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct(): CreateIndexBuilder<C>;
|
|||
|
|
/**
|
|||
|
|
* Specifies the table for the index.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/create-index-builder.js b/node_modules/kysely/dist/cjs/schema/create-index-builder.js
|
|||
|
|
index 4de7de6..e0e00a0 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/create-index-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/create-index-builder.js
|
|||
|
|
@@ -39,6 +39,36 @@ class CreateIndexBuilder {
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier to index.
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createIndex('person_first_name_index')
|
|||
|
|
+ * .on('person')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .nullsNotDistinct()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create index "person_first_name_index"
|
|||
|
|
+ * on "test" ("first_name")
|
|||
|
|
+ * nulls not distinct;
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct() {
|
|||
|
|
+ return new CreateIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_index_node_js_1.CreateIndexNode.cloneWith(this.#props.node, {
|
|||
|
|
+ nullsNotDistinct: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Specifies the table for the index.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/create-table-builder.d.ts b/node_modules/kysely/dist/cjs/schema/create-table-builder.d.ts
|
|||
|
|
index e160575..3b7e7ce 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/create-table-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/create-table-builder.d.ts
|
|||
|
|
@@ -8,6 +8,7 @@ import { QueryId } from '../util/query-id.js';
|
|||
|
|
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|||
|
|
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|||
|
|
import { Expression } from '../expression/expression.js';
|
|||
|
|
+import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `create table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -56,7 +57,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* With this method, it's once again good to remember that Kysely just builds the
|
|||
|
|
- * query and doesn't provide the same API for all databses. For example, some
|
|||
|
|
+ * query and doesn't provide the same API for all databases. For example, some
|
|||
|
|
* databases like older MySQL don't support the `references` statement in the
|
|||
|
|
* column definition. Instead foreign key constraints need to be defined in the
|
|||
|
|
* `create table` query. See the next example:
|
|||
|
|
@@ -104,8 +105,13 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|||
|
|
* ```ts
|
|||
|
|
* addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
|
|||
|
|
* ```
|
|||
|
|
+ *
|
|||
|
|
+ * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
|
|||
|
|
+ * ```
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName: string, columns: C[]): CreateTableBuilder<TB, C>;
|
|||
|
|
+ addUniqueConstraint(constraintName: string, columns: C[], build?: UniqueConstraintNodeBuilderCallback): CreateTableBuilder<TB, C>;
|
|||
|
|
/**
|
|||
|
|
* Adds a check constraint.
|
|||
|
|
*
|
|||
|
|
@@ -205,6 +211,26 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
modifyEnd(modifier: Expression<any>): CreateTableBuilder<TB, C>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Allows to create table from `select` query.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('copy')
|
|||
|
|
+ * .temporary()
|
|||
|
|
+ * .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create temporary table "copy" as
|
|||
|
|
+ * select "first_name", "last_name" from "person"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ as(expression: Expression<unknown>): CreateTableBuilder<string, never>;
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/create-table-builder.js b/node_modules/kysely/dist/cjs/schema/create-table-builder.js
|
|||
|
|
index 5053177..73590bf 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/create-table-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/create-table-builder.js
|
|||
|
|
@@ -15,6 +15,8 @@ const unique_constraint_node_js_1 = require("../operation-node/unique-constraint
|
|||
|
|
const check_constraint_node_js_1 = require("../operation-node/check-constraint-node.js");
|
|||
|
|
const table_parser_js_1 = require("../parser/table-parser.js");
|
|||
|
|
const on_commit_action_parse_js_1 = require("../parser/on-commit-action-parse.js");
|
|||
|
|
+const unique_constraint_builder_js_1 = require("./unique-constraint-builder.js");
|
|||
|
|
+const expression_parser_js_1 = require("../parser/expression-parser.js");
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `create table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -86,7 +88,7 @@ class CreateTableBuilder {
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* With this method, it's once again good to remember that Kysely just builds the
|
|||
|
|
- * query and doesn't provide the same API for all databses. For example, some
|
|||
|
|
+ * query and doesn't provide the same API for all databases. For example, some
|
|||
|
|
* databases like older MySQL don't support the `references` statement in the
|
|||
|
|
* column definition. Instead foreign key constraints need to be defined in the
|
|||
|
|
* `create table` query. See the next example:
|
|||
|
|
@@ -145,11 +147,17 @@ class CreateTableBuilder {
|
|||
|
|
* ```ts
|
|||
|
|
* addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
|
|||
|
|
* ```
|
|||
|
|
+ *
|
|||
|
|
+ * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
|
|||
|
|
+ * ```
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName, columns) {
|
|||
|
|
+ addUniqueConstraint(constraintName, columns, build = object_utils_js_1.noop) {
|
|||
|
|
+ const uniqueConstraintBuilder = build(new unique_constraint_builder_js_1.UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)));
|
|||
|
|
return new CreateTableBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
- node: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.node, unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)),
|
|||
|
|
+ node: create_table_node_js_1.CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode()),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
@@ -272,6 +280,33 @@ class CreateTableBuilder {
|
|||
|
|
node: create_table_node_js_1.CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode()),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * Allows to create table from `select` query.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('copy')
|
|||
|
|
+ * .temporary()
|
|||
|
|
+ * .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create temporary table "copy" as
|
|||
|
|
+ * select "first_name", "last_name" from "person"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ as(expression) {
|
|||
|
|
+ return new CreateTableBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_table_node_js_1.CreateTableNode.cloneWith(this.#props.node, {
|
|||
|
|
+ selectQuery: (0, expression_parser_js_1.parseExpression)(expression),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/create-trigger-builder.d.ts b/node_modules/kysely/dist/cjs/schema/create-trigger-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..c65746a
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/create-trigger-builder.d.ts
|
|||
|
|
@@ -0,0 +1,68 @@
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|||
|
|
+import { ReferenceExpression } from '../parser/reference-parser.js';
|
|||
|
|
+import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|||
|
|
+import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
+import { Compilable } from '../util/compilable.js';
|
|||
|
|
+import { QueryId } from '../util/query-id.js';
|
|||
|
|
+import { AnyColumn, AnyColumnWithTable, SqlBool } from '../util/type-utils.js';
|
|||
|
|
+import { TriggerEvent } from '../operation-node/trigger-event-node.js';
|
|||
|
|
+import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|||
|
|
+import { TriggerQueryCreator } from '../trigger-query-creator.js';
|
|||
|
|
+export type DatabaseWithOldNewTables<DB, TB extends keyof DB> = DB & {
|
|||
|
|
+ old: DB[TB];
|
|||
|
|
+ new: DB[TB];
|
|||
|
|
+};
|
|||
|
|
+/**
|
|||
|
|
+ * This builder can be used to create a `create table` query.
|
|||
|
|
+ */
|
|||
|
|
+export declare class CreateTriggerBuilder<DB, TB extends keyof DB> implements OperationNodeSource, Compilable {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: CreateTriggerBuilderProps);
|
|||
|
|
+ before(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ after(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ insteadOf(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ addEvent<E extends TriggerEvent>(event: E, columns?: E extends 'update' ? AnyColumn<DB, TB>[] : never[]): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ forEachRow(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ forEachStatement(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ follows(otherTriggerName: string): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ precedes(otherTriggerName: string): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies the table for the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ onTable<TE extends keyof DB & string>(table: TE, schema?: string): CreateTriggerBuilder<DB, TE>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "temporary" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * Use this to create a temporary trigger.
|
|||
|
|
+ */
|
|||
|
|
+ temporary(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "if not exists" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * If the trigger already exists, no error is thrown if this method has been called.
|
|||
|
|
+ */
|
|||
|
|
+ ifNotExists(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Only supported on PostgreSQL
|
|||
|
|
+ */
|
|||
|
|
+ orReplace(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a query to the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ addQuery(build: QueryCreatorCallback<DB, TB>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ function(name: string, args: ReadonlyArray<ReferenceExpression<any, any>>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ when<RE extends AnyColumnWithTable<DatabaseWithOldNewTables<DB, TB>, 'old' | 'new'>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ when(factory: ExpressionOrFactory<DatabaseWithOldNewTables<DB, TB>, 'old' | 'new', SqlBool>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ $call<T>(func: (qb: this) => T): T;
|
|||
|
|
+ toOperationNode(): CreateTriggerNode;
|
|||
|
|
+ compile(): CompiledQuery;
|
|||
|
|
+ execute(): Promise<void>;
|
|||
|
|
+}
|
|||
|
|
+export interface CreateTriggerBuilderProps {
|
|||
|
|
+ readonly queryId: QueryId;
|
|||
|
|
+ readonly executor: QueryExecutor;
|
|||
|
|
+ readonly node: CreateTriggerNode;
|
|||
|
|
+}
|
|||
|
|
+export type QueryCreatorCallback<DB, TB extends keyof DB> = (creator: TriggerQueryCreator<DB, TB>) => OperationNodeSource;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/create-trigger-builder.js b/node_modules/kysely/dist/cjs/schema/create-trigger-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..ebc814c
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/create-trigger-builder.js
|
|||
|
|
@@ -0,0 +1,180 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.CreateTriggerBuilder = void 0;
|
|||
|
|
+const create_trigger_node_js_1 = require("../operation-node/create-trigger-node.js");
|
|||
|
|
+const query_node_js_1 = require("../operation-node/query-node.js");
|
|||
|
|
+const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|||
|
|
+const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|||
|
|
+const immediate_value_transformer_js_1 = require("../plugin/immediate-value/immediate-value-transformer.js");
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+const prevent_await_js_1 = require("../util/prevent-await.js");
|
|||
|
|
+const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|||
|
|
+const trigger_order_node_js_1 = require("../operation-node/trigger-order-node.js");
|
|||
|
|
+const trigger_event_node_js_1 = require("../operation-node/trigger-event-node.js");
|
|||
|
|
+const function_node_js_1 = require("../operation-node/function-node.js");
|
|||
|
|
+const trigger_query_creator_js_1 = require("../trigger-query-creator.js");
|
|||
|
|
+const table_node_js_1 = require("../operation-node/table-node.js");
|
|||
|
|
+/**
|
|||
|
|
+ * This builder can be used to create a `create table` query.
|
|||
|
|
+ */
|
|||
|
|
+class CreateTriggerBuilder {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = (0, object_utils_js_1.freeze)(props);
|
|||
|
|
+ }
|
|||
|
|
+ before() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ time: 'before',
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ after() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ time: 'after',
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ insteadOf() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ time: 'instead of',
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ addEvent(event, columns) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWithEvent(this.#props.node, trigger_event_node_js_1.TriggerEventNode.create(event, columns?.map(reference_parser_js_1.parseOrderedColumnName))),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ forEachRow() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ forEach: `row`,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ forEachStatement() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ forEach: `statement`,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ follows(otherTriggerName) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ order: trigger_order_node_js_1.TriggerOrderNode.create('follows', identifier_node_js_1.IdentifierNode.create(otherTriggerName)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ precedes(otherTriggerName) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ order: trigger_order_node_js_1.TriggerOrderNode.create('precedes', identifier_node_js_1.IdentifierNode.create(otherTriggerName)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies the table for the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ onTable(table, schema) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ table: schema
|
|||
|
|
+ ? table_node_js_1.TableNode.createWithSchema(schema, table)
|
|||
|
|
+ : table_node_js_1.TableNode.create(table),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "temporary" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * Use this to create a temporary trigger.
|
|||
|
|
+ */
|
|||
|
|
+ temporary() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ temporary: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "if not exists" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * If the trigger already exists, no error is thrown if this method has been called.
|
|||
|
|
+ */
|
|||
|
|
+ ifNotExists() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ ifNotExists: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Only supported on PostgreSQL
|
|||
|
|
+ */
|
|||
|
|
+ orReplace() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ orReplace: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a query to the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ addQuery(build) {
|
|||
|
|
+ const node = build(new trigger_query_creator_js_1.TriggerQueryCreator({ executor: this.#props.executor })).toOperationNode();
|
|||
|
|
+ if (!query_node_js_1.QueryNode.is(node))
|
|||
|
|
+ throw new Error('Must be a query node.');
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWithQuery(this.#props.node, node),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ function(name, args) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ function: function_node_js_1.FunctionNode.create(name, (0, reference_parser_js_1.parseReferenceExpressionOrList)(args)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ when(...args) {
|
|||
|
|
+ const transformer = new immediate_value_transformer_js_1.ImmediateValueTransformer();
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ when: transformer.transformNode((0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ $call(func) {
|
|||
|
|
+ return func(this);
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ compile() {
|
|||
|
|
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ async execute() {
|
|||
|
|
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+exports.CreateTriggerBuilder = CreateTriggerBuilder;
|
|||
|
|
+(0, prevent_await_js_1.preventAwait)(CreateTriggerBuilder, "don't await CreateTriggerBuilder instances directly. To execute the query you need to call `execute`");
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/drop-trigger-builder.d.ts b/node_modules/kysely/dist/cjs/schema/drop-trigger-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..b0e3fce
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/drop-trigger-builder.d.ts
|
|||
|
|
@@ -0,0 +1,25 @@
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|||
|
|
+import { Compilable } from '../util/compilable.js';
|
|||
|
|
+import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
+import { QueryId } from '../util/query-id.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
+export declare class DropTriggerBuilder implements OperationNodeSource, Compilable {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: DropTriggerBuilderProps);
|
|||
|
|
+ ifExists(): DropTriggerBuilder;
|
|||
|
|
+ cascade(): DropTriggerBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call<T>(func: (qb: this) => T): T;
|
|||
|
|
+ toOperationNode(): DropTriggerNode;
|
|||
|
|
+ compile(): CompiledQuery;
|
|||
|
|
+ execute(): Promise<void>;
|
|||
|
|
+}
|
|||
|
|
+export interface DropTriggerBuilderProps {
|
|||
|
|
+ readonly queryId: QueryId;
|
|||
|
|
+ readonly executor: QueryExecutor;
|
|||
|
|
+ readonly node: DropTriggerNode;
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/drop-trigger-builder.js b/node_modules/kysely/dist/cjs/schema/drop-trigger-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..1c55383
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/drop-trigger-builder.js
|
|||
|
|
@@ -0,0 +1,46 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.DropTriggerBuilder = void 0;
|
|||
|
|
+const prevent_await_js_1 = require("../util/prevent-await.js");
|
|||
|
|
+const object_utils_js_1 = require("../util/object-utils.js");
|
|||
|
|
+const drop_trigger_node_js_1 = require("../operation-node/drop-trigger-node.js");
|
|||
|
|
+class DropTriggerBuilder {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = (0, object_utils_js_1.freeze)(props);
|
|||
|
|
+ }
|
|||
|
|
+ ifExists() {
|
|||
|
|
+ return new DropTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: drop_trigger_node_js_1.DropTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ ifExists: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ cascade() {
|
|||
|
|
+ return new DropTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: drop_trigger_node_js_1.DropTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ cascade: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call(func) {
|
|||
|
|
+ return func(this);
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ compile() {
|
|||
|
|
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ async execute() {
|
|||
|
|
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+exports.DropTriggerBuilder = DropTriggerBuilder;
|
|||
|
|
+(0, prevent_await_js_1.preventAwait)(DropTriggerBuilder, "don't await DropTriggerBuilder instances directly. To execute the query you need to call `execute`");
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/schema.d.ts b/node_modules/kysely/dist/cjs/schema/schema.d.ts
|
|||
|
|
index 8634b84..19cf68c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/schema.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/schema.d.ts
|
|||
|
|
@@ -11,10 +11,12 @@ import { DropViewBuilder } from './drop-view-builder.js';
|
|||
|
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|||
|
|
import { CreateTypeBuilder } from './create-type-builder.js';
|
|||
|
|
import { DropTypeBuilder } from './drop-type-builder.js';
|
|||
|
|
+import { CreateTriggerBuilder } from './create-trigger-builder.js';
|
|||
|
|
+import { DropTriggerBuilder } from './drop-trigger-builder.js';
|
|||
|
|
/**
|
|||
|
|
* Provides methods for building database schema.
|
|||
|
|
*/
|
|||
|
|
-export declare class SchemaModule {
|
|||
|
|
+export declare class SchemaModule<DB> {
|
|||
|
|
#private;
|
|||
|
|
constructor(executor: QueryExecutor);
|
|||
|
|
/**
|
|||
|
|
@@ -201,16 +203,18 @@ export declare class SchemaModule {
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
dropType(typeName: string): DropTypeBuilder;
|
|||
|
|
+ createTrigger(name: string): CreateTriggerBuilder<DB, keyof DB>;
|
|||
|
|
+ dropTrigger(triggerName: string): DropTriggerBuilder;
|
|||
|
|
/**
|
|||
|
|
* Returns a copy of this schema module with the given plugin installed.
|
|||
|
|
*/
|
|||
|
|
- withPlugin(plugin: KyselyPlugin): SchemaModule;
|
|||
|
|
+ withPlugin(plugin: KyselyPlugin): SchemaModule<DB>;
|
|||
|
|
/**
|
|||
|
|
* Returns a copy of this schema module without any plugins.
|
|||
|
|
*/
|
|||
|
|
- withoutPlugins(): SchemaModule;
|
|||
|
|
+ withoutPlugins(): SchemaModule<DB>;
|
|||
|
|
/**
|
|||
|
|
* See {@link QueryCreator.withSchema}
|
|||
|
|
*/
|
|||
|
|
- withSchema(schema: string): SchemaModule;
|
|||
|
|
+ withSchema(schema: string): SchemaModule<DB>;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/schema.js b/node_modules/kysely/dist/cjs/schema/schema.js
|
|||
|
|
index 052622f..7b979ab 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/schema/schema.js
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/schema.js
|
|||
|
|
@@ -27,6 +27,11 @@ const drop_type_builder_js_1 = require("./drop-type-builder.js");
|
|||
|
|
const create_type_node_js_1 = require("../operation-node/create-type-node.js");
|
|||
|
|
const drop_type_node_js_1 = require("../operation-node/drop-type-node.js");
|
|||
|
|
const identifier_parser_js_1 = require("../parser/identifier-parser.js");
|
|||
|
|
+const create_trigger_builder_js_1 = require("./create-trigger-builder.js");
|
|||
|
|
+const create_trigger_node_js_1 = require("../operation-node/create-trigger-node.js");
|
|||
|
|
+const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|||
|
|
+const drop_trigger_node_js_1 = require("../operation-node/drop-trigger-node.js");
|
|||
|
|
+const drop_trigger_builder_js_1 = require("./drop-trigger-builder.js");
|
|||
|
|
/**
|
|||
|
|
* Provides methods for building database schema.
|
|||
|
|
*/
|
|||
|
|
@@ -285,6 +290,20 @@ class SchemaModule {
|
|||
|
|
node: drop_type_node_js_1.DropTypeNode.create((0, identifier_parser_js_1.parseSchemableIdentifier)(typeName)),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ createTrigger(name) {
|
|||
|
|
+ return new create_trigger_builder_js_1.CreateTriggerBuilder({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#executor,
|
|||
|
|
+ node: create_trigger_node_js_1.CreateTriggerNode.create(identifier_node_js_1.IdentifierNode.create(name)),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ dropTrigger(triggerName) {
|
|||
|
|
+ return new drop_trigger_builder_js_1.DropTriggerBuilder({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#executor,
|
|||
|
|
+ node: drop_trigger_node_js_1.DropTriggerNode.create((0, identifier_parser_js_1.parseSchemableIdentifier)(triggerName)),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Returns a copy of this schema module with the given plugin installed.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/unique-constraint-builder.d.ts b/node_modules/kysely/dist/cjs/schema/unique-constraint-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..4362213
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/unique-constraint-builder.d.ts
|
|||
|
|
@@ -0,0 +1,14 @@
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
|
|||
|
|
+export declare class UniqueConstraintNodeBuilder implements OperationNodeSource {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(node: UniqueConstraintNode);
|
|||
|
|
+ toOperationNode(): UniqueConstraintNode;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` to the unique constraint definition
|
|||
|
|
+ *
|
|||
|
|
+ * Supported by PostgreSQL dialect only
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct(): UniqueConstraintNodeBuilder;
|
|||
|
|
+}
|
|||
|
|
+export type UniqueConstraintNodeBuilderCallback = (builder: UniqueConstraintNodeBuilder) => UniqueConstraintNodeBuilder;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/schema/unique-constraint-builder.js b/node_modules/kysely/dist/cjs/schema/unique-constraint-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..9931354
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/schema/unique-constraint-builder.js
|
|||
|
|
@@ -0,0 +1,24 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.UniqueConstraintNodeBuilder = void 0;
|
|||
|
|
+const unique_constraint_node_js_1 = require("../operation-node/unique-constraint-node.js");
|
|||
|
|
+const prevent_await_js_1 = require("../util/prevent-await.js");
|
|||
|
|
+class UniqueConstraintNodeBuilder {
|
|||
|
|
+ #node;
|
|||
|
|
+ constructor(node) {
|
|||
|
|
+ this.#node = node;
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#node;
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` to the unique constraint definition
|
|||
|
|
+ *
|
|||
|
|
+ * Supported by PostgreSQL dialect only
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct() {
|
|||
|
|
+ return new UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+exports.UniqueConstraintNodeBuilder = UniqueConstraintNodeBuilder;
|
|||
|
|
+(0, prevent_await_js_1.preventAwait)(UniqueConstraintNodeBuilder, "don't await UniqueConstraintNodeBuilder instances directly.");
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/trigger-query-creator.d.ts b/node_modules/kysely/dist/cjs/trigger-query-creator.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..51d0b2f
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/trigger-query-creator.d.ts
|
|||
|
|
@@ -0,0 +1,35 @@
|
|||
|
|
+import { SelectQueryBuilder } from './query-builder/select-query-builder.js';
|
|||
|
|
+import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
|
|||
|
|
+import { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';
|
|||
|
|
+import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
|
|||
|
|
+import { TableExpression, From, FromTables, TableReference, ExtractTableAlias, AnyAliasedTable, PickTableWithAlias } from './parser/table-parser.js';
|
|||
|
|
+import { InsertResult } from './query-builder/insert-result.js';
|
|||
|
|
+import { DeleteResult } from './query-builder/delete-result.js';
|
|||
|
|
+import { UpdateResult } from './query-builder/update-result.js';
|
|||
|
|
+import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|||
|
|
+import { CallbackSelection, SelectCallback, SelectExpression, Selection } from './parser/select-parser.js';
|
|||
|
|
+import { QueryCreatorProps } from './query-creator.js';
|
|||
|
|
+import { DatabaseWithOldNewTables } from './schema/create-trigger-builder.js';
|
|||
|
|
+export declare class TriggerQueryCreator<DB, TB extends keyof DB> {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: QueryCreatorProps);
|
|||
|
|
+ selectFrom<TE extends keyof DB & string>(from: TE[]): SelectQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TE>, FromTables<DB, never, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DatabaseWithOldNewTables<DB, TB> & PickTableWithAlias<DatabaseWithOldNewTables<DB, TB>, TE>, ExtractTableAlias<DB, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TE>, FromTables<DB, never, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectNoFrom<SE extends SelectExpression<DB, never>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|||
|
|
+ selectNoFrom<CB extends SelectCallback<DB, never>>(callback: CB): SelectQueryBuilder<DB, never, CallbackSelection<DB, never, CB>>;
|
|||
|
|
+ selectNoFrom<SE extends SelectExpression<DB, never>>(selection: SE): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|||
|
|
+ insertInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
|
|||
|
|
+ replaceInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
|
|||
|
|
+ deleteFrom<TR extends keyof DB & string>(from: TR[]): DeleteQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ deleteFrom<TR extends TableReference<DB>>(tables: TR[]): DeleteQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TR>, FromTables<DB, never, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ deleteFrom<TR extends keyof DB & string>(from: TR): DeleteQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TR>, FromTables<DB, never, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ updateTable<TR extends keyof DB & string>(table: TR): UpdateQueryBuilder<DB, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>;
|
|||
|
|
+ updateTable<TR extends AnyAliasedTable<DB>>(table: TR): UpdateQueryBuilder<DB & PickTableWithAlias<DB, TR>, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>;
|
|||
|
|
+ updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, FromTables<DB, never, TR>, UpdateResult>;
|
|||
|
|
+ withPlugin(plugin: KyselyPlugin): TriggerQueryCreator<DB, TB>;
|
|||
|
|
+ withoutPlugins(): TriggerQueryCreator<DB, TB>;
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/trigger-query-creator.js b/node_modules/kysely/dist/cjs/trigger-query-creator.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..5d4d073
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/trigger-query-creator.js
|
|||
|
|
@@ -0,0 +1,76 @@
|
|||
|
|
+"use strict";
|
|||
|
|
+Object.defineProperty(exports, "__esModule", { value: true });
|
|||
|
|
+exports.TriggerQueryCreator = void 0;
|
|||
|
|
+const select_query_builder_js_1 = require("./query-builder/select-query-builder.js");
|
|||
|
|
+const insert_query_builder_js_1 = require("./query-builder/insert-query-builder.js");
|
|||
|
|
+const delete_query_builder_js_1 = require("./query-builder/delete-query-builder.js");
|
|||
|
|
+const update_query_builder_js_1 = require("./query-builder/update-query-builder.js");
|
|||
|
|
+const delete_query_node_js_1 = require("./operation-node/delete-query-node.js");
|
|||
|
|
+const insert_query_node_js_1 = require("./operation-node/insert-query-node.js");
|
|||
|
|
+const select_query_node_js_1 = require("./operation-node/select-query-node.js");
|
|||
|
|
+const update_query_node_js_1 = require("./operation-node/update-query-node.js");
|
|||
|
|
+const table_parser_js_1 = require("./parser/table-parser.js");
|
|||
|
|
+const query_id_js_1 = require("./util/query-id.js");
|
|||
|
|
+const object_utils_js_1 = require("./util/object-utils.js");
|
|||
|
|
+const select_parser_js_1 = require("./parser/select-parser.js");
|
|||
|
|
+class TriggerQueryCreator {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = (0, object_utils_js_1.freeze)(props);
|
|||
|
|
+ }
|
|||
|
|
+ selectFrom(from) {
|
|||
|
|
+ return (0, select_query_builder_js_1.createSelectQueryBuilder)({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: select_query_node_js_1.SelectQueryNode.createFrom((0, table_parser_js_1.parseTableExpressionOrList)(from), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ selectNoFrom(selection) {
|
|||
|
|
+ return (0, select_query_builder_js_1.createSelectQueryBuilder)({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(select_query_node_js_1.SelectQueryNode.create(this.#props.withNode), (0, select_parser_js_1.parseSelectArg)(selection)),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ insertInto(table) {
|
|||
|
|
+ return new insert_query_builder_js_1.InsertQueryBuilder({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: insert_query_node_js_1.InsertQueryNode.create((0, table_parser_js_1.parseTable)(table), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ replaceInto(table) {
|
|||
|
|
+ return new insert_query_builder_js_1.InsertQueryBuilder({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: insert_query_node_js_1.InsertQueryNode.create((0, table_parser_js_1.parseTable)(table), this.#props.withNode, true),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ deleteFrom(tables) {
|
|||
|
|
+ return new delete_query_builder_js_1.DeleteQueryBuilder({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: delete_query_node_js_1.DeleteQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(tables), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ updateTable(table) {
|
|||
|
|
+ return new update_query_builder_js_1.UpdateQueryBuilder({
|
|||
|
|
+ queryId: (0, query_id_js_1.createQueryId)(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: update_query_node_js_1.UpdateQueryNode.create((0, table_parser_js_1.parseTableExpression)(table), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ withPlugin(plugin) {
|
|||
|
|
+ return new TriggerQueryCreator({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ executor: this.#props.executor.withPlugin(plugin),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ withoutPlugins() {
|
|||
|
|
+ return new TriggerQueryCreator({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ executor: this.#props.executor.withoutPlugins(),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+exports.TriggerQueryCreator = TriggerQueryCreator;
|
|||
|
|
diff --git a/node_modules/kysely/dist/cjs/util/object-utils.d.ts b/node_modules/kysely/dist/cjs/util/object-utils.d.ts
|
|||
|
|
index 1b9f563..c9fa82b 100644
|
|||
|
|
--- a/node_modules/kysely/dist/cjs/util/object-utils.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/cjs/util/object-utils.d.ts
|
|||
|
|
@@ -6,7 +6,7 @@ export declare function isNumber(obj: unknown): obj is number;
|
|||
|
|
export declare function isBoolean(obj: unknown): obj is boolean;
|
|||
|
|
export declare function isNull(obj: unknown): obj is null;
|
|||
|
|
export declare function isDate(obj: unknown): obj is Date;
|
|||
|
|
-export declare function isBigInt(obj: unknown): obj is BigInt;
|
|||
|
|
+export declare function isBigInt(obj: unknown): obj is bigint;
|
|||
|
|
export declare function isBuffer(obj: unknown): obj is {
|
|||
|
|
length: number;
|
|||
|
|
};
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.d.ts b/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.d.ts
|
|||
|
|
index dc87916..e3fb628 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.d.ts
|
|||
|
|
@@ -7,6 +7,14 @@ import { DialectAdapter, MigrationLockOptions } from './dialect-adapter.js';
|
|||
|
|
* they are added and there will be less breaking changes.
|
|||
|
|
*/
|
|||
|
|
export declare abstract class DialectAdapterBase implements DialectAdapter {
|
|||
|
|
+ /**
|
|||
|
|
+ * Whether or not this dialect supports `if not exists` in creation of tables/schemas/views/etc.
|
|||
|
|
+ *
|
|||
|
|
+ * If this is false, Kysely's internal migrations tables and schemas are created
|
|||
|
|
+ * without `if not exists` in migrations. This is not a problem if the dialect
|
|||
|
|
+ * supports transactional DDL.
|
|||
|
|
+ */
|
|||
|
|
+ get supportsCreateIfNotExists(): boolean;
|
|||
|
|
/**
|
|||
|
|
* Whether or not this dialect supports transactional DDL.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.js b/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.js
|
|||
|
|
index b5f7843..7065ce6 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/dialect-adapter-base.js
|
|||
|
|
@@ -6,6 +6,9 @@
|
|||
|
|
* they are added and there will be less breaking changes.
|
|||
|
|
*/
|
|||
|
|
export class DialectAdapterBase {
|
|||
|
|
+ get supportsCreateIfNotExists() {
|
|||
|
|
+ return true;
|
|||
|
|
+ }
|
|||
|
|
get supportsTransactionalDdl() {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/dialect-adapter.d.ts b/node_modules/kysely/dist/esm/dialect/dialect-adapter.d.ts
|
|||
|
|
index 73a925a..fe7f1b3 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/dialect-adapter.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/dialect-adapter.d.ts
|
|||
|
|
@@ -8,6 +8,14 @@ import { Kysely } from '../kysely.js';
|
|||
|
|
* it. For that there's a `supportsTransactionalDdl` boolean in this interface.
|
|||
|
|
*/
|
|||
|
|
export interface DialectAdapter {
|
|||
|
|
+ /**
|
|||
|
|
+ * Whether or not this dialect supports `if not exists` in creation of tables/schemas/views/etc.
|
|||
|
|
+ *
|
|||
|
|
+ * If this is false, Kysely's internal migrations tables and schemas are created
|
|||
|
|
+ * without `if not exists` in migrations. This is not a problem if the dialect
|
|||
|
|
+ * supports transactional DDL.
|
|||
|
|
+ */
|
|||
|
|
+ readonly supportsCreateIfNotExists: boolean;
|
|||
|
|
/**
|
|||
|
|
* Whether or not this dialect supports transactional DDL.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js b/node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js
|
|||
|
|
index c83b381..3bcddb6 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js
|
|||
|
|
@@ -26,7 +26,7 @@ export class PostgresDriver {
|
|||
|
|
// The driver must take care of calling `onCreateConnection` when a new
|
|||
|
|
// connection is created. The `pg` module doesn't provide an async hook
|
|||
|
|
// for the connection creation. We need to call the method explicitly.
|
|||
|
|
- if (this.#config?.onCreateConnection) {
|
|||
|
|
+ if (this.#config.onCreateConnection) {
|
|||
|
|
await this.#config.onCreateConnection(connection);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.d.ts b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.d.ts
|
|||
|
|
index 69a0a7d..550df53 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.d.ts
|
|||
|
|
@@ -1,7 +1,7 @@
|
|||
|
|
import { Kysely } from '../../kysely.js';
|
|||
|
|
import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|||
|
|
import { MigrationLockOptions } from '../dialect-adapter.js';
|
|||
|
|
-export declare class SqliteAdapter implements DialectAdapterBase {
|
|||
|
|
+export declare class SqliteAdapter extends DialectAdapterBase {
|
|||
|
|
/**
|
|||
|
|
* Whether or not this dialect supports transactional DDL.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.js b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.js
|
|||
|
|
index f095ebb..4f1b71f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-adapter.js
|
|||
|
|
@@ -1,5 +1,6 @@
|
|||
|
|
/// <reference types="./sqlite-adapter.d.ts" />
|
|||
|
|
-export class SqliteAdapter {
|
|||
|
|
+import { DialectAdapterBase } from '../dialect-adapter-base.js';
|
|||
|
|
+export class SqliteAdapter extends DialectAdapterBase {
|
|||
|
|
get supportsTransactionalDdl() {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts
|
|||
|
|
index 810af98..a873682 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts
|
|||
|
|
@@ -37,4 +37,5 @@ export interface SqliteStatement {
|
|||
|
|
changes: number | bigint;
|
|||
|
|
lastInsertRowid: number | bigint;
|
|||
|
|
};
|
|||
|
|
+ iterate(parameters: ReadonlyArray<unknown>): IterableIterator<unknown>;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-driver.js b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-driver.js
|
|||
|
|
index 23f21e3..d20935f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-driver.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/dialect/sqlite/sqlite-driver.js
|
|||
|
|
@@ -1,4 +1,5 @@
|
|||
|
|
/// <reference types="./sqlite-driver.d.ts" />
|
|||
|
|
+import { SelectQueryNode } from '../../operation-node/select-query-node.js';
|
|||
|
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|||
|
|
import { freeze, isFunction } from '../../util/object-utils.js';
|
|||
|
|
export class SqliteDriver {
|
|||
|
|
@@ -67,8 +68,20 @@ class SqliteConnection {
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
- async *streamQuery() {
|
|||
|
|
- throw new Error("Sqlite driver doesn't support streaming");
|
|||
|
|
+ async *streamQuery(compiledQuery, _chunkSize) {
|
|||
|
|
+ const { sql, parameters, query } = compiledQuery;
|
|||
|
|
+ const stmt = this.#db.prepare(sql);
|
|||
|
|
+ if (SelectQueryNode.is(query)) {
|
|||
|
|
+ const iter = stmt.iterate(parameters);
|
|||
|
|
+ for (const row of iter) {
|
|||
|
|
+ yield {
|
|||
|
|
+ rows: [row],
|
|||
|
|
+ };
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ else {
|
|||
|
|
+ throw new Error('Sqlite driver only supports streaming of select queries');
|
|||
|
|
+ }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
class ConnectionMutex {
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/driver/driver.d.ts b/node_modules/kysely/dist/esm/driver/driver.d.ts
|
|||
|
|
index 00babcb..11d2d55 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/driver/driver.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/driver/driver.d.ts
|
|||
|
|
@@ -40,5 +40,5 @@ export interface Driver {
|
|||
|
|
export interface TransactionSettings {
|
|||
|
|
readonly isolationLevel?: IsolationLevel;
|
|||
|
|
}
|
|||
|
|
-export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable"];
|
|||
|
|
+export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable", "snapshot"];
|
|||
|
|
export type IsolationLevel = ArrayItemType<typeof TRANSACTION_ISOLATION_LEVELS>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/driver/driver.js b/node_modules/kysely/dist/esm/driver/driver.js
|
|||
|
|
index 88c2a07..2ae1469 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/driver/driver.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/driver/driver.js
|
|||
|
|
@@ -4,4 +4,5 @@ export const TRANSACTION_ISOLATION_LEVELS = [
|
|||
|
|
'read committed',
|
|||
|
|
'repeatable read',
|
|||
|
|
'serializable',
|
|||
|
|
+ 'snapshot',
|
|||
|
|
];
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/driver/single-connection-provider.js b/node_modules/kysely/dist/esm/driver/single-connection-provider.js
|
|||
|
|
index aafebb7..ef341ee 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/driver/single-connection-provider.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/driver/single-connection-provider.js
|
|||
|
|
@@ -1,4 +1,5 @@
|
|||
|
|
/// <reference types="./single-connection-provider.d.ts" />
|
|||
|
|
+const ignoreError = () => { };
|
|||
|
|
export class SingleConnectionProvider {
|
|||
|
|
#connection;
|
|||
|
|
#runningPromise;
|
|||
|
|
@@ -7,17 +8,15 @@ export class SingleConnectionProvider {
|
|||
|
|
}
|
|||
|
|
async provideConnection(consumer) {
|
|||
|
|
while (this.#runningPromise) {
|
|||
|
|
- await this.#runningPromise;
|
|||
|
|
+ await this.#runningPromise.catch(ignoreError);
|
|||
|
|
}
|
|||
|
|
- const promise = this.#run(consumer);
|
|||
|
|
- this.#runningPromise = promise
|
|||
|
|
- .then(() => {
|
|||
|
|
- this.#runningPromise = undefined;
|
|||
|
|
- })
|
|||
|
|
- .catch(() => {
|
|||
|
|
+ // `#runningPromise` must be set to undefined before it's
|
|||
|
|
+ // resolved or rejected. Otherwise the while loop above
|
|||
|
|
+ // will misbehave.
|
|||
|
|
+ this.#runningPromise = this.#run(consumer).finally(() => {
|
|||
|
|
this.#runningPromise = undefined;
|
|||
|
|
});
|
|||
|
|
- return promise;
|
|||
|
|
+ return this.#runningPromise;
|
|||
|
|
}
|
|||
|
|
// Run the runner in an async function to make sure it doesn't
|
|||
|
|
// throw synchronous errors.
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/expression/expression-builder.d.ts b/node_modules/kysely/dist/esm/expression/expression-builder.d.ts
|
|||
|
|
index 7b4a340..07933a1 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/expression/expression-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/expression/expression-builder.d.ts
|
|||
|
|
@@ -14,6 +14,7 @@ import { JSONPathBuilder } from '../query-builder/json-path-builder.js';
|
|||
|
|
import { OperandExpression } from '../parser/expression-parser.js';
|
|||
|
|
import { CallbackSelection, SelectCallback, SelectExpression, Selection } from '../parser/select-parser.js';
|
|||
|
|
import { RefTuple2, RefTuple3, RefTuple4, RefTuple5, ValTuple2, ValTuple3, ValTuple4, ValTuple5 } from '../parser/tuple-parser.js';
|
|||
|
|
+import { Selectable } from '../util/column-type.js';
|
|||
|
|
export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|||
|
|
/**
|
|||
|
|
* Creates a binary expression.
|
|||
|
|
@@ -344,6 +345,30 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|||
|
|
*/
|
|||
|
|
ref<RE extends StringReference<DB, TB>>(reference: RE): ExpressionWrapper<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|||
|
|
ref<RE extends StringReference<DB, TB>>(reference: RE, op: JSONOperatorWith$): JSONPathBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Creates a table reference.
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.selectFrom('person')
|
|||
|
|
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
+ * .select(eb => [
|
|||
|
|
+ * 'person.id',
|
|||
|
|
+ * sql<Pet[]>`jsonb_agg(${eb.table('pet')})`.as('pets')
|
|||
|
|
+ * ])
|
|||
|
|
+ * .groupBy('person.id')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * select "person"."id", jsonb_agg("pet") as "pets"
|
|||
|
|
+ * from "person"
|
|||
|
|
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
+ * group by "person"."id"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ table<T extends TB & string>(table: T): ExpressionWrapper<DB, TB, Selectable<DB[T]>>;
|
|||
|
|
/**
|
|||
|
|
* Returns a value expression.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/expression/expression-builder.js b/node_modules/kysely/dist/esm/expression/expression-builder.js
|
|||
|
|
index f550460..86b0098 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/expression/expression-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/expression/expression-builder.js
|
|||
|
|
@@ -1,7 +1,7 @@
|
|||
|
|
/// <reference types="./expression-builder.d.ts" />
|
|||
|
|
import { createSelectQueryBuilder, } from '../query-builder/select-query-builder.js';
|
|||
|
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|||
|
|
-import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|||
|
|
+import { parseTableExpressionOrList, parseTable, } from '../parser/table-parser.js';
|
|||
|
|
import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
|
|||
|
|
import { createQueryId } from '../util/query-id.js';
|
|||
|
|
import { createFunctionModule, } from '../query-builder/function-module.js';
|
|||
|
|
@@ -11,7 +11,7 @@ import { ParensNode } from '../operation-node/parens-node.js';
|
|||
|
|
import { ExpressionWrapper } from './expression-wrapper.js';
|
|||
|
|
import { OperatorNode, } from '../operation-node/operator-node.js';
|
|||
|
|
import { parseUnaryOperation } from '../parser/unary-operation-parser.js';
|
|||
|
|
-import { parseSafeImmediateValue, parseValueExpression, parseValueExpressionOrList, } from '../parser/value-parser.js';
|
|||
|
|
+import { parseSafeImmediateValue, parseValueExpression, } from '../parser/value-parser.js';
|
|||
|
|
import { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';
|
|||
|
|
import { CaseBuilder } from '../query-builder/case-builder.js';
|
|||
|
|
import { CaseNode } from '../operation-node/case-node.js';
|
|||
|
|
@@ -58,8 +58,11 @@ export function createExpressionBuilder(executor = NOOP_QUERY_EXECUTOR) {
|
|||
|
|
}
|
|||
|
|
return new JSONPathBuilder(parseJSONReference(reference, op));
|
|||
|
|
},
|
|||
|
|
+ table(table) {
|
|||
|
|
+ return new ExpressionWrapper(parseTable(table));
|
|||
|
|
+ },
|
|||
|
|
val(value) {
|
|||
|
|
- return new ExpressionWrapper(parseValueExpressionOrList(value));
|
|||
|
|
+ return new ExpressionWrapper(parseValueExpression(value));
|
|||
|
|
},
|
|||
|
|
refTuple(...values) {
|
|||
|
|
return new ExpressionWrapper(TupleNode.create(values.map(parseReferenceExpression)));
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/index.d.ts b/node_modules/kysely/dist/esm/index.d.ts
|
|||
|
|
index cf166f8..37cf701 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/index.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/index.d.ts
|
|||
|
|
@@ -72,6 +72,12 @@ export * from './dialect/postgres/postgres-dialect.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-introspector.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-adapter.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-adapter.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-dialect-config.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-dialect.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-driver.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-introspector.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-query-compiler.js';
|
|||
|
|
export * from './query-compiler/default-query-compiler.js';
|
|||
|
|
export * from './query-compiler/query-compiler.js';
|
|||
|
|
export * from './migration/migrator.js';
|
|||
|
|
@@ -176,7 +182,7 @@ export * from './util/compilable.js';
|
|||
|
|
export * from './util/explainable.js';
|
|||
|
|
export * from './util/streamable.js';
|
|||
|
|
export * from './util/log.js';
|
|||
|
|
-export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, } from './util/type-utils.js';
|
|||
|
|
+export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, Nullable, } from './util/type-utils.js';
|
|||
|
|
export * from './util/infer-result.js';
|
|||
|
|
export { logOnce } from './util/log-once.js';
|
|||
|
|
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/index.js b/node_modules/kysely/dist/esm/index.js
|
|||
|
|
index 1033125..e4f5004 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/index.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/index.js
|
|||
|
|
@@ -73,6 +73,12 @@ export * from './dialect/postgres/postgres-dialect.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-query-compiler.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-introspector.js';
|
|||
|
|
export * from './dialect/sqlite/sqlite-adapter.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-adapter.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-dialect-config.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-dialect.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-driver.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-introspector.js';
|
|||
|
|
+export * from './dialect/mssql/mssql-query-compiler.js';
|
|||
|
|
export * from './query-compiler/default-query-compiler.js';
|
|||
|
|
export * from './query-compiler/query-compiler.js';
|
|||
|
|
export * from './migration/migrator.js';
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/kysely.d.ts b/node_modules/kysely/dist/esm/kysely.d.ts
|
|||
|
|
index 52e909a..8e45b8c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/kysely.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/kysely.d.ts
|
|||
|
|
@@ -66,7 +66,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|||
|
|
/**
|
|||
|
|
* Returns the {@link SchemaModule} module for building database schema.
|
|||
|
|
*/
|
|||
|
|
- get schema(): SchemaModule;
|
|||
|
|
+ get schema(): SchemaModule<DB>;
|
|||
|
|
/**
|
|||
|
|
* Returns a the {@link DynamicModule} module.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/migration/migrator.js b/node_modules/kysely/dist/esm/migration/migrator.js
|
|||
|
|
index 8c7a0b4..7d3a26a 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/migration/migrator.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/migration/migrator.js
|
|||
|
|
@@ -218,10 +218,7 @@ export class Migrator {
|
|||
|
|
}
|
|||
|
|
if (!(await this.#doesSchemaExists())) {
|
|||
|
|
try {
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
- .createSchema(this.#migrationTableSchema)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
- .execute();
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|||
|
|
}
|
|||
|
|
catch (error) {
|
|||
|
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create schema`
|
|||
|
|
@@ -237,20 +234,15 @@ export class Migrator {
|
|||
|
|
if (!(await this.#doesTableExists(this.#migrationTable))) {
|
|||
|
|
try {
|
|||
|
|
if (this.#migrationTableSchema) {
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
- .createSchema(this.#migrationTableSchema)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
- .execute();
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));
|
|||
|
|
}
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema
|
|||
|
|
.withPlugin(this.#schemaPlugin)
|
|||
|
|
.createTable(this.#migrationTable)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
.addColumn('name', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|||
|
|
// The migration run time as ISO string. This is not a real date type as we
|
|||
|
|
// can't know which data type is supported by all future dialects.
|
|||
|
|
- .addColumn('timestamp', 'varchar(255)', (col) => col.notNull())
|
|||
|
|
- .execute();
|
|||
|
|
+ .addColumn('timestamp', 'varchar(255)', (col) => col.notNull()));
|
|||
|
|
}
|
|||
|
|
catch (error) {
|
|||
|
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|||
|
|
@@ -265,13 +257,11 @@ export class Migrator {
|
|||
|
|
async #ensureMigrationLockTableExists() {
|
|||
|
|
if (!(await this.#doesTableExists(this.#migrationLockTable))) {
|
|||
|
|
try {
|
|||
|
|
- await this.#props.db.schema
|
|||
|
|
+ await this.#createIfNotExists(this.#props.db.schema
|
|||
|
|
.withPlugin(this.#schemaPlugin)
|
|||
|
|
.createTable(this.#migrationLockTable)
|
|||
|
|
- .ifNotExists()
|
|||
|
|
.addColumn('id', 'varchar(255)', (col) => col.notNull().primaryKey())
|
|||
|
|
- .addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0))
|
|||
|
|
- .execute();
|
|||
|
|
+ .addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0)));
|
|||
|
|
}
|
|||
|
|
catch (error) {
|
|||
|
|
// At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`
|
|||
|
|
@@ -479,6 +469,12 @@ export class Migrator {
|
|||
|
|
}
|
|||
|
|
return { results };
|
|||
|
|
}
|
|||
|
|
+ async #createIfNotExists(qb) {
|
|||
|
|
+ if (this.#props.db.getExecutor().adapter.supportsCreateIfNotExists) {
|
|||
|
|
+ qb = qb.ifNotExists();
|
|||
|
|
+ }
|
|||
|
|
+ await qb.execute();
|
|||
|
|
+ }
|
|||
|
|
}
|
|||
|
|
class MigrationResultSetError extends Error {
|
|||
|
|
#resultSet;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/add-index-node.d.ts b/node_modules/kysely/dist/esm/operation-node/add-index-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..b81f95f
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/add-index-node.d.ts
|
|||
|
|
@@ -0,0 +1,21 @@
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+import { RawNode } from './raw-node.js';
|
|||
|
|
+export type AddIndexNodeProps = Omit<AddIndexNode, 'kind' | 'name'>;
|
|||
|
|
+export interface AddIndexNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'AddIndexNode';
|
|||
|
|
+ readonly name: IdentifierNode;
|
|||
|
|
+ readonly columns?: OperationNode[];
|
|||
|
|
+ readonly unique?: boolean;
|
|||
|
|
+ readonly using?: RawNode;
|
|||
|
|
+ readonly ifNotExists?: boolean;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const AddIndexNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is AddIndexNode;
|
|||
|
|
+ create(name: string): AddIndexNode;
|
|||
|
|
+ cloneWith(node: AddIndexNode, props: AddIndexNodeProps): AddIndexNode;
|
|||
|
|
+ cloneWithColumns(node: AddIndexNode, columns: OperationNode[]): AddIndexNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/add-index-node.js b/node_modules/kysely/dist/esm/operation-node/add-index-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..134b7d8
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/add-index-node.js
|
|||
|
|
@@ -0,0 +1,29 @@
|
|||
|
|
+/// <reference types="./add-index-node.d.ts" />
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export const AddIndexNode = freeze({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'AddIndexNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(name) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ kind: 'AddIndexNode',
|
|||
|
|
+ name: IdentifierNode.create(name)
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(node, props) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...node,
|
|||
|
|
+ ...props,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWithColumns(node, columns) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...node,
|
|||
|
|
+ columns: [...(node.columns || []), ...columns],
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/alter-table-node.d.ts b/node_modules/kysely/dist/esm/operation-node/alter-table-node.d.ts
|
|||
|
|
index 5b03535..b09aca3 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/alter-table-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/alter-table-node.d.ts
|
|||
|
|
@@ -8,7 +8,9 @@ import { AlterColumnNode } from './alter-column-node.js';
|
|||
|
|
import { AddConstraintNode } from './add-constraint-node.js';
|
|||
|
|
import { DropConstraintNode } from './drop-constraint-node.js';
|
|||
|
|
import { ModifyColumnNode } from './modify-column-node.js';
|
|||
|
|
-export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint'>;
|
|||
|
|
+import { DropIndexNode } from './drop-index-node.js';
|
|||
|
|
+import { AddIndexNode } from './add-index-node.js';
|
|||
|
|
+export type AlterTableNodeTableProps = Pick<AlterTableNode, 'renameTo' | 'setSchema' | 'addConstraint' | 'dropConstraint' | 'addIndex' | 'dropIndex'>;
|
|||
|
|
export type AlterTableColumnAlterationNode = RenameColumnNode | AddColumnNode | DropColumnNode | AlterColumnNode | ModifyColumnNode;
|
|||
|
|
export interface AlterTableNode extends OperationNode {
|
|||
|
|
readonly kind: 'AlterTableNode';
|
|||
|
|
@@ -18,6 +20,8 @@ export interface AlterTableNode extends OperationNode {
|
|||
|
|
readonly columnAlterations?: ReadonlyArray<AlterTableColumnAlterationNode>;
|
|||
|
|
readonly addConstraint?: AddConstraintNode;
|
|||
|
|
readonly dropConstraint?: DropConstraintNode;
|
|||
|
|
+ readonly addIndex?: AddIndexNode;
|
|||
|
|
+ readonly dropIndex?: DropIndexNode;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/column-definition-node.d.ts b/node_modules/kysely/dist/esm/operation-node/column-definition-node.d.ts
|
|||
|
|
index 6442d83..b518d35 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/column-definition-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/column-definition-node.d.ts
|
|||
|
|
@@ -20,6 +20,7 @@ export interface ColumnDefinitionNode extends OperationNode {
|
|||
|
|
readonly unsigned?: boolean;
|
|||
|
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
+ readonly nullsNotDistinct?: boolean;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/column-update-node.d.ts b/node_modules/kysely/dist/esm/operation-node/column-update-node.d.ts
|
|||
|
|
index 2e8ab34..bb59937 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/column-update-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/column-update-node.d.ts
|
|||
|
|
@@ -1,8 +1,7 @@
|
|||
|
|
-import { ColumnNode } from './column-node.js';
|
|||
|
|
import { OperationNode } from './operation-node.js';
|
|||
|
|
export interface ColumnUpdateNode extends OperationNode {
|
|||
|
|
readonly kind: 'ColumnUpdateNode';
|
|||
|
|
- readonly column: ColumnNode;
|
|||
|
|
+ readonly column: OperationNode;
|
|||
|
|
readonly value: OperationNode;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
@@ -10,5 +9,5 @@ export interface ColumnUpdateNode extends OperationNode {
|
|||
|
|
*/
|
|||
|
|
export declare const ColumnUpdateNode: Readonly<{
|
|||
|
|
is(node: OperationNode): node is ColumnUpdateNode;
|
|||
|
|
- create(column: ColumnNode, value: OperationNode): ColumnUpdateNode;
|
|||
|
|
+ create(column: OperationNode, value: OperationNode): ColumnUpdateNode;
|
|||
|
|
}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/create-index-node.d.ts b/node_modules/kysely/dist/esm/operation-node/create-index-node.d.ts
|
|||
|
|
index a3a99d1..d474032 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/create-index-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/create-index-node.d.ts
|
|||
|
|
@@ -14,6 +14,7 @@ export interface CreateIndexNode extends OperationNode {
|
|||
|
|
readonly using?: RawNode;
|
|||
|
|
readonly ifNotExists?: boolean;
|
|||
|
|
readonly where?: WhereNode;
|
|||
|
|
+ readonly nullsNotDistinct?: boolean;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/create-table-node.d.ts b/node_modules/kysely/dist/esm/operation-node/create-table-node.d.ts
|
|||
|
|
index cc8ceda..f36036c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/create-table-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/create-table-node.d.ts
|
|||
|
|
@@ -16,6 +16,7 @@ export interface CreateTableNode extends OperationNode {
|
|||
|
|
readonly onCommit?: OnCommitAction;
|
|||
|
|
readonly frontModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
readonly endModifiers?: ReadonlyArray<OperationNode>;
|
|||
|
|
+ readonly selectQuery?: OperationNode;
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/create-trigger-node.d.ts b/node_modules/kysely/dist/esm/operation-node/create-trigger-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..8244954
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/create-trigger-node.d.ts
|
|||
|
|
@@ -0,0 +1,34 @@
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+import { TableNode } from './table-node.js';
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+import { QueryNode } from './query-node.js';
|
|||
|
|
+import { TriggerEventNode } from './trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from './trigger-order-node.js';
|
|||
|
|
+import { FunctionNode } from './function-node.js';
|
|||
|
|
+export type TriggerTime = 'after' | 'before' | 'instead of';
|
|||
|
|
+export type CreateTriggerNodeParams = Omit<CreateTriggerNode, 'kind' | 'name' | 'queries'>;
|
|||
|
|
+export interface CreateTriggerNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'CreateTriggerNode';
|
|||
|
|
+ readonly name: IdentifierNode;
|
|||
|
|
+ readonly queries?: ReadonlyArray<QueryNode>;
|
|||
|
|
+ readonly function?: FunctionNode;
|
|||
|
|
+ readonly time?: TriggerTime;
|
|||
|
|
+ readonly events?: ReadonlyArray<TriggerEventNode>;
|
|||
|
|
+ readonly table?: TableNode;
|
|||
|
|
+ readonly orReplace?: boolean;
|
|||
|
|
+ readonly ifNotExists?: boolean;
|
|||
|
|
+ readonly when?: OperationNode;
|
|||
|
|
+ readonly temporary?: boolean;
|
|||
|
|
+ readonly forEach?: 'row' | 'statement';
|
|||
|
|
+ readonly order?: TriggerOrderNode;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const CreateTriggerNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is CreateTriggerNode;
|
|||
|
|
+ create(name: IdentifierNode): CreateTriggerNode;
|
|||
|
|
+ cloneWithQuery(createTrigger: CreateTriggerNode, query: QueryNode): CreateTriggerNode;
|
|||
|
|
+ cloneWithEvent(createTrigger: CreateTriggerNode, event: TriggerEventNode): CreateTriggerNode;
|
|||
|
|
+ cloneWith(createTrigger: CreateTriggerNode, params: CreateTriggerNodeParams): CreateTriggerNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/create-trigger-node.js b/node_modules/kysely/dist/esm/operation-node/create-trigger-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..90dd0f3
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/create-trigger-node.js
|
|||
|
|
@@ -0,0 +1,34 @@
|
|||
|
|
+/// <reference types="./create-trigger-node.d.ts" />
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export const CreateTriggerNode = freeze({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'CreateTriggerNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(name) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ kind: 'CreateTriggerNode',
|
|||
|
|
+ name,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWithQuery(createTrigger, query) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...createTrigger,
|
|||
|
|
+ queries: freeze([...(createTrigger.queries || []), query]),
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWithEvent(createTrigger, event) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...createTrigger,
|
|||
|
|
+ events: freeze([...(createTrigger.events || []), event]),
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(createTrigger, params) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...createTrigger,
|
|||
|
|
+ ...params,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/drop-trigger-node.d.ts b/node_modules/kysely/dist/esm/operation-node/drop-trigger-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..4e38772
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/drop-trigger-node.d.ts
|
|||
|
|
@@ -0,0 +1,17 @@
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+import { SchemableIdentifierNode } from './schemable-identifier-node.js';
|
|||
|
|
+export type DropTriggerNodeParams = Omit<Partial<DropTriggerNode>, 'kind' | 'name'>;
|
|||
|
|
+export interface DropTriggerNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'DropTriggerNode';
|
|||
|
|
+ readonly name: SchemableIdentifierNode;
|
|||
|
|
+ readonly ifExists?: boolean;
|
|||
|
|
+ readonly cascade?: boolean;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const DropTriggerNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is DropTriggerNode;
|
|||
|
|
+ create(name: SchemableIdentifierNode): DropTriggerNode;
|
|||
|
|
+ cloneWith(dropTrigger: DropTriggerNode, params: DropTriggerNodeParams): DropTriggerNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/drop-trigger-node.js b/node_modules/kysely/dist/esm/operation-node/drop-trigger-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..ebabeb4
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/drop-trigger-node.js
|
|||
|
|
@@ -0,0 +1,22 @@
|
|||
|
|
+/// <reference types="./drop-trigger-node.d.ts" />
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export const DropTriggerNode = freeze({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'DropTriggerNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(name) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ kind: 'DropTriggerNode',
|
|||
|
|
+ name,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(dropTrigger, params) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...dropTrigger,
|
|||
|
|
+ ...params,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.d.ts b/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.d.ts
|
|||
|
|
index 6b3a13c..5d7fd9d 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.d.ts
|
|||
|
|
@@ -85,6 +85,11 @@ import { JSONPathNode } from './json-path-node.js';
|
|||
|
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|||
|
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|||
|
|
import { TupleNode } from './tuple-node.js';
|
|||
|
|
+import { AddIndexNode } from './add-index-node.js';
|
|||
|
|
+import { CreateTriggerNode } from './create-trigger-node.js';
|
|||
|
|
+import { DropTriggerNode } from './drop-trigger-node.js';
|
|||
|
|
+import { TriggerEventNode } from './trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from './trigger-order-node.js';
|
|||
|
|
/**
|
|||
|
|
* Transforms an operation node tree into another one.
|
|||
|
|
*
|
|||
|
|
@@ -139,9 +144,13 @@ export declare class OperationNodeTransformer {
|
|||
|
|
protected transformDeleteQuery(node: DeleteQueryNode): DeleteQueryNode;
|
|||
|
|
protected transformReturning(node: ReturningNode): ReturningNode;
|
|||
|
|
protected transformCreateTable(node: CreateTableNode): CreateTableNode;
|
|||
|
|
+ protected transformCreateTrigger(node: CreateTriggerNode): CreateTriggerNode;
|
|||
|
|
+ protected transformTriggerEvent(node: TriggerEventNode): TriggerEventNode;
|
|||
|
|
+ protected transformTriggerOrder(node: TriggerOrderNode): TriggerOrderNode;
|
|||
|
|
protected transformColumnDefinition(node: ColumnDefinitionNode): ColumnDefinitionNode;
|
|||
|
|
protected transformAddColumn(node: AddColumnNode): AddColumnNode;
|
|||
|
|
protected transformDropTable(node: DropTableNode): DropTableNode;
|
|||
|
|
+ protected transformDropTrigger(node: DropTriggerNode): DropTriggerNode;
|
|||
|
|
protected transformOrderBy(node: OrderByNode): OrderByNode;
|
|||
|
|
protected transformOrderByItem(node: OrderByItemNode): OrderByItemNode;
|
|||
|
|
protected transformGroupBy(node: GroupByNode): GroupByNode;
|
|||
|
|
@@ -199,6 +208,7 @@ export declare class OperationNodeTransformer {
|
|||
|
|
protected transformJSONPathLeg(node: JSONPathLegNode): JSONPathLegNode;
|
|||
|
|
protected transformJSONOperatorChain(node: JSONOperatorChainNode): JSONOperatorChainNode;
|
|||
|
|
protected transformTuple(node: TupleNode): TupleNode;
|
|||
|
|
+ protected transformAddIndex(node: AddIndexNode): AddIndexNode;
|
|||
|
|
protected transformDataType(node: DataTypeNode): DataTypeNode;
|
|||
|
|
protected transformSelectAll(node: SelectAllNode): SelectAllNode;
|
|||
|
|
protected transformIdentifier(node: IdentifierNode): IdentifierNode;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.js b/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.js
|
|||
|
|
index f35075b..9e216f8 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.js
|
|||
|
|
@@ -119,6 +119,11 @@ export class OperationNodeTransformer {
|
|||
|
|
JSONPathLegNode: this.transformJSONPathLeg.bind(this),
|
|||
|
|
JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),
|
|||
|
|
TupleNode: this.transformTuple.bind(this),
|
|||
|
|
+ AddIndexNode: this.transformAddIndex.bind(this),
|
|||
|
|
+ CreateTriggerNode: this.transformCreateTrigger.bind(this),
|
|||
|
|
+ TriggerEventNode: this.transformTriggerEvent.bind(this),
|
|||
|
|
+ TriggerOrderNode: this.transformTriggerOrder.bind(this),
|
|||
|
|
+ DropTriggerNode: this.transformDropTrigger.bind(this),
|
|||
|
|
});
|
|||
|
|
transformNode(node) {
|
|||
|
|
if (!node) {
|
|||
|
|
@@ -295,6 +300,38 @@ export class OperationNodeTransformer {
|
|||
|
|
onCommit: node.onCommit,
|
|||
|
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|||
|
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|||
|
|
+ selectQuery: this.transformNode(node.selectQuery),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ transformCreateTrigger(node) {
|
|||
|
|
+ return requireAllProps({
|
|||
|
|
+ kind: 'CreateTriggerNode',
|
|||
|
|
+ name: this.transformNode(node.name),
|
|||
|
|
+ table: this.transformNode(node.table),
|
|||
|
|
+ ifNotExists: node.ifNotExists,
|
|||
|
|
+ time: node.time,
|
|||
|
|
+ events: this.transformNodeList(node.events),
|
|||
|
|
+ forEach: node.forEach,
|
|||
|
|
+ orReplace: node.orReplace,
|
|||
|
|
+ temporary: node.temporary,
|
|||
|
|
+ queries: this.transformNodeList(node.queries),
|
|||
|
|
+ function: this.transformNode(node.function),
|
|||
|
|
+ when: this.transformNode(node.when),
|
|||
|
|
+ order: this.transformNode(node.order),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ transformTriggerEvent(node) {
|
|||
|
|
+ return requireAllProps({
|
|||
|
|
+ kind: 'TriggerEventNode',
|
|||
|
|
+ event: node.event,
|
|||
|
|
+ columns: this.transformNodeList(node.columns),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ transformTriggerOrder(node) {
|
|||
|
|
+ return requireAllProps({
|
|||
|
|
+ kind: 'TriggerOrderNode',
|
|||
|
|
+ order: node.order,
|
|||
|
|
+ otherTriggerName: this.transformNode(node.otherTriggerName),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformColumnDefinition(node) {
|
|||
|
|
@@ -313,6 +350,7 @@ export class OperationNodeTransformer {
|
|||
|
|
generated: this.transformNode(node.generated),
|
|||
|
|
frontModifiers: this.transformNodeList(node.frontModifiers),
|
|||
|
|
endModifiers: this.transformNodeList(node.endModifiers),
|
|||
|
|
+ nullsNotDistinct: node.nullsNotDistinct,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformAddColumn(node) {
|
|||
|
|
@@ -329,6 +367,14 @@ export class OperationNodeTransformer {
|
|||
|
|
cascade: node.cascade,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ transformDropTrigger(node) {
|
|||
|
|
+ return requireAllProps({
|
|||
|
|
+ kind: 'DropTriggerNode',
|
|||
|
|
+ name: this.transformNode(node.name),
|
|||
|
|
+ ifExists: node.ifExists,
|
|||
|
|
+ cascade: node.cascade,
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
transformOrderBy(node) {
|
|||
|
|
return requireAllProps({
|
|||
|
|
kind: 'OrderByNode',
|
|||
|
|
@@ -414,6 +460,7 @@ export class OperationNodeTransformer {
|
|||
|
|
using: this.transformNode(node.using),
|
|||
|
|
ifNotExists: node.ifNotExists,
|
|||
|
|
where: this.transformNode(node.where),
|
|||
|
|
+ nullsNotDistinct: node.nullsNotDistinct,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformList(node) {
|
|||
|
|
@@ -443,6 +490,7 @@ export class OperationNodeTransformer {
|
|||
|
|
kind: 'UniqueConstraintNode',
|
|||
|
|
columns: this.transformNodeList(node.columns),
|
|||
|
|
name: this.transformNode(node.name),
|
|||
|
|
+ nullsNotDistinct: node.nullsNotDistinct,
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformForeignKeyConstraint(node) {
|
|||
|
|
@@ -531,6 +579,8 @@ export class OperationNodeTransformer {
|
|||
|
|
columnAlterations: this.transformNodeList(node.columnAlterations),
|
|||
|
|
addConstraint: this.transformNode(node.addConstraint),
|
|||
|
|
dropConstraint: this.transformNode(node.dropConstraint),
|
|||
|
|
+ addIndex: this.transformNode(node.addIndex),
|
|||
|
|
+ dropIndex: this.transformNode(node.dropIndex),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
transformDropColumn(node) {
|
|||
|
|
@@ -763,6 +813,16 @@ export class OperationNodeTransformer {
|
|||
|
|
values: this.transformNodeList(node.values),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ transformAddIndex(node) {
|
|||
|
|
+ return requireAllProps({
|
|||
|
|
+ kind: 'AddIndexNode',
|
|||
|
|
+ name: this.transformNode(node.name),
|
|||
|
|
+ columns: this.transformNodeList(node.columns),
|
|||
|
|
+ unique: node.unique,
|
|||
|
|
+ using: this.transformNode(node.using),
|
|||
|
|
+ ifNotExists: node.ifNotExists,
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
transformDataType(node) {
|
|||
|
|
// An Object.freezed leaf node. No need to clone.
|
|||
|
|
return node;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.d.ts b/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.d.ts
|
|||
|
|
index 7c267cd..6a66bc7 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.d.ts
|
|||
|
|
@@ -85,6 +85,11 @@ import { JSONPathNode } from './json-path-node.js';
|
|||
|
|
import { JSONPathLegNode } from './json-path-leg-node.js';
|
|||
|
|
import { JSONOperatorChainNode } from './json-operator-chain-node.js';
|
|||
|
|
import { TupleNode } from './tuple-node.js';
|
|||
|
|
+import { AddIndexNode } from './add-index-node.js';
|
|||
|
|
+import { CreateTriggerNode } from './create-trigger-node.js';
|
|||
|
|
+import { DropTriggerNode } from './drop-trigger-node.js';
|
|||
|
|
+import { TriggerEventNode } from './trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from './trigger-order-node.js';
|
|||
|
|
export declare abstract class OperationNodeVisitor {
|
|||
|
|
#private;
|
|||
|
|
protected readonly nodeStack: OperationNode[];
|
|||
|
|
@@ -108,9 +113,13 @@ export declare abstract class OperationNodeVisitor {
|
|||
|
|
protected abstract visitDeleteQuery(node: DeleteQueryNode): void;
|
|||
|
|
protected abstract visitReturning(node: ReturningNode): void;
|
|||
|
|
protected abstract visitCreateTable(node: CreateTableNode): void;
|
|||
|
|
+ protected abstract visitCreateTrigger(node: CreateTriggerNode): void;
|
|||
|
|
+ protected abstract visitTriggerEvent(node: TriggerEventNode): void;
|
|||
|
|
+ protected abstract visitTriggerOrder(node: TriggerOrderNode): void;
|
|||
|
|
protected abstract visitAddColumn(node: AddColumnNode): void;
|
|||
|
|
protected abstract visitColumnDefinition(node: ColumnDefinitionNode): void;
|
|||
|
|
protected abstract visitDropTable(node: DropTableNode): void;
|
|||
|
|
+ protected abstract visitDropTrigger(node: DropTriggerNode): void;
|
|||
|
|
protected abstract visitOrderBy(node: OrderByNode): void;
|
|||
|
|
protected abstract visitOrderByItem(node: OrderByItemNode): void;
|
|||
|
|
protected abstract visitGroupBy(node: GroupByNode): void;
|
|||
|
|
@@ -176,4 +185,5 @@ export declare abstract class OperationNodeVisitor {
|
|||
|
|
protected abstract visitJSONPathLeg(node: JSONPathLegNode): void;
|
|||
|
|
protected abstract visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|||
|
|
protected abstract visitTuple(node: TupleNode): void;
|
|||
|
|
+ protected abstract visitAddIndex(node: AddIndexNode): void;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.js b/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.js
|
|||
|
|
index 7ded762..cc6431e 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operation-node-visitor.js
|
|||
|
|
@@ -92,6 +92,11 @@ export class OperationNodeVisitor {
|
|||
|
|
JSONPathLegNode: this.visitJSONPathLeg.bind(this),
|
|||
|
|
JSONOperatorChainNode: this.visitJSONOperatorChain.bind(this),
|
|||
|
|
TupleNode: this.visitTuple.bind(this),
|
|||
|
|
+ AddIndexNode: this.visitAddIndex.bind(this),
|
|||
|
|
+ CreateTriggerNode: this.visitCreateTrigger.bind(this),
|
|||
|
|
+ TriggerEventNode: this.visitTriggerEvent.bind(this),
|
|||
|
|
+ TriggerOrderNode: this.visitTriggerOrder.bind(this),
|
|||
|
|
+ DropTriggerNode: this.visitDropTrigger.bind(this),
|
|||
|
|
});
|
|||
|
|
visitNode = (node) => {
|
|||
|
|
this.nodeStack.push(node);
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operation-node.d.ts b/node_modules/kysely/dist/esm/operation-node/operation-node.d.ts
|
|||
|
|
index 24cad68..a01b9ed 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operation-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operation-node.d.ts
|
|||
|
|
@@ -1,4 +1,4 @@
|
|||
|
|
-export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | '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' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode';
|
|||
|
|
+export type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | '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' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode' | 'FunctionNode' | 'CaseNode' | 'WhenNode' | 'JSONReferenceNode' | 'JSONPathNode' | 'JSONPathLegNode' | 'JSONOperatorChainNode' | 'TupleNode' | 'AddIndexNode' | 'CreateTriggerNode' | 'TriggerEventNode' | 'TriggerOrderNode' | 'DropTriggerNode';
|
|||
|
|
export interface OperationNode {
|
|||
|
|
readonly kind: OperationNodeKind;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operator-node.d.ts b/node_modules/kysely/dist/esm/operation-node/operator-node.d.ts
|
|||
|
|
index 1076866..18b6e05 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operator-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operator-node.d.ts
|
|||
|
|
@@ -1,11 +1,11 @@
|
|||
|
|
import { OperationNode } from './operation-node.js';
|
|||
|
|
-export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp"];
|
|||
|
|
+export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from"];
|
|||
|
|
export declare const ARITHMETIC_OPERATORS: readonly ["+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>"];
|
|||
|
|
export declare const JSON_OPERATORS: readonly ["->", "->>"];
|
|||
|
|
-export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|||
|
|
+export declare const BINARY_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||"];
|
|||
|
|
export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
|
|||
|
|
export declare const UNARY_OPERATORS: readonly ["not", "-", "exists", "not exists"];
|
|||
|
|
-export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|||
|
|
+export declare const OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "&&", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "@@", "@@@", "!!", "<->", "regexp", "is distinct from", "is not distinct from", "+", "-", "*", "/", "%", "^", "&", "|", "#", "<<", ">>", "&&", "||", "->", "->>", "not", "-", "exists", "not exists", "between", "between symmetric"];
|
|||
|
|
export type ComparisonOperator = (typeof COMPARISON_OPERATORS)[number];
|
|||
|
|
export type ArithmeticOperator = (typeof ARITHMETIC_OPERATORS)[number];
|
|||
|
|
export type JSONOperator = (typeof JSON_OPERATORS)[number];
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/operator-node.js b/node_modules/kysely/dist/esm/operation-node/operator-node.js
|
|||
|
|
index ba655e6..2df5b92 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/operator-node.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/operator-node.js
|
|||
|
|
@@ -35,6 +35,8 @@ export const COMPARISON_OPERATORS = [
|
|||
|
|
'!!',
|
|||
|
|
'<->',
|
|||
|
|
'regexp',
|
|||
|
|
+ 'is distinct from',
|
|||
|
|
+ 'is not distinct from',
|
|||
|
|
];
|
|||
|
|
export const ARITHMETIC_OPERATORS = [
|
|||
|
|
'+',
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/trigger-event-node.d.ts b/node_modules/kysely/dist/esm/operation-node/trigger-event-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..8a3677d
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/trigger-event-node.d.ts
|
|||
|
|
@@ -0,0 +1,15 @@
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+export type TriggerEvent = 'delete' | 'update' | 'insert' | 'truncate';
|
|||
|
|
+export type TriggerEventNodeParams = Omit<TriggerEventNode, 'kind'>;
|
|||
|
|
+export interface TriggerEventNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'TriggerEventNode';
|
|||
|
|
+ readonly event: TriggerEvent;
|
|||
|
|
+ readonly columns?: ReadonlyArray<OperationNode>;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const TriggerEventNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is TriggerEventNode;
|
|||
|
|
+ create(event: TriggerEvent, columns?: ReadonlyArray<OperationNode>): TriggerEventNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/trigger-event-node.js b/node_modules/kysely/dist/esm/operation-node/trigger-event-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..6f97ee3
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/trigger-event-node.js
|
|||
|
|
@@ -0,0 +1,17 @@
|
|||
|
|
+/// <reference types="./trigger-event-node.d.ts" />
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export const TriggerEventNode = freeze({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'TriggerEventNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(event, columns) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ kind: 'TriggerEventNode',
|
|||
|
|
+ event,
|
|||
|
|
+ columns,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/trigger-order-node.d.ts b/node_modules/kysely/dist/esm/operation-node/trigger-order-node.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..12bad8d
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/trigger-order-node.d.ts
|
|||
|
|
@@ -0,0 +1,16 @@
|
|||
|
|
+import { IdentifierNode } from './identifier-node.js';
|
|||
|
|
+import { OperationNode } from './operation-node.js';
|
|||
|
|
+export type TriggerOrder = 'follows' | 'precedes';
|
|||
|
|
+export type TriggerOrderNodeParams = Omit<TriggerOrderNode, 'kind'>;
|
|||
|
|
+export interface TriggerOrderNode extends OperationNode {
|
|||
|
|
+ readonly kind: 'TriggerOrderNode';
|
|||
|
|
+ readonly order: TriggerOrder;
|
|||
|
|
+ readonly otherTriggerName: IdentifierNode;
|
|||
|
|
+}
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export declare const TriggerOrderNode: Readonly<{
|
|||
|
|
+ is(node: OperationNode): node is TriggerOrderNode;
|
|||
|
|
+ create(order: TriggerOrder, otherTriggerName: IdentifierNode): TriggerOrderNode;
|
|||
|
|
+}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/trigger-order-node.js b/node_modules/kysely/dist/esm/operation-node/trigger-order-node.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..eea5441
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/trigger-order-node.js
|
|||
|
|
@@ -0,0 +1,17 @@
|
|||
|
|
+/// <reference types="./trigger-order-node.d.ts" />
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+/**
|
|||
|
|
+ * @internal
|
|||
|
|
+ */
|
|||
|
|
+export const TriggerOrderNode = freeze({
|
|||
|
|
+ is(node) {
|
|||
|
|
+ return node.kind === 'TriggerOrderNode';
|
|||
|
|
+ },
|
|||
|
|
+ create(order, otherTriggerName) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ kind: 'TriggerOrderNode',
|
|||
|
|
+ order,
|
|||
|
|
+ otherTriggerName,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+});
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.d.ts b/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.d.ts
|
|||
|
|
index c179f1f..4a544de 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.d.ts
|
|||
|
|
@@ -5,11 +5,14 @@ export interface UniqueConstraintNode extends OperationNode {
|
|||
|
|
readonly kind: 'UniqueConstraintNode';
|
|||
|
|
readonly columns: ReadonlyArray<ColumnNode>;
|
|||
|
|
readonly name?: IdentifierNode;
|
|||
|
|
+ readonly nullsNotDistinct?: boolean;
|
|||
|
|
}
|
|||
|
|
+export type UniqueConstraintNodeProps = Omit<Partial<UniqueConstraintNode>, 'kind'>;
|
|||
|
|
/**
|
|||
|
|
* @internal
|
|||
|
|
*/
|
|||
|
|
export declare const UniqueConstraintNode: Readonly<{
|
|||
|
|
is(node: OperationNode): node is UniqueConstraintNode;
|
|||
|
|
- create(columns: string[], constraintName?: string): UniqueConstraintNode;
|
|||
|
|
+ create(columns: string[], constraintName?: string, nullsNotDistinct?: boolean): UniqueConstraintNode;
|
|||
|
|
+ cloneWith(node: UniqueConstraintNode, props: UniqueConstraintNodeProps): UniqueConstraintNode;
|
|||
|
|
}>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js b/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js
|
|||
|
|
index 0c903a6..d05e623 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js
|
|||
|
|
@@ -9,11 +9,18 @@ export const UniqueConstraintNode = freeze({
|
|||
|
|
is(node) {
|
|||
|
|
return node.kind === 'UniqueConstraintNode';
|
|||
|
|
},
|
|||
|
|
- create(columns, constraintName) {
|
|||
|
|
+ create(columns, constraintName, nullsNotDistinct) {
|
|||
|
|
return freeze({
|
|||
|
|
kind: 'UniqueConstraintNode',
|
|||
|
|
columns: freeze(columns.map(ColumnNode.create)),
|
|||
|
|
name: constraintName ? IdentifierNode.create(constraintName) : undefined,
|
|||
|
|
+ nullsNotDistinct,
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ cloneWith(node, props) {
|
|||
|
|
+ return freeze({
|
|||
|
|
+ ...node,
|
|||
|
|
+ ...props,
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/parser/binary-operation-parser.js b/node_modules/kysely/dist/esm/parser/binary-operation-parser.js
|
|||
|
|
index 7c6e042..b136830 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/parser/binary-operation-parser.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/parser/binary-operation-parser.js
|
|||
|
|
@@ -35,7 +35,7 @@ export function parseFilterObject(obj, combinator) {
|
|||
|
|
export function parseFilterList(list, combinator) {
|
|||
|
|
const combine = combinator === 'and' ? AndNode.create : OrNode.create;
|
|||
|
|
if (list.length === 0) {
|
|||
|
|
- return ValueNode.createImmediate(combinator === 'and');
|
|||
|
|
+ return BinaryOperationNode.create(ValueNode.createImmediate(1), OperatorNode.create('='), ValueNode.createImmediate(combinator === 'and' ? 1 : 0));
|
|||
|
|
}
|
|||
|
|
let node = toOperationNode(list[0]);
|
|||
|
|
for (let i = 1; i < list.length; ++i) {
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/parser/reference-parser.d.ts b/node_modules/kysely/dist/esm/parser/reference-parser.d.ts
|
|||
|
|
index cd4d656..08204c7 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/parser/reference-parser.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/parser/reference-parser.d.ts
|
|||
|
|
@@ -16,7 +16,8 @@ export type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyCo
|
|||
|
|
export type SimpleReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|||
|
|
export type ReferenceExpression<DB, TB extends keyof DB> = SimpleReferenceExpression<DB, TB> | ExpressionOrFactory<DB, TB, any>;
|
|||
|
|
export type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|||
|
|
-export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|||
|
|
+export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = SelectType<ExtractRawTypeFromReferenceExpression<DB, TB, RE, DV>>;
|
|||
|
|
+export type ExtractRawTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|||
|
|
export type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, DV = unknown> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : DV;
|
|||
|
|
export type OrderedColumnName<C extends string> = C extends `${string} ${infer O}` ? O extends OrderByDirection ? C : never : C;
|
|||
|
|
export type ExtractColumnNameFromOrderedColumnName<C extends string> = C extends `${infer CL} ${infer O}` ? O extends OrderByDirection ? CL : never : C;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/parser/update-set-parser.d.ts b/node_modules/kysely/dist/esm/parser/update-set-parser.d.ts
|
|||
|
|
index d4b2dd0..2763b7c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/parser/update-set-parser.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/parser/update-set-parser.d.ts
|
|||
|
|
@@ -2,9 +2,12 @@ import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|||
|
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|||
|
|
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|||
|
|
import { ValueExpression } from './value-parser.js';
|
|||
|
|
+import { ExtractRawTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|||
|
|
export type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB = TB> = {
|
|||
|
|
[C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
|
|||
|
|
};
|
|||
|
|
export type UpdateObjectFactory<DB, TB extends keyof DB, UT extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => UpdateObject<DB, TB, UT>;
|
|||
|
|
-export type UpdateExpression<DB, TB extends keyof DB, UT extends keyof DB = TB> = UpdateObject<DB, TB, UT> | UpdateObjectFactory<DB, TB, UT>;
|
|||
|
|
-export declare function parseUpdateExpression(update: UpdateExpression<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|||
|
|
+export type UpdateObjectExpression<DB, TB extends keyof DB, UT extends keyof DB = TB> = UpdateObject<DB, TB, UT> | UpdateObjectFactory<DB, TB, UT>;
|
|||
|
|
+export type ExtractUpdateTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = UpdateType<ExtractRawTypeFromReferenceExpression<DB, TB, RE, DV>>;
|
|||
|
|
+export declare function parseUpdate(...args: [UpdateObjectExpression<any, any, any>] | [ReferenceExpression<any, any>, ValueExpression<any, any, any>]): ReadonlyArray<ColumnUpdateNode>;
|
|||
|
|
+export declare function parseUpdateObjectExpression(update: UpdateObjectExpression<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/parser/update-set-parser.js b/node_modules/kysely/dist/esm/parser/update-set-parser.js
|
|||
|
|
index 495e092..e644c94 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/parser/update-set-parser.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/parser/update-set-parser.js
|
|||
|
|
@@ -4,7 +4,16 @@ import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|||
|
|
import { expressionBuilder, } from '../expression/expression-builder.js';
|
|||
|
|
import { isFunction } from '../util/object-utils.js';
|
|||
|
|
import { parseValueExpression } from './value-parser.js';
|
|||
|
|
-export function parseUpdateExpression(update) {
|
|||
|
|
+import { parseReferenceExpression, } from './reference-parser.js';
|
|||
|
|
+export function parseUpdate(...args) {
|
|||
|
|
+ if (args.length === 2) {
|
|||
|
|
+ return [
|
|||
|
|
+ ColumnUpdateNode.create(parseReferenceExpression(args[0]), parseValueExpression(args[1])),
|
|||
|
|
+ ];
|
|||
|
|
+ }
|
|||
|
|
+ return parseUpdateObjectExpression(args[0]);
|
|||
|
|
+}
|
|||
|
|
+export function parseUpdateObjectExpression(update) {
|
|||
|
|
const updateObj = isFunction(update) ? update(expressionBuilder()) : update;
|
|||
|
|
return Object.entries(updateObj)
|
|||
|
|
.filter(([_, value]) => value !== undefined)
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/plugin/with-schema/with-schema-transformer.js b/node_modules/kysely/dist/esm/plugin/with-schema/with-schema-transformer.js
|
|||
|
|
index 0ccc8a1..6e212e6 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/plugin/with-schema/with-schema-transformer.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/plugin/with-schema/with-schema-transformer.js
|
|||
|
|
@@ -17,12 +17,14 @@ const ROOT_OPERATION_NODES = freeze({
|
|||
|
|
CreateTableNode: true,
|
|||
|
|
CreateTypeNode: true,
|
|||
|
|
CreateViewNode: true,
|
|||
|
|
+ CreateTriggerNode: true,
|
|||
|
|
DeleteQueryNode: true,
|
|||
|
|
DropIndexNode: true,
|
|||
|
|
DropSchemaNode: true,
|
|||
|
|
DropTableNode: true,
|
|||
|
|
DropTypeNode: true,
|
|||
|
|
DropViewNode: true,
|
|||
|
|
+ DropTriggerNode: true,
|
|||
|
|
InsertQueryNode: true,
|
|||
|
|
RawNode: true,
|
|||
|
|
SelectQueryNode: true,
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/function-module.d.ts b/node_modules/kysely/dist/esm/query-builder/function-module.d.ts
|
|||
|
|
index 592c5e9..8f326c1 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/function-module.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/function-module.d.ts
|
|||
|
|
@@ -7,6 +7,7 @@ import { KyselyTypeError } from '../util/type-error.js';
|
|||
|
|
import { Equals, IsAny } from '../util/type-utils.js';
|
|||
|
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|||
|
|
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|||
|
|
+import { Selectable } from '../util/column-type.js';
|
|||
|
|
/**
|
|||
|
|
* Helpers for type safe SQL function calls.
|
|||
|
|
*
|
|||
|
|
@@ -17,21 +18,47 @@ import { SelectQueryBuilderExpression } from '../query-builder/select-query-buil
|
|||
|
|
*
|
|||
|
|
* <!-- siteExample("select", "Function calls", 60) -->
|
|||
|
|
*
|
|||
|
|
- * This example uses the `fn` module to select some aggregates:
|
|||
|
|
+ * This example shows how to create function calls. These examples also work in any
|
|||
|
|
+ * other place (`where` calls, updates, inserts etc.). The only difference is that you
|
|||
|
|
+ * leave out the alias (the `as` call) if you use these in any other place than `select`.
|
|||
|
|
*
|
|||
|
|
* ```ts
|
|||
|
|
+ * import { sql } from 'kysely'
|
|||
|
|
+ *
|
|||
|
|
* const result = await db.selectFrom('person')
|
|||
|
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
- * .select(({ fn }) => [
|
|||
|
|
+ * .select(({ fn, val, ref }) => [
|
|||
|
|
* 'person.id',
|
|||
|
|
*
|
|||
|
|
* // The `fn` module contains the most common
|
|||
|
|
* // functions.
|
|||
|
|
* fn.count<number>('pet.id').as('pet_count'),
|
|||
|
|
*
|
|||
|
|
- * // You can call any function using the
|
|||
|
|
- * // `agg` method
|
|||
|
|
- * fn.agg<string[]>('array_agg', ['pet.name']).as('pet_names')
|
|||
|
|
+ * // You can call any function by calling `fn`
|
|||
|
|
+ * // directly. The arguments are treated as column
|
|||
|
|
+ * // references by default. If you want to pass in
|
|||
|
|
+ * // values, use the `val` function.
|
|||
|
|
+ * fn<string>('concat', [
|
|||
|
|
+ * val('Ms. '),
|
|||
|
|
+ * 'first_name',
|
|||
|
|
+ * val(' '),
|
|||
|
|
+ * 'last_name'
|
|||
|
|
+ * ]).as('full_name_with_title'),
|
|||
|
|
+ *
|
|||
|
|
+ * // You can call any aggregate function using the
|
|||
|
|
+ * // `fn.agg` function.
|
|||
|
|
+ * fn.agg<string[]>('array_agg', ['pet.name']).as('pet_names'),
|
|||
|
|
+ *
|
|||
|
|
+ * // And once again, you can use the `sql`
|
|||
|
|
+ * // template tag. The template tag substitutions
|
|||
|
|
+ * // are treated as values by default. If you want
|
|||
|
|
+ * // to reference columns, you can use the `ref`
|
|||
|
|
+ * // function.
|
|||
|
|
+ * sql<string>`concat(
|
|||
|
|
+ * ${ref('first_name')},
|
|||
|
|
+ * ' ',
|
|||
|
|
+ * ${ref('last_name')}
|
|||
|
|
+ * )`.as('full_name')
|
|||
|
|
* ])
|
|||
|
|
* .groupBy('person.id')
|
|||
|
|
* .having((eb) => eb.fn.count('pet.id'), '>', 10)
|
|||
|
|
@@ -44,11 +71,13 @@ import { SelectQueryBuilderExpression } from '../query-builder/select-query-buil
|
|||
|
|
* select
|
|||
|
|
* "person"."id",
|
|||
|
|
* count("pet"."id") as "pet_count",
|
|||
|
|
- * array_agg("pet"."name") as "pet_names"
|
|||
|
|
+ * concat($1, "first_name", $2, "last_name") as "full_name_with_title",
|
|||
|
|
+ * array_agg("pet"."name") as "pet_names",
|
|||
|
|
+ * concat("first_name", ' ', "last_name") as "full_name"
|
|||
|
|
* from "person"
|
|||
|
|
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
* group by "person"."id"
|
|||
|
|
- * having count("pet"."id") > $1
|
|||
|
|
+ * having count("pet"."id") > $3
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
export interface FunctionModule<DB, TB extends keyof DB> {
|
|||
|
|
@@ -540,6 +569,50 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|||
|
|
any<RE extends StringReference<DB, TB>>(expr: RE): Exclude<ExtractTypeFromStringReference<DB, TB, RE>, null> extends ReadonlyArray<infer I> ? ExpressionWrapper<DB, TB, I> : KyselyTypeError<'any(expr) call failed: expr must be an array'>;
|
|||
|
|
any<T>(subquery: SelectQueryBuilderExpression<Record<string, T>>): ExpressionWrapper<DB, TB, T>;
|
|||
|
|
any<T>(expr: Expression<ReadonlyArray<T>>): ExpressionWrapper<DB, TB, T>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Creates a json_agg function call.
|
|||
|
|
+ *
|
|||
|
|
+ * This function is only available on PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.selectFrom('person')
|
|||
|
|
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
+ * .select((eb) => ['first_name', eb.fn.jsonAgg('pet').as('pets')])
|
|||
|
|
+ * .groupBy('person.first_name')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * select "first_name", json_agg("pet") as "pets"
|
|||
|
|
+ * from "person"
|
|||
|
|
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
+ * group by "person"."first_name"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Selectable<DB[T]>[] : T extends Expression<infer O> ? O[] : never>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Creates a to_json function call.
|
|||
|
|
+ *
|
|||
|
|
+ * This function is only available on PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.selectFrom('person')
|
|||
|
|
+ * .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|||
|
|
+ * .select((eb) => ['first_name', eb.fn.toJson('pet').as('pet')])
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * select "first_name", to_json("pet") as "pet"
|
|||
|
|
+ * from "person"
|
|||
|
|
+ * inner join "pet" on "pet"."owner_id" = "person"."id"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ toJson<T extends (TB & string) | Expression<unknown>>(table: T): ExpressionWrapper<DB, TB, T extends TB ? Selectable<DB[T]> : T extends Expression<infer O> ? O : never>;
|
|||
|
|
}
|
|||
|
|
export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
|
|||
|
|
type OutputBoundStringReference<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = IsAny<O> extends true ? C : Equals<ExtractTypeFromReferenceExpression<DB, TB, C> | null, O | null> extends true ? C : never;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/function-module.js b/node_modules/kysely/dist/esm/query-builder/function-module.js
|
|||
|
|
index 7e1d28d..3744008 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/function-module.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/function-module.js
|
|||
|
|
@@ -5,6 +5,8 @@ import { FunctionNode } from '../operation-node/function-node.js';
|
|||
|
|
import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|||
|
|
import { parseSelectAll } from '../parser/select-parser.js';
|
|||
|
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|||
|
|
+import { isString } from '../util/object-utils.js';
|
|||
|
|
+import { parseTable } from '../parser/table-parser.js';
|
|||
|
|
export function createFunctionModule() {
|
|||
|
|
const fn = (name, args) => {
|
|||
|
|
return new ExpressionWrapper(FunctionNode.create(name, parseReferenceExpressionOrList(args)));
|
|||
|
|
@@ -42,5 +44,17 @@ export function createFunctionModule() {
|
|||
|
|
any(column) {
|
|||
|
|
return fn('any', [column]);
|
|||
|
|
},
|
|||
|
|
+ jsonAgg(table) {
|
|||
|
|
+ return new AggregateFunctionBuilder({
|
|||
|
|
+ aggregateFunctionNode: AggregateFunctionNode.create('json_agg', [
|
|||
|
|
+ isString(table) ? parseTable(table) : table.toOperationNode(),
|
|||
|
|
+ ]),
|
|||
|
|
+ });
|
|||
|
|
+ },
|
|||
|
|
+ toJson(table) {
|
|||
|
|
+ return new ExpressionWrapper(FunctionNode.create('to_json', [
|
|||
|
|
+ isString(table) ? parseTable(table) : table.toOperationNode(),
|
|||
|
|
+ ]));
|
|||
|
|
+ },
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/insert-query-builder.d.ts b/node_modules/kysely/dist/esm/query-builder/insert-query-builder.d.ts
|
|||
|
|
index 6be4113..ffc6c3f 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/insert-query-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/insert-query-builder.d.ts
|
|||
|
|
@@ -5,7 +5,7 @@ import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-
|
|||
|
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { NarrowPartial, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|||
|
|
-import { UpdateExpression } from '../parser/update-set-parser.js';
|
|||
|
|
+import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|||
|
|
import { Compilable } from '../util/compilable.js';
|
|||
|
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
import { QueryId } from '../util/query-id.js';
|
|||
|
|
@@ -60,13 +60,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* })
|
|||
|
|
* .executeTakeFirst()
|
|||
|
|
*
|
|||
|
|
+ * // `insertId` is only available on dialects that
|
|||
|
|
+ * // automatically return the id of the inserted row
|
|||
|
|
+ * // such as MySQL and SQLite. On PostgreSQL, for example,
|
|||
|
|
+ * // you need to add a `returning` clause to the query to
|
|||
|
|
+ * // get anything out. See the "returning data" example.
|
|||
|
|
* console.log(result.insertId)
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
- * The generated SQL (PostgreSQL):
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
- * insert into "person" ("first_name", "last_name", "age") values ($1, $2, $3)
|
|||
|
|
+ * insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* <!-- siteExample("insert", "Multiple rows", 20) -->
|
|||
|
|
@@ -131,11 +136,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* ```ts
|
|||
|
|
* import { sql } from 'kysely'
|
|||
|
|
*
|
|||
|
|
+ * const ani = "Ani"
|
|||
|
|
+ * const ston = "ston"
|
|||
|
|
+ *
|
|||
|
|
* const result = await db
|
|||
|
|
* .insertInto('person')
|
|||
|
|
* .values(({ ref, selectFrom, fn }) => ({
|
|||
|
|
* first_name: 'Jennifer',
|
|||
|
|
- * last_name: sql`${'Ani'} || ${'ston'}`,
|
|||
|
|
+ * last_name: sql`concat(${ani}, ${ston})`,
|
|||
|
|
* middle_name: ref('first_name'),
|
|||
|
|
* age: selectFrom('person')
|
|||
|
|
* .select(fn.avg<number>('age')
|
|||
|
|
@@ -147,8 +155,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* The generated SQL (PostgreSQL):
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
- * insert into "person" ("first_name", "last_name", "age")
|
|||
|
|
- * values ($1, $2 || $3, (select avg("age") as "avg_age" from "person"))
|
|||
|
|
+ * insert into "person" (
|
|||
|
|
+ * "first_name",
|
|||
|
|
+ * "last_name",
|
|||
|
|
+ * "middle_name",
|
|||
|
|
+ * "age"
|
|||
|
|
+ * )
|
|||
|
|
+ * values (
|
|||
|
|
+ * $1,
|
|||
|
|
+ * concat($2, $3),
|
|||
|
|
+ * "first_name",
|
|||
|
|
+ * (select avg("age") as "avg_age" from "person")
|
|||
|
|
+ * )
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* You can also use the callback version of subqueries or raw expressions:
|
|||
|
|
@@ -208,7 +226,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* .select((eb) => [
|
|||
|
|
* 'pet.name',
|
|||
|
|
* eb.val('Petson').as('last_name'),
|
|||
|
|
- * eb.val(7).as('age'),
|
|||
|
|
+ * eb.lit(7).as('age'),
|
|||
|
|
* ])
|
|||
|
|
* )
|
|||
|
|
* .execute()
|
|||
|
|
@@ -218,7 +236,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
* insert into "person" ("first_name", "last_name", "age")
|
|||
|
|
- * select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
|
|||
|
|
+ * select "pet"."name", $1 as "last_name", 7 as "age from "pet"
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
|
|||
|
|
@@ -414,7 +432,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|||
|
|
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
- onDuplicateKeyUpdate(update: UpdateExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|||
|
|
+ onDuplicateKeyUpdate(update: UpdateObjectExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|||
|
|
/**
|
|||
|
|
* Allows you to return data from modified rows.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/insert-query-builder.js b/node_modules/kysely/dist/esm/query-builder/insert-query-builder.js
|
|||
|
|
index 3cd23c3..d9f1cc8 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/insert-query-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/insert-query-builder.js
|
|||
|
|
@@ -3,7 +3,7 @@ import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|||
|
|
import { parseInsertExpression, } from '../parser/insert-values-parser.js';
|
|||
|
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
-import { parseUpdateExpression, } from '../parser/update-set-parser.js';
|
|||
|
|
+import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
|
|||
|
|
import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
import { freeze } from '../util/object-utils.js';
|
|||
|
|
import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
|
|||
|
|
@@ -75,7 +75,7 @@ export class InsertQueryBuilder {
|
|||
|
|
* .select((eb) => [
|
|||
|
|
* 'pet.name',
|
|||
|
|
* eb.val('Petson').as('last_name'),
|
|||
|
|
- * eb.val(7).as('age'),
|
|||
|
|
+ * eb.lit(7).as('age'),
|
|||
|
|
* ])
|
|||
|
|
* )
|
|||
|
|
* .execute()
|
|||
|
|
@@ -85,7 +85,7 @@ export class InsertQueryBuilder {
|
|||
|
|
*
|
|||
|
|
* ```sql
|
|||
|
|
* insert into "person" ("first_name", "last_name", "age")
|
|||
|
|
- * select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
|
|||
|
|
+ * select "pet"."name", $1 as "last_name", 7 as "age from "pet"
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
expression(expression) {
|
|||
|
|
@@ -308,7 +308,7 @@ export class InsertQueryBuilder {
|
|||
|
|
return new InsertQueryBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|||
|
|
- onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateExpression(update)),
|
|||
|
|
+ onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObjectExpression(update)),
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/insert-result.d.ts b/node_modules/kysely/dist/esm/query-builder/insert-result.d.ts
|
|||
|
|
index c16fb08..d22a9e5 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/insert-result.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/insert-result.d.ts
|
|||
|
|
@@ -23,7 +23,14 @@
|
|||
|
|
*/
|
|||
|
|
export declare class InsertResult {
|
|||
|
|
/**
|
|||
|
|
- * The auto incrementing primary key
|
|||
|
|
+ * The auto incrementing primary key of the inserted row.
|
|||
|
|
+ *
|
|||
|
|
+ * This property can be undefined when the query contains an `on conflict`
|
|||
|
|
+ * clause that makes the query succeed even when nothing gets inserted.
|
|||
|
|
+ *
|
|||
|
|
+ * This property is always undefined on dialects like PostgreSQL that
|
|||
|
|
+ * don't return the inserted id by default. On those dialects you need
|
|||
|
|
+ * to use the {@link ReturningInterface.returning | returning} method.
|
|||
|
|
*/
|
|||
|
|
readonly insertId: bigint | undefined;
|
|||
|
|
/**
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/insert-result.js b/node_modules/kysely/dist/esm/query-builder/insert-result.js
|
|||
|
|
index ba00de9..ff11e8c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/insert-result.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/insert-result.js
|
|||
|
|
@@ -24,7 +24,14 @@
|
|||
|
|
*/
|
|||
|
|
export class InsertResult {
|
|||
|
|
/**
|
|||
|
|
- * The auto incrementing primary key
|
|||
|
|
+ * The auto incrementing primary key of the inserted row.
|
|||
|
|
+ *
|
|||
|
|
+ * This property can be undefined when the query contains an `on conflict`
|
|||
|
|
+ * clause that makes the query succeed even when nothing gets inserted.
|
|||
|
|
+ *
|
|||
|
|
+ * This property is always undefined on dialects like PostgreSQL that
|
|||
|
|
+ * don't return the inserted id by default. On those dialects you need
|
|||
|
|
+ * to use the {@link ReturningInterface.returning | returning} method.
|
|||
|
|
*/
|
|||
|
|
insertId;
|
|||
|
|
/**
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.d.ts b/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.d.ts
|
|||
|
|
index 803563e..cfb9d96 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.d.ts
|
|||
|
|
@@ -4,7 +4,7 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|||
|
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|||
|
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|||
|
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|||
|
|
-import { UpdateExpression } from '../parser/update-set-parser.js';
|
|||
|
|
+import { UpdateObjectExpression } from '../parser/update-set-parser.js';
|
|||
|
|
import { AnyColumn, SqlBool } from '../util/type-utils.js';
|
|||
|
|
import { WhereInterface } from './where-interface.js';
|
|||
|
|
export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
|
|||
|
|
@@ -435,7 +435,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
|
|||
|
|
* )
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
- doUpdateSet(update: UpdateExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|||
|
|
+ doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
|
|||
|
|
/**
|
|||
|
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
* what the provided function returns.
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.js b/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.js
|
|||
|
|
index bd95015..02c9135 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.js
|
|||
|
|
@@ -3,7 +3,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|||
|
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|||
|
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|||
|
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|||
|
|
-import { parseUpdateExpression, } from '../parser/update-set-parser.js';
|
|||
|
|
+import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
|
|||
|
|
import { freeze } from '../util/object-utils.js';
|
|||
|
|
import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
export class OnConflictBuilder {
|
|||
|
|
@@ -173,7 +173,7 @@ export class OnConflictBuilder {
|
|||
|
|
return new OnConflictUpdateBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {
|
|||
|
|
- updates: parseUpdateExpression(update),
|
|||
|
|
+ updates: parseUpdateObjectExpression(update),
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/update-query-builder.d.ts b/node_modules/kysely/dist/esm/query-builder/update-query-builder.d.ts
|
|||
|
|
index 3d30eed..a71462a 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/update-query-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/update-query-builder.d.ts
|
|||
|
|
@@ -8,7 +8,7 @@ import { ReferenceExpression } from '../parser/reference-parser.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|||
|
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|||
|
|
-import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|||
|
|
+import { UpdateObject, UpdateObjectFactory, ExtractUpdateTypeFromReferenceExpression } from '../parser/update-set-parser.js';
|
|||
|
|
import { Compilable } from '../util/compilable.js';
|
|||
|
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
import { QueryId } from '../util/query-id.js';
|
|||
|
|
@@ -24,6 +24,7 @@ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../p
|
|||
|
|
import { KyselyTypeError } from '../util/type-error.js';
|
|||
|
|
import { Streamable } from '../util/streamable.js';
|
|||
|
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|||
|
|
+import { ValueExpression } from '../parser/value-parser.js';
|
|||
|
|
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|||
|
|
#private;
|
|||
|
|
constructor(props: UpdateQueryBuilderProps);
|
|||
|
|
@@ -625,6 +626,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|||
|
|
* "id" = $4
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
+ * If you provide two arguments the first one is interpreted as the column
|
|||
|
|
+ * (or other target) and the second as the value:
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * const result = await db
|
|||
|
|
+ * .updateTable('person')
|
|||
|
|
+ * .set('first_name', 'Foo')
|
|||
|
|
+ * // As always, both arguments can be arbitrary expressions or
|
|||
|
|
+ * // callbacks that give you access to an expression builder:
|
|||
|
|
+ * .set(sql`address['postalCode']`, (eb) => eb.val('61710))
|
|||
|
|
+ * .where('id', '=', '1')
|
|||
|
|
+ * .executeTakeFirst()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
* On PostgreSQL you can chain `returning` to the query to get
|
|||
|
|
* the updated rows' columns (or any other expression) as the
|
|||
|
|
* return value:
|
|||
|
|
@@ -682,6 +697,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|||
|
|
*/
|
|||
|
|
set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|||
|
|
set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|||
|
|
+ set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|||
|
|
/**
|
|||
|
|
* Allows you to return data from modified rows.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-builder/update-query-builder.js b/node_modules/kysely/dist/esm/query-builder/update-query-builder.js
|
|||
|
|
index b20c740..6487ecf 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-builder/update-query-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-builder/update-query-builder.js
|
|||
|
|
@@ -4,7 +4,7 @@ import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|||
|
|
import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|||
|
|
-import { parseUpdateExpression, } from '../parser/update-set-parser.js';
|
|||
|
|
+import { parseUpdate, } from '../parser/update-set-parser.js';
|
|||
|
|
import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
import { freeze } from '../util/object-utils.js';
|
|||
|
|
import { UpdateResult } from './update-result.js';
|
|||
|
|
@@ -63,10 +63,10 @@ export class UpdateQueryBuilder {
|
|||
|
|
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('FullJoin', args)),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
- set(update) {
|
|||
|
|
+ set(...args) {
|
|||
|
|
return new UpdateQueryBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
- queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdateExpression(update)),
|
|||
|
|
+ queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdate(...args)),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
returning(selection) {
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.d.ts b/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.d.ts
|
|||
|
|
index dbd954a..2f73125 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.d.ts
|
|||
|
|
@@ -48,7 +48,7 @@ import { RootOperationNode, QueryCompiler } from './query-compiler.js';
|
|||
|
|
import { HavingNode } from '../operation-node/having-node.js';
|
|||
|
|
import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
|
|||
|
|
import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
|
|||
|
|
-import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
+import { AlterTableColumnAlterationNode, AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
import { DropColumnNode } from '../operation-node/drop-column-node.js';
|
|||
|
|
import { RenameColumnNode } from '../operation-node/rename-column-node.js';
|
|||
|
|
import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|||
|
|
@@ -88,6 +88,11 @@ import { JSONPathNode } from '../operation-node/json-path-node.js';
|
|||
|
|
import { JSONPathLegNode } from '../operation-node/json-path-leg-node.js';
|
|||
|
|
import { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';
|
|||
|
|
import { TupleNode } from '../operation-node/tuple-node.js';
|
|||
|
|
+import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
+import { TriggerEventNode } from '../operation-node/trigger-event-node.js';
|
|||
|
|
+import { TriggerOrderNode } from '../operation-node/trigger-order-node.js';
|
|||
|
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|||
|
|
#private;
|
|||
|
|
protected get numParameters(): number;
|
|||
|
|
@@ -124,6 +129,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|||
|
|
protected visitTable(node: TableNode): void;
|
|||
|
|
protected visitSchemableIdentifier(node: SchemableIdentifierNode): void;
|
|||
|
|
protected visitCreateTable(node: CreateTableNode): void;
|
|||
|
|
+ protected visitCreateTrigger(node: CreateTriggerNode): void;
|
|||
|
|
+ protected visitTriggerEvent(node: TriggerEventNode): void;
|
|||
|
|
+ protected visitTriggerOrder(node: TriggerOrderNode): void;
|
|||
|
|
+ protected visitDropTrigger(node: DropTriggerNode): void;
|
|||
|
|
protected visitColumnDefinition(node: ColumnDefinitionNode): void;
|
|||
|
|
protected getAutoIncrement(): string;
|
|||
|
|
protected visitReferences(node: ReferencesNode): void;
|
|||
|
|
@@ -184,6 +193,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|||
|
|
protected visitJSONPath(node: JSONPathNode): void;
|
|||
|
|
protected visitJSONPathLeg(node: JSONPathLegNode): void;
|
|||
|
|
protected visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|||
|
|
+ protected visitAddIndex(node: AddIndexNode): void;
|
|||
|
|
protected append(str: string): void;
|
|||
|
|
protected appendValue(parameter: unknown): void;
|
|||
|
|
protected getLeftIdentifierWrapper(): string;
|
|||
|
|
@@ -197,4 +207,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|||
|
|
protected addParameter(parameter: unknown): void;
|
|||
|
|
protected appendImmediateValue(value: unknown): void;
|
|||
|
|
protected sortSelectModifiers(arr: SelectModifierNode[]): ReadonlyArray<SelectModifierNode>;
|
|||
|
|
+ protected compileColumnAlterations(columnAlterations: readonly AlterTableColumnAlterationNode[]): void;
|
|||
|
|
+ /**
|
|||
|
|
+ * controls whether the dialect adds a "type" keyword before a column's new data
|
|||
|
|
+ * type in an ALTER TABLE statement.
|
|||
|
|
+ */
|
|||
|
|
+ protected announcesNewColumnDataType(): boolean;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.js b/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.js
|
|||
|
|
index c75a92d..0762ebd 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.js
|
|||
|
|
@@ -1,4 +1,5 @@
|
|||
|
|
/// <reference types="./default-query-compiler.d.ts" />
|
|||
|
|
+import { CreateTableNode } from '../operation-node/create-table-node.js';
|
|||
|
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|||
|
|
import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
|
|||
|
|
import { OperatorNode } from '../operation-node/operator-node.js';
|
|||
|
|
@@ -30,6 +31,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
const wrapInParens = this.parentNode !== undefined &&
|
|||
|
|
!ParensNode.is(this.parentNode) &&
|
|||
|
|
!InsertQueryNode.is(this.parentNode) &&
|
|||
|
|
+ !CreateTableNode.is(this.parentNode) &&
|
|||
|
|
!CreateViewNode.is(this.parentNode) &&
|
|||
|
|
!SetOperationNode.is(this.parentNode);
|
|||
|
|
if (this.parentNode === undefined && node.explain) {
|
|||
|
|
@@ -346,17 +348,83 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
this.append('if not exists ');
|
|||
|
|
}
|
|||
|
|
this.visitNode(node.table);
|
|||
|
|
- this.append(' (');
|
|||
|
|
- this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|||
|
|
- this.append(')');
|
|||
|
|
- if (node.onCommit) {
|
|||
|
|
- this.append(' on commit ');
|
|||
|
|
- this.append(node.onCommit);
|
|||
|
|
+ if (node.selectQuery) {
|
|||
|
|
+ this.append(' as ');
|
|||
|
|
+ this.visitNode(node.selectQuery);
|
|||
|
|
}
|
|||
|
|
- if (node.endModifiers && node.endModifiers.length > 0) {
|
|||
|
|
- this.append(' ');
|
|||
|
|
- this.compileList(node.endModifiers, ' ');
|
|||
|
|
+ else {
|
|||
|
|
+ this.append(' (');
|
|||
|
|
+ this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|||
|
|
+ this.append(')');
|
|||
|
|
+ if (node.onCommit) {
|
|||
|
|
+ this.append(' on commit ');
|
|||
|
|
+ this.append(node.onCommit);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.endModifiers && node.endModifiers.length > 0) {
|
|||
|
|
+ this.append(' ');
|
|||
|
|
+ this.compileList(node.endModifiers, ' ');
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ visitCreateTrigger(node) {
|
|||
|
|
+ if (!node.time)
|
|||
|
|
+ throw new Error('Trigger time is required.');
|
|||
|
|
+ if (!node.events)
|
|||
|
|
+ throw new Error('Trigger event is required.');
|
|||
|
|
+ if (!node.table)
|
|||
|
|
+ throw new Error('Trigger table is required.');
|
|||
|
|
+ this.append('create ');
|
|||
|
|
+ if (node.temporary) {
|
|||
|
|
+ this.append('temporary ');
|
|||
|
|
}
|
|||
|
|
+ if (node.orReplace) {
|
|||
|
|
+ this.append('or replace ');
|
|||
|
|
+ }
|
|||
|
|
+ this.append('trigger ');
|
|||
|
|
+ if (node.ifNotExists) {
|
|||
|
|
+ this.append('if not exists ');
|
|||
|
|
+ }
|
|||
|
|
+ this.visitNode(node.name);
|
|||
|
|
+ this.append(` ${node.time} `);
|
|||
|
|
+ this.compileList(node.events, ' or ');
|
|||
|
|
+ this.append(' on ');
|
|||
|
|
+ this.visitNode(node.table);
|
|||
|
|
+ if (node.forEach)
|
|||
|
|
+ this.append(` for each ${node.forEach} `);
|
|||
|
|
+ if (node.when) {
|
|||
|
|
+ this.append(' when ');
|
|||
|
|
+ this.visitNode(node.when);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.order)
|
|||
|
|
+ this.visitNode(node.order);
|
|||
|
|
+ if (node.queries) {
|
|||
|
|
+ this.append(' begin ');
|
|||
|
|
+ this.compileList(node.queries, '; ');
|
|||
|
|
+ this.append('; ');
|
|||
|
|
+ this.append('end');
|
|||
|
|
+ }
|
|||
|
|
+ else if (node.function) {
|
|||
|
|
+ this.append(' execute function ');
|
|||
|
|
+ this.visitNode(node.function);
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ visitTriggerEvent(node) {
|
|||
|
|
+ this.append(`${node.event} `);
|
|||
|
|
+ if (node.event === 'update' && node.columns) {
|
|||
|
|
+ this.append('of ');
|
|||
|
|
+ this.compileList(node.columns, ', ');
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
+ visitTriggerOrder(node) {
|
|||
|
|
+ this.append(`${node.order} `);
|
|||
|
|
+ this.visitNode(node.otherTriggerName);
|
|||
|
|
+ }
|
|||
|
|
+ visitDropTrigger(node) {
|
|||
|
|
+ this.append('drop trigger ');
|
|||
|
|
+ if (node.ifExists) {
|
|||
|
|
+ this.append('if exists ');
|
|||
|
|
+ }
|
|||
|
|
+ this.visitNode(node.name);
|
|||
|
|
}
|
|||
|
|
visitColumnDefinition(node) {
|
|||
|
|
this.visitNode(node.column);
|
|||
|
|
@@ -383,6 +451,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
if (node.unique) {
|
|||
|
|
this.append(' unique');
|
|||
|
|
}
|
|||
|
|
+ if (node.nullsNotDistinct) {
|
|||
|
|
+ this.append(' nulls not distinct');
|
|||
|
|
+ }
|
|||
|
|
if (node.primaryKey) {
|
|||
|
|
this.append(' primary key');
|
|||
|
|
}
|
|||
|
|
@@ -563,6 +634,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
this.compileList(node.columns);
|
|||
|
|
this.append(')');
|
|||
|
|
}
|
|||
|
|
+ if (node.nullsNotDistinct) {
|
|||
|
|
+ this.append(' nulls not distinct');
|
|||
|
|
+ }
|
|||
|
|
if (node.where) {
|
|||
|
|
this.append(' ');
|
|||
|
|
this.visitNode(node.where);
|
|||
|
|
@@ -615,7 +689,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
this.visitNode(node.name);
|
|||
|
|
this.append(' ');
|
|||
|
|
}
|
|||
|
|
- this.append('unique (');
|
|||
|
|
+ this.append('unique');
|
|||
|
|
+ if (node.nullsNotDistinct) {
|
|||
|
|
+ this.append(' nulls not distinct');
|
|||
|
|
+ }
|
|||
|
|
+ this.append(' (');
|
|||
|
|
this.compileList(node.columns);
|
|||
|
|
this.append(')');
|
|||
|
|
}
|
|||
|
|
@@ -696,7 +774,13 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
this.visitNode(node.dropConstraint);
|
|||
|
|
}
|
|||
|
|
if (node.columnAlterations) {
|
|||
|
|
- this.compileList(node.columnAlterations);
|
|||
|
|
+ this.compileColumnAlterations(node.columnAlterations);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.addIndex) {
|
|||
|
|
+ this.visitNode(node.addIndex);
|
|||
|
|
+ }
|
|||
|
|
+ if (node.dropIndex) {
|
|||
|
|
+ this.visitNode(node.dropIndex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
visitAddColumn(node) {
|
|||
|
|
@@ -718,7 +802,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
this.visitNode(node.column);
|
|||
|
|
this.append(' ');
|
|||
|
|
if (node.dataType) {
|
|||
|
|
- this.append('type ');
|
|||
|
|
+ if (this.announcesNewColumnDataType()) {
|
|||
|
|
+ this.append('type ');
|
|||
|
|
+ }
|
|||
|
|
this.visitNode(node.dataType);
|
|||
|
|
if (node.dataTypeExpression) {
|
|||
|
|
this.append('using ');
|
|||
|
|
@@ -1004,6 +1090,23 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
this.visitNode(node.values[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
+ visitAddIndex(node) {
|
|||
|
|
+ this.append('add ');
|
|||
|
|
+ if (node.unique) {
|
|||
|
|
+ this.append('unique ');
|
|||
|
|
+ }
|
|||
|
|
+ this.append('index ');
|
|||
|
|
+ this.visitNode(node.name);
|
|||
|
|
+ if (node.columns) {
|
|||
|
|
+ this.append(' (');
|
|||
|
|
+ this.compileList(node.columns);
|
|||
|
|
+ this.append(')');
|
|||
|
|
+ }
|
|||
|
|
+ if (node.using) {
|
|||
|
|
+ this.append(' using ');
|
|||
|
|
+ this.visitNode(node.using);
|
|||
|
|
+ }
|
|||
|
|
+ }
|
|||
|
|
append(str) {
|
|||
|
|
this.#sql += str;
|
|||
|
|
}
|
|||
|
|
@@ -1077,6 +1180,16 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|||
|
|
: 1);
|
|||
|
|
return freeze(arr);
|
|||
|
|
}
|
|||
|
|
+ compileColumnAlterations(columnAlterations) {
|
|||
|
|
+ this.compileList(columnAlterations);
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * controls whether the dialect adds a "type" keyword before a column's new data
|
|||
|
|
+ * type in an ALTER TABLE statement.
|
|||
|
|
+ */
|
|||
|
|
+ announcesNewColumnDataType() {
|
|||
|
|
+ return true;
|
|||
|
|
+ }
|
|||
|
|
}
|
|||
|
|
const SELECT_MODIFIER_SQL = freeze({
|
|||
|
|
ForKeyShare: 'for key share',
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/query-compiler/query-compiler.d.ts b/node_modules/kysely/dist/esm/query-compiler/query-compiler.d.ts
|
|||
|
|
index e3a8555..e96bd90 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/query-compiler/query-compiler.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/query-compiler/query-compiler.d.ts
|
|||
|
|
@@ -2,17 +2,19 @@ import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
import { CreateIndexNode } from '../operation-node/create-index-node.js';
|
|||
|
|
import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
|
|||
|
|
import { CreateTableNode } from '../operation-node/create-table-node.js';
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
import { CreateTypeNode } from '../operation-node/create-type-node.js';
|
|||
|
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|||
|
|
import { DropIndexNode } from '../operation-node/drop-index-node.js';
|
|||
|
|
import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
|
|||
|
|
import { DropTableNode } from '../operation-node/drop-table-node.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
import { DropTypeNode } from '../operation-node/drop-type-node.js';
|
|||
|
|
import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|||
|
|
import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
import { RawNode } from '../operation-node/raw-node.js';
|
|||
|
|
import { CompiledQuery } from './compiled-query.js';
|
|||
|
|
-export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode;
|
|||
|
|
+export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode | CreateTriggerNode | DropTriggerNode;
|
|||
|
|
/**
|
|||
|
|
* a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.d.ts b/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..b297698
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.d.ts
|
|||
|
|
@@ -0,0 +1,104 @@
|
|||
|
|
+import { Expression } from '../expression/expression.js';
|
|||
|
|
+import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
+import { IndexType } from '../operation-node/create-index-node.js';
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { OrderedColumnName } from '../parser/reference-parser.js';
|
|||
|
|
+import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|||
|
|
+import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
+import { Compilable } from '../util/compilable.js';
|
|||
|
|
+import { QueryId } from '../util/query-id.js';
|
|||
|
|
+export declare class AlterTableAddIndexBuilder implements OperationNodeSource, Compilable {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: AlterTableAddIndexBuilderProps);
|
|||
|
|
+ /**
|
|||
|
|
+ * Makes the index unique.
|
|||
|
|
+ */
|
|||
|
|
+ unique(): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a column to the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|||
|
|
+ * for specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .createIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .column('age desc')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ column<CL extends string>(column: OrderedColumnName<CL>): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies a list of columns for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link column} for adding a single column or {@link expression} for
|
|||
|
|
+ * specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .columns(['first_name', 'age desc'])
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ columns<CL extends string>(columns: OrderedColumnName<CL>[]): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies an arbitrary expression for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * import { sql } from 'kysely'
|
|||
|
|
+ *
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_index')
|
|||
|
|
+ * .expression(sql`(first_name < 'Sami')`)
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ expression(expression: Expression<any>): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies the index type.
|
|||
|
|
+ */
|
|||
|
|
+ using(indexType: IndexType): AlterTableAddIndexBuilder;
|
|||
|
|
+ using(indexType: string): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call<T>(func: (qb: this) => T): T;
|
|||
|
|
+ toOperationNode(): AlterTableNode;
|
|||
|
|
+ compile(): CompiledQuery;
|
|||
|
|
+ execute(): Promise<void>;
|
|||
|
|
+}
|
|||
|
|
+export interface AlterTableAddIndexBuilderProps {
|
|||
|
|
+ readonly queryId: QueryId;
|
|||
|
|
+ readonly executor: QueryExecutor;
|
|||
|
|
+ readonly node: AlterTableNode;
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.js b/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..00a8ef4
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.js
|
|||
|
|
@@ -0,0 +1,143 @@
|
|||
|
|
+/// <reference types="./alter-table-add-index-builder.d.ts" />
|
|||
|
|
+import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|||
|
|
+import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|||
|
|
+import { RawNode } from '../operation-node/raw-node.js';
|
|||
|
|
+import { parseOrderedColumnName } from '../parser/reference-parser.js';
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
+export class AlterTableAddIndexBuilder {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = freeze(props);
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Makes the index unique.
|
|||
|
|
+ */
|
|||
|
|
+ unique() {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|||
|
|
+ unique: true,
|
|||
|
|
+ }),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a column to the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|||
|
|
+ * for specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .createIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .column('age desc')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ column(column) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [parseOrderedColumnName(column)]),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies a list of columns for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * Also see {@link column} for adding a single column or {@link expression} for
|
|||
|
|
+ * specifying an arbitrary expression.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_and_age_index')
|
|||
|
|
+ * .columns(['first_name', 'age desc'])
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ columns(columns) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(parseOrderedColumnName)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies an arbitrary expression for the index.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * import { sql } from 'kysely'
|
|||
|
|
+ *
|
|||
|
|
+ * await db.schema
|
|||
|
|
+ * .alterTable('person')
|
|||
|
|
+ * .addIndex('person_first_name_index')
|
|||
|
|
+ * .expression(sql`(first_name < 'Sami')`)
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ expression(expression) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [expression.toOperationNode()]),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ using(indexType) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|||
|
|
+ using: RawNode.createWithSql(indexType),
|
|||
|
|
+ }),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call(func) {
|
|||
|
|
+ return func(this);
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ compile() {
|
|||
|
|
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ async execute() {
|
|||
|
|
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+preventAwait(AlterTableAddIndexBuilder, "don't await AlterTableAddIndexBuilder instances directly. To execute the query you need to call `execute`");
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/alter-table-builder.d.ts b/node_modules/kysely/dist/esm/schema/alter-table-builder.d.ts
|
|||
|
|
index b0726ca..4453c5b 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/alter-table-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/alter-table-builder.d.ts
|
|||
|
|
@@ -11,6 +11,8 @@ import { AlterColumnBuilderCallback } from './alter-column-builder.js';
|
|||
|
|
import { AlterTableExecutor } from './alter-table-executor.js';
|
|||
|
|
import { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';
|
|||
|
|
import { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';
|
|||
|
|
+import { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';
|
|||
|
|
+import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `alter table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -35,7 +37,7 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|||
|
|
/**
|
|||
|
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|||
|
|
+ addUniqueConstraint(constraintName: string, columns: string[], build?: UniqueConstraintNodeBuilderCallback): AlterTableExecutor;
|
|||
|
|
/**
|
|||
|
|
* See {@link CreateTableBuilder.addCheckConstraint}
|
|||
|
|
*/
|
|||
|
|
@@ -53,6 +55,44 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|||
|
|
*/
|
|||
|
|
addPrimaryKeyConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|||
|
|
dropConstraint(constraintName: string): AlterTableDropConstraintBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to add index to table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .addIndex('person_email_index')
|
|||
|
|
+ * .column('email')
|
|||
|
|
+ * .unique()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add unique index `person_email_index` (`email`)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ addIndex(indexName: string): AlterTableAddIndexBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to drop index from table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .dropIndex('person_email_index')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` drop index `test_first_name_index`
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ dropIndex(indexName: string): AlterTableExecutor;
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/alter-table-builder.js b/node_modules/kysely/dist/esm/schema/alter-table-builder.js
|
|||
|
|
index f003eb8..2d8dac8 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/alter-table-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/alter-table-builder.js
|
|||
|
|
@@ -23,6 +23,10 @@ import { AlterTableExecutor } from './alter-table-executor.js';
|
|||
|
|
import { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';
|
|||
|
|
import { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';
|
|||
|
|
import { PrimaryConstraintNode } from '../operation-node/primary-constraint-node.js';
|
|||
|
|
+import { DropIndexNode } from '../operation-node/drop-index-node.js';
|
|||
|
|
+import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|||
|
|
+import { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';
|
|||
|
|
+import { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `alter table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -83,11 +87,12 @@ export class AlterTableBuilder {
|
|||
|
|
/**
|
|||
|
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName, columns) {
|
|||
|
|
+ addUniqueConstraint(constraintName, columns, build = noop) {
|
|||
|
|
+ const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));
|
|||
|
|
return new AlterTableExecutor({
|
|||
|
|
...this.#props,
|
|||
|
|
node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
- addConstraint: AddConstraintNode.create(UniqueConstraintNode.create(columns, constraintName)),
|
|||
|
|
+ addConstraint: AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
@@ -134,6 +139,58 @@ export class AlterTableBuilder {
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to add index to table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .addIndex('person_email_index')
|
|||
|
|
+ * .column('email')
|
|||
|
|
+ * .unique()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` add unique index `person_email_index` (`email`)
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ addIndex(indexName) {
|
|||
|
|
+ return new AlterTableAddIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ addIndex: AddIndexNode.create(indexName),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * This can be used to drop index from table.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.alterTable('person')
|
|||
|
|
+ * .dropIndex('person_email_index')
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (MySQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * alter table `person` drop index `test_first_name_index`
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ dropIndex(indexName) {
|
|||
|
|
+ return new AlterTableExecutor({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|||
|
|
+ dropIndex: DropIndexNode.create(indexName),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/column-definition-builder.d.ts b/node_modules/kysely/dist/esm/schema/column-definition-builder.d.ts
|
|||
|
|
index 2a99c4c..a76104c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/column-definition-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/column-definition-builder.d.ts
|
|||
|
|
@@ -183,6 +183,31 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
modifyFront(modifier: Expression<any>): ColumnDefinitionBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier.
|
|||
|
|
+ * Should be used with `unique` constraint.
|
|||
|
|
+ *
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('person')
|
|||
|
|
+ * .addColumn('id', 'integer', col => col.primaryKey())
|
|||
|
|
+ * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create table "person" (
|
|||
|
|
+ * "id" integer primary key,
|
|||
|
|
+ * "first_name" varchar(30) unique nulls not distinct
|
|||
|
|
+ * )
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct(): ColumnDefinitionBuilder;
|
|||
|
|
/**
|
|||
|
|
* This can be used to add any additional SQL to the end of the column definition.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/column-definition-builder.js b/node_modules/kysely/dist/esm/schema/column-definition-builder.js
|
|||
|
|
index 8ff9bf2..7111109 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/column-definition-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/column-definition-builder.js
|
|||
|
|
@@ -256,6 +256,33 @@ export class ColumnDefinitionBuilder {
|
|||
|
|
modifyFront(modifier) {
|
|||
|
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier.
|
|||
|
|
+ * Should be used with `unique` constraint.
|
|||
|
|
+ *
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('person')
|
|||
|
|
+ * .addColumn('id', 'integer', col => col.primaryKey())
|
|||
|
|
+ * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create table "person" (
|
|||
|
|
+ * "id" integer primary key,
|
|||
|
|
+ * "first_name" varchar(30) unique nulls not distinct
|
|||
|
|
+ * )
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct() {
|
|||
|
|
+ return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* This can be used to add any additional SQL to the end of the column definition.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/create-index-builder.d.ts b/node_modules/kysely/dist/esm/schema/create-index-builder.d.ts
|
|||
|
|
index 27502c4..b44e116 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/create-index-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/create-index-builder.d.ts
|
|||
|
|
@@ -22,6 +22,29 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
|
|||
|
|
* Makes the index unique.
|
|||
|
|
*/
|
|||
|
|
unique(): CreateIndexBuilder<C>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier to index.
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createIndex('person_first_name_index')
|
|||
|
|
+ * .on('person')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .nullsNotDistinct()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create index "person_first_name_index"
|
|||
|
|
+ * on "test" ("first_name")
|
|||
|
|
+ * nulls not distinct;
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct(): CreateIndexBuilder<C>;
|
|||
|
|
/**
|
|||
|
|
* Specifies the table for the index.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/create-index-builder.js b/node_modules/kysely/dist/esm/schema/create-index-builder.js
|
|||
|
|
index 7886ba1..5d40347 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/create-index-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/create-index-builder.js
|
|||
|
|
@@ -37,6 +37,36 @@ export class CreateIndexBuilder {
|
|||
|
|
}),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` specifier to index.
|
|||
|
|
+ * This only works on some dialects like PostgreSQL.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createIndex('person_first_name_index')
|
|||
|
|
+ * .on('person')
|
|||
|
|
+ * .column('first_name')
|
|||
|
|
+ * .nullsNotDistinct()
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create index "person_first_name_index"
|
|||
|
|
+ * on "test" ("first_name")
|
|||
|
|
+ * nulls not distinct;
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct() {
|
|||
|
|
+ return new CreateIndexBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateIndexNode.cloneWith(this.#props.node, {
|
|||
|
|
+ nullsNotDistinct: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Specifies the table for the index.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/create-table-builder.d.ts b/node_modules/kysely/dist/esm/schema/create-table-builder.d.ts
|
|||
|
|
index e160575..3b7e7ce 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/create-table-builder.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/create-table-builder.d.ts
|
|||
|
|
@@ -8,6 +8,7 @@ import { QueryId } from '../util/query-id.js';
|
|||
|
|
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|||
|
|
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|||
|
|
import { Expression } from '../expression/expression.js';
|
|||
|
|
+import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `create table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -56,7 +57,7 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* With this method, it's once again good to remember that Kysely just builds the
|
|||
|
|
- * query and doesn't provide the same API for all databses. For example, some
|
|||
|
|
+ * query and doesn't provide the same API for all databases. For example, some
|
|||
|
|
* databases like older MySQL don't support the `references` statement in the
|
|||
|
|
* column definition. Instead foreign key constraints need to be defined in the
|
|||
|
|
* `create table` query. See the next example:
|
|||
|
|
@@ -104,8 +105,13 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|||
|
|
* ```ts
|
|||
|
|
* addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
|
|||
|
|
* ```
|
|||
|
|
+ *
|
|||
|
|
+ * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
|
|||
|
|
+ * ```
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName: string, columns: C[]): CreateTableBuilder<TB, C>;
|
|||
|
|
+ addUniqueConstraint(constraintName: string, columns: C[], build?: UniqueConstraintNodeBuilderCallback): CreateTableBuilder<TB, C>;
|
|||
|
|
/**
|
|||
|
|
* Adds a check constraint.
|
|||
|
|
*
|
|||
|
|
@@ -205,6 +211,26 @@ export declare class CreateTableBuilder<TB extends string, C extends string = ne
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
modifyEnd(modifier: Expression<any>): CreateTableBuilder<TB, C>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Allows to create table from `select` query.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('copy')
|
|||
|
|
+ * .temporary()
|
|||
|
|
+ * .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create temporary table "copy" as
|
|||
|
|
+ * select "first_name", "last_name" from "person"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ as(expression: Expression<unknown>): CreateTableBuilder<string, never>;
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/create-table-builder.js b/node_modules/kysely/dist/esm/schema/create-table-builder.js
|
|||
|
|
index 20fb8c5..f3423e2 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/create-table-builder.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/create-table-builder.js
|
|||
|
|
@@ -13,6 +13,8 @@ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.j
|
|||
|
|
import { CheckConstraintNode } from '../operation-node/check-constraint-node.js';
|
|||
|
|
import { parseTable } from '../parser/table-parser.js';
|
|||
|
|
import { parseOnCommitAction } from '../parser/on-commit-action-parse.js';
|
|||
|
|
+import { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';
|
|||
|
|
+import { parseExpression } from '../parser/expression-parser.js';
|
|||
|
|
/**
|
|||
|
|
* This builder can be used to create a `create table` query.
|
|||
|
|
*/
|
|||
|
|
@@ -84,7 +86,7 @@ export class CreateTableBuilder {
|
|||
|
|
* ```
|
|||
|
|
*
|
|||
|
|
* With this method, it's once again good to remember that Kysely just builds the
|
|||
|
|
- * query and doesn't provide the same API for all databses. For example, some
|
|||
|
|
+ * query and doesn't provide the same API for all databases. For example, some
|
|||
|
|
* databases like older MySQL don't support the `references` statement in the
|
|||
|
|
* column definition. Instead foreign key constraints need to be defined in the
|
|||
|
|
* `create table` query. See the next example:
|
|||
|
|
@@ -143,11 +145,17 @@ export class CreateTableBuilder {
|
|||
|
|
* ```ts
|
|||
|
|
* addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'])
|
|||
|
|
* ```
|
|||
|
|
+ *
|
|||
|
|
+ * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * addUniqueConstraint('first_name_last_name_unique', ['first_name', 'last_name'], (builder) => builder.nullsNotDistinct())
|
|||
|
|
+ * ```
|
|||
|
|
*/
|
|||
|
|
- addUniqueConstraint(constraintName, columns) {
|
|||
|
|
+ addUniqueConstraint(constraintName, columns, build = noop) {
|
|||
|
|
+ const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));
|
|||
|
|
return new CreateTableBuilder({
|
|||
|
|
...this.#props,
|
|||
|
|
- node: CreateTableNode.cloneWithConstraint(this.#props.node, UniqueConstraintNode.create(columns, constraintName)),
|
|||
|
|
+ node: CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode()),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
@@ -270,6 +278,33 @@ export class CreateTableBuilder {
|
|||
|
|
node: CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode()),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ /**
|
|||
|
|
+ * Allows to create table from `select` query.
|
|||
|
|
+ *
|
|||
|
|
+ * ### Examples
|
|||
|
|
+ *
|
|||
|
|
+ * ```ts
|
|||
|
|
+ * db.schema.createTable('copy')
|
|||
|
|
+ * .temporary()
|
|||
|
|
+ * .as(db.selectFrom('person').select(['first_name', 'last_name']))
|
|||
|
|
+ * .execute()
|
|||
|
|
+ * ```
|
|||
|
|
+ *
|
|||
|
|
+ * The generated SQL (PostgreSQL):
|
|||
|
|
+ *
|
|||
|
|
+ * ```sql
|
|||
|
|
+ * create temporary table "copy" as
|
|||
|
|
+ * select "first_name", "last_name" from "person"
|
|||
|
|
+ * ```
|
|||
|
|
+ */
|
|||
|
|
+ as(expression) {
|
|||
|
|
+ return new CreateTableBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTableNode.cloneWith(this.#props.node, {
|
|||
|
|
+ selectQuery: parseExpression(expression),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Calls the given function passing `this` as the only argument.
|
|||
|
|
*
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/create-trigger-builder.d.ts b/node_modules/kysely/dist/esm/schema/create-trigger-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..c65746a
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/create-trigger-builder.d.ts
|
|||
|
|
@@ -0,0 +1,68 @@
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|||
|
|
+import { ReferenceExpression } from '../parser/reference-parser.js';
|
|||
|
|
+import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|||
|
|
+import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
+import { Compilable } from '../util/compilable.js';
|
|||
|
|
+import { QueryId } from '../util/query-id.js';
|
|||
|
|
+import { AnyColumn, AnyColumnWithTable, SqlBool } from '../util/type-utils.js';
|
|||
|
|
+import { TriggerEvent } from '../operation-node/trigger-event-node.js';
|
|||
|
|
+import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|||
|
|
+import { TriggerQueryCreator } from '../trigger-query-creator.js';
|
|||
|
|
+export type DatabaseWithOldNewTables<DB, TB extends keyof DB> = DB & {
|
|||
|
|
+ old: DB[TB];
|
|||
|
|
+ new: DB[TB];
|
|||
|
|
+};
|
|||
|
|
+/**
|
|||
|
|
+ * This builder can be used to create a `create table` query.
|
|||
|
|
+ */
|
|||
|
|
+export declare class CreateTriggerBuilder<DB, TB extends keyof DB> implements OperationNodeSource, Compilable {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: CreateTriggerBuilderProps);
|
|||
|
|
+ before(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ after(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ insteadOf(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ addEvent<E extends TriggerEvent>(event: E, columns?: E extends 'update' ? AnyColumn<DB, TB>[] : never[]): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ forEachRow(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ forEachStatement(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ follows(otherTriggerName: string): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ precedes(otherTriggerName: string): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies the table for the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ onTable<TE extends keyof DB & string>(table: TE, schema?: string): CreateTriggerBuilder<DB, TE>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "temporary" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * Use this to create a temporary trigger.
|
|||
|
|
+ */
|
|||
|
|
+ temporary(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "if not exists" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * If the trigger already exists, no error is thrown if this method has been called.
|
|||
|
|
+ */
|
|||
|
|
+ ifNotExists(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Only supported on PostgreSQL
|
|||
|
|
+ */
|
|||
|
|
+ orReplace(): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a query to the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ addQuery(build: QueryCreatorCallback<DB, TB>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ function(name: string, args: ReadonlyArray<ReferenceExpression<any, any>>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ when<RE extends AnyColumnWithTable<DatabaseWithOldNewTables<DB, TB>, 'old' | 'new'>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ when(factory: ExpressionOrFactory<DatabaseWithOldNewTables<DB, TB>, 'old' | 'new', SqlBool>): CreateTriggerBuilder<DB, TB>;
|
|||
|
|
+ $call<T>(func: (qb: this) => T): T;
|
|||
|
|
+ toOperationNode(): CreateTriggerNode;
|
|||
|
|
+ compile(): CompiledQuery;
|
|||
|
|
+ execute(): Promise<void>;
|
|||
|
|
+}
|
|||
|
|
+export interface CreateTriggerBuilderProps {
|
|||
|
|
+ readonly queryId: QueryId;
|
|||
|
|
+ readonly executor: QueryExecutor;
|
|||
|
|
+ readonly node: CreateTriggerNode;
|
|||
|
|
+}
|
|||
|
|
+export type QueryCreatorCallback<DB, TB extends keyof DB> = (creator: TriggerQueryCreator<DB, TB>) => OperationNodeSource;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/create-trigger-builder.js b/node_modules/kysely/dist/esm/schema/create-trigger-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..d3eb721
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/create-trigger-builder.js
|
|||
|
|
@@ -0,0 +1,177 @@
|
|||
|
|
+/// <reference types="./create-trigger-builder.d.ts" />
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
+import { QueryNode } from '../operation-node/query-node.js';
|
|||
|
|
+import { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';
|
|||
|
|
+import { parseOrderedColumnName, parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|||
|
|
+import { ImmediateValueTransformer } from '../plugin/immediate-value/immediate-value-transformer.js';
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
+import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|||
|
|
+import { TriggerOrderNode } from '../operation-node/trigger-order-node.js';
|
|||
|
|
+import { TriggerEventNode, } from '../operation-node/trigger-event-node.js';
|
|||
|
|
+import { FunctionNode } from '../operation-node/function-node.js';
|
|||
|
|
+import { TriggerQueryCreator } from '../trigger-query-creator.js';
|
|||
|
|
+import { TableNode } from '../operation-node/table-node.js';
|
|||
|
|
+/**
|
|||
|
|
+ * This builder can be used to create a `create table` query.
|
|||
|
|
+ */
|
|||
|
|
+export class CreateTriggerBuilder {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = freeze(props);
|
|||
|
|
+ }
|
|||
|
|
+ before() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ time: 'before',
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ after() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ time: 'after',
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ insteadOf() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ time: 'instead of',
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ addEvent(event, columns) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWithEvent(this.#props.node, TriggerEventNode.create(event, columns?.map(parseOrderedColumnName))),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ forEachRow() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ forEach: `row`,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ forEachStatement() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ forEach: `statement`,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ follows(otherTriggerName) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ order: TriggerOrderNode.create('follows', IdentifierNode.create(otherTriggerName)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ precedes(otherTriggerName) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ order: TriggerOrderNode.create('precedes', IdentifierNode.create(otherTriggerName)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Specifies the table for the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ onTable(table, schema) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ table: schema
|
|||
|
|
+ ? TableNode.createWithSchema(schema, table)
|
|||
|
|
+ : TableNode.create(table),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "temporary" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * Use this to create a temporary trigger.
|
|||
|
|
+ */
|
|||
|
|
+ temporary() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ temporary: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds the "if not exists" modifier.
|
|||
|
|
+ *
|
|||
|
|
+ * If the trigger already exists, no error is thrown if this method has been called.
|
|||
|
|
+ */
|
|||
|
|
+ ifNotExists() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ ifNotExists: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Only supported on PostgreSQL
|
|||
|
|
+ */
|
|||
|
|
+ orReplace() {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ orReplace: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds a query to the trigger.
|
|||
|
|
+ */
|
|||
|
|
+ addQuery(build) {
|
|||
|
|
+ const node = build(new TriggerQueryCreator({ executor: this.#props.executor })).toOperationNode();
|
|||
|
|
+ if (!QueryNode.is(node))
|
|||
|
|
+ throw new Error('Must be a query node.');
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWithQuery(this.#props.node, node),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ function(name, args) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ function: FunctionNode.create(name, parseReferenceExpressionOrList(args)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ when(...args) {
|
|||
|
|
+ const transformer = new ImmediateValueTransformer();
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: CreateTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ when: transformer.transformNode(parseValueBinaryOperationOrExpression(args)),
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ $call(func) {
|
|||
|
|
+ return func(this);
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ compile() {
|
|||
|
|
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ async execute() {
|
|||
|
|
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+preventAwait(CreateTriggerBuilder, "don't await CreateTriggerBuilder instances directly. To execute the query you need to call `execute`");
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/drop-trigger-builder.d.ts b/node_modules/kysely/dist/esm/schema/drop-trigger-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..b0e3fce
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/drop-trigger-builder.d.ts
|
|||
|
|
@@ -0,0 +1,25 @@
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|||
|
|
+import { Compilable } from '../util/compilable.js';
|
|||
|
|
+import { QueryExecutor } from '../query-executor/query-executor.js';
|
|||
|
|
+import { QueryId } from '../util/query-id.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
+export declare class DropTriggerBuilder implements OperationNodeSource, Compilable {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: DropTriggerBuilderProps);
|
|||
|
|
+ ifExists(): DropTriggerBuilder;
|
|||
|
|
+ cascade(): DropTriggerBuilder;
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call<T>(func: (qb: this) => T): T;
|
|||
|
|
+ toOperationNode(): DropTriggerNode;
|
|||
|
|
+ compile(): CompiledQuery;
|
|||
|
|
+ execute(): Promise<void>;
|
|||
|
|
+}
|
|||
|
|
+export interface DropTriggerBuilderProps {
|
|||
|
|
+ readonly queryId: QueryId;
|
|||
|
|
+ readonly executor: QueryExecutor;
|
|||
|
|
+ readonly node: DropTriggerNode;
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/drop-trigger-builder.js b/node_modules/kysely/dist/esm/schema/drop-trigger-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..0a0f2e1
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/drop-trigger-builder.js
|
|||
|
|
@@ -0,0 +1,43 @@
|
|||
|
|
+/// <reference types="./drop-trigger-builder.d.ts" />
|
|||
|
|
+import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
+import { freeze } from '../util/object-utils.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
+export class DropTriggerBuilder {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = freeze(props);
|
|||
|
|
+ }
|
|||
|
|
+ ifExists() {
|
|||
|
|
+ return new DropTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: DropTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ ifExists: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ cascade() {
|
|||
|
|
+ return new DropTriggerBuilder({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ node: DropTriggerNode.cloneWith(this.#props.node, {
|
|||
|
|
+ cascade: true,
|
|||
|
|
+ }),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|||
|
|
+ * what the provided function returns.
|
|||
|
|
+ */
|
|||
|
|
+ $call(func) {
|
|||
|
|
+ return func(this);
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ compile() {
|
|||
|
|
+ return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+ async execute() {
|
|||
|
|
+ await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+preventAwait(DropTriggerBuilder, "don't await DropTriggerBuilder instances directly. To execute the query you need to call `execute`");
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/schema.d.ts b/node_modules/kysely/dist/esm/schema/schema.d.ts
|
|||
|
|
index 8634b84..19cf68c 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/schema.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/schema.d.ts
|
|||
|
|
@@ -11,10 +11,12 @@ import { DropViewBuilder } from './drop-view-builder.js';
|
|||
|
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|||
|
|
import { CreateTypeBuilder } from './create-type-builder.js';
|
|||
|
|
import { DropTypeBuilder } from './drop-type-builder.js';
|
|||
|
|
+import { CreateTriggerBuilder } from './create-trigger-builder.js';
|
|||
|
|
+import { DropTriggerBuilder } from './drop-trigger-builder.js';
|
|||
|
|
/**
|
|||
|
|
* Provides methods for building database schema.
|
|||
|
|
*/
|
|||
|
|
-export declare class SchemaModule {
|
|||
|
|
+export declare class SchemaModule<DB> {
|
|||
|
|
#private;
|
|||
|
|
constructor(executor: QueryExecutor);
|
|||
|
|
/**
|
|||
|
|
@@ -201,16 +203,18 @@ export declare class SchemaModule {
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
dropType(typeName: string): DropTypeBuilder;
|
|||
|
|
+ createTrigger(name: string): CreateTriggerBuilder<DB, keyof DB>;
|
|||
|
|
+ dropTrigger(triggerName: string): DropTriggerBuilder;
|
|||
|
|
/**
|
|||
|
|
* Returns a copy of this schema module with the given plugin installed.
|
|||
|
|
*/
|
|||
|
|
- withPlugin(plugin: KyselyPlugin): SchemaModule;
|
|||
|
|
+ withPlugin(plugin: KyselyPlugin): SchemaModule<DB>;
|
|||
|
|
/**
|
|||
|
|
* Returns a copy of this schema module without any plugins.
|
|||
|
|
*/
|
|||
|
|
- withoutPlugins(): SchemaModule;
|
|||
|
|
+ withoutPlugins(): SchemaModule<DB>;
|
|||
|
|
/**
|
|||
|
|
* See {@link QueryCreator.withSchema}
|
|||
|
|
*/
|
|||
|
|
- withSchema(schema: string): SchemaModule;
|
|||
|
|
+ withSchema(schema: string): SchemaModule<DB>;
|
|||
|
|
}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/schema.js b/node_modules/kysely/dist/esm/schema/schema.js
|
|||
|
|
index 8244039..4ba6917 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/schema/schema.js
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/schema.js
|
|||
|
|
@@ -25,6 +25,11 @@ import { DropTypeBuilder } from './drop-type-builder.js';
|
|||
|
|
import { CreateTypeNode } from '../operation-node/create-type-node.js';
|
|||
|
|
import { DropTypeNode } from '../operation-node/drop-type-node.js';
|
|||
|
|
import { parseSchemableIdentifier } from '../parser/identifier-parser.js';
|
|||
|
|
+import { CreateTriggerBuilder } from './create-trigger-builder.js';
|
|||
|
|
+import { CreateTriggerNode } from '../operation-node/create-trigger-node.js';
|
|||
|
|
+import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|||
|
|
+import { DropTriggerNode } from '../operation-node/drop-trigger-node.js';
|
|||
|
|
+import { DropTriggerBuilder } from './drop-trigger-builder.js';
|
|||
|
|
/**
|
|||
|
|
* Provides methods for building database schema.
|
|||
|
|
*/
|
|||
|
|
@@ -283,6 +288,20 @@ export class SchemaModule {
|
|||
|
|
node: DropTypeNode.create(parseSchemableIdentifier(typeName)),
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
+ createTrigger(name) {
|
|||
|
|
+ return new CreateTriggerBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#executor,
|
|||
|
|
+ node: CreateTriggerNode.create(IdentifierNode.create(name)),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ dropTrigger(triggerName) {
|
|||
|
|
+ return new DropTriggerBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#executor,
|
|||
|
|
+ node: DropTriggerNode.create(parseSchemableIdentifier(triggerName)),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
/**
|
|||
|
|
* Returns a copy of this schema module with the given plugin installed.
|
|||
|
|
*/
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/unique-constraint-builder.d.ts b/node_modules/kysely/dist/esm/schema/unique-constraint-builder.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..4362213
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/unique-constraint-builder.d.ts
|
|||
|
|
@@ -0,0 +1,14 @@
|
|||
|
|
+import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|||
|
|
+import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
|
|||
|
|
+export declare class UniqueConstraintNodeBuilder implements OperationNodeSource {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(node: UniqueConstraintNode);
|
|||
|
|
+ toOperationNode(): UniqueConstraintNode;
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` to the unique constraint definition
|
|||
|
|
+ *
|
|||
|
|
+ * Supported by PostgreSQL dialect only
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct(): UniqueConstraintNodeBuilder;
|
|||
|
|
+}
|
|||
|
|
+export type UniqueConstraintNodeBuilderCallback = (builder: UniqueConstraintNodeBuilder) => UniqueConstraintNodeBuilder;
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/schema/unique-constraint-builder.js b/node_modules/kysely/dist/esm/schema/unique-constraint-builder.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..dba8cef
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/schema/unique-constraint-builder.js
|
|||
|
|
@@ -0,0 +1,21 @@
|
|||
|
|
+/// <reference types="./unique-constraint-builder.d.ts" />
|
|||
|
|
+import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
|
|||
|
|
+import { preventAwait } from '../util/prevent-await.js';
|
|||
|
|
+export class UniqueConstraintNodeBuilder {
|
|||
|
|
+ #node;
|
|||
|
|
+ constructor(node) {
|
|||
|
|
+ this.#node = node;
|
|||
|
|
+ }
|
|||
|
|
+ toOperationNode() {
|
|||
|
|
+ return this.#node;
|
|||
|
|
+ }
|
|||
|
|
+ /**
|
|||
|
|
+ * Adds `nulls not distinct` to the unique constraint definition
|
|||
|
|
+ *
|
|||
|
|
+ * Supported by PostgreSQL dialect only
|
|||
|
|
+ */
|
|||
|
|
+ nullsNotDistinct() {
|
|||
|
|
+ return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
+preventAwait(UniqueConstraintNodeBuilder, "don't await UniqueConstraintNodeBuilder instances directly.");
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/trigger-query-creator.d.ts b/node_modules/kysely/dist/esm/trigger-query-creator.d.ts
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..51d0b2f
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/trigger-query-creator.d.ts
|
|||
|
|
@@ -0,0 +1,35 @@
|
|||
|
|
+import { SelectQueryBuilder } from './query-builder/select-query-builder.js';
|
|||
|
|
+import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
|
|||
|
|
+import { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';
|
|||
|
|
+import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
|
|||
|
|
+import { TableExpression, From, FromTables, TableReference, ExtractTableAlias, AnyAliasedTable, PickTableWithAlias } from './parser/table-parser.js';
|
|||
|
|
+import { InsertResult } from './query-builder/insert-result.js';
|
|||
|
|
+import { DeleteResult } from './query-builder/delete-result.js';
|
|||
|
|
+import { UpdateResult } from './query-builder/update-result.js';
|
|||
|
|
+import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|||
|
|
+import { CallbackSelection, SelectCallback, SelectExpression, Selection } from './parser/select-parser.js';
|
|||
|
|
+import { QueryCreatorProps } from './query-creator.js';
|
|||
|
|
+import { DatabaseWithOldNewTables } from './schema/create-trigger-builder.js';
|
|||
|
|
+export declare class TriggerQueryCreator<DB, TB extends keyof DB> {
|
|||
|
|
+ #private;
|
|||
|
|
+ constructor(props: QueryCreatorProps);
|
|||
|
|
+ selectFrom<TE extends keyof DB & string>(from: TE[]): SelectQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TE>, FromTables<DB, never, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DatabaseWithOldNewTables<DB, TB> & PickTableWithAlias<DatabaseWithOldNewTables<DB, TB>, TE>, ExtractTableAlias<DB, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TE>, FromTables<DB, never, TE> | 'new' | 'old', {}>;
|
|||
|
|
+ selectNoFrom<SE extends SelectExpression<DB, never>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|||
|
|
+ selectNoFrom<CB extends SelectCallback<DB, never>>(callback: CB): SelectQueryBuilder<DB, never, CallbackSelection<DB, never, CB>>;
|
|||
|
|
+ selectNoFrom<SE extends SelectExpression<DB, never>>(selection: SE): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|||
|
|
+ insertInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
|
|||
|
|
+ replaceInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
|
|||
|
|
+ deleteFrom<TR extends keyof DB & string>(from: TR[]): DeleteQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ deleteFrom<TR extends TableReference<DB>>(tables: TR[]): DeleteQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TR>, FromTables<DB, never, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ deleteFrom<TR extends keyof DB & string>(from: TR): DeleteQueryBuilder<DatabaseWithOldNewTables<DB, TB>, ExtractTableAlias<DB, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DatabaseWithOldNewTables<DB, TB>, TR>, FromTables<DB, never, TR> | 'new' | 'old', DeleteResult>;
|
|||
|
|
+ updateTable<TR extends keyof DB & string>(table: TR): UpdateQueryBuilder<DB, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>;
|
|||
|
|
+ updateTable<TR extends AnyAliasedTable<DB>>(table: TR): UpdateQueryBuilder<DB & PickTableWithAlias<DB, TR>, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>;
|
|||
|
|
+ updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, FromTables<DB, never, TR>, UpdateResult>;
|
|||
|
|
+ withPlugin(plugin: KyselyPlugin): TriggerQueryCreator<DB, TB>;
|
|||
|
|
+ withoutPlugins(): TriggerQueryCreator<DB, TB>;
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/trigger-query-creator.js b/node_modules/kysely/dist/esm/trigger-query-creator.js
|
|||
|
|
new file mode 100644
|
|||
|
|
index 0000000..c8960dc
|
|||
|
|
--- /dev/null
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/trigger-query-creator.js
|
|||
|
|
@@ -0,0 +1,73 @@
|
|||
|
|
+/// <reference types="./trigger-query-creator.d.ts" />
|
|||
|
|
+import { createSelectQueryBuilder, } from './query-builder/select-query-builder.js';
|
|||
|
|
+import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
|
|||
|
|
+import { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';
|
|||
|
|
+import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
|
|||
|
|
+import { DeleteQueryNode } from './operation-node/delete-query-node.js';
|
|||
|
|
+import { InsertQueryNode } from './operation-node/insert-query-node.js';
|
|||
|
|
+import { SelectQueryNode } from './operation-node/select-query-node.js';
|
|||
|
|
+import { UpdateQueryNode } from './operation-node/update-query-node.js';
|
|||
|
|
+import { parseTable, parseTableExpression, parseTableExpressionOrList, } from './parser/table-parser.js';
|
|||
|
|
+import { createQueryId } from './util/query-id.js';
|
|||
|
|
+import { freeze } from './util/object-utils.js';
|
|||
|
|
+import { parseSelectArg, } from './parser/select-parser.js';
|
|||
|
|
+export class TriggerQueryCreator {
|
|||
|
|
+ #props;
|
|||
|
|
+ constructor(props) {
|
|||
|
|
+ this.#props = freeze(props);
|
|||
|
|
+ }
|
|||
|
|
+ selectFrom(from) {
|
|||
|
|
+ return createSelectQueryBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(from), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ selectNoFrom(selection) {
|
|||
|
|
+ return createSelectQueryBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: SelectQueryNode.cloneWithSelections(SelectQueryNode.create(this.#props.withNode), parseSelectArg(selection)),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ insertInto(table) {
|
|||
|
|
+ return new InsertQueryBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ replaceInto(table) {
|
|||
|
|
+ return new InsertQueryBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode, true),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ deleteFrom(tables) {
|
|||
|
|
+ return new DeleteQueryBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: DeleteQueryNode.create(parseTableExpressionOrList(tables), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ updateTable(table) {
|
|||
|
|
+ return new UpdateQueryBuilder({
|
|||
|
|
+ queryId: createQueryId(),
|
|||
|
|
+ executor: this.#props.executor,
|
|||
|
|
+ queryNode: UpdateQueryNode.create(parseTableExpression(table), this.#props.withNode),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ withPlugin(plugin) {
|
|||
|
|
+ return new TriggerQueryCreator({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ executor: this.#props.executor.withPlugin(plugin),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+ withoutPlugins() {
|
|||
|
|
+ return new TriggerQueryCreator({
|
|||
|
|
+ ...this.#props,
|
|||
|
|
+ executor: this.#props.executor.withoutPlugins(),
|
|||
|
|
+ });
|
|||
|
|
+ }
|
|||
|
|
+}
|
|||
|
|
diff --git a/node_modules/kysely/dist/esm/util/object-utils.d.ts b/node_modules/kysely/dist/esm/util/object-utils.d.ts
|
|||
|
|
index 1b9f563..c9fa82b 100644
|
|||
|
|
--- a/node_modules/kysely/dist/esm/util/object-utils.d.ts
|
|||
|
|
+++ b/node_modules/kysely/dist/esm/util/object-utils.d.ts
|
|||
|
|
@@ -6,7 +6,7 @@ export declare function isNumber(obj: unknown): obj is number;
|
|||
|
|
export declare function isBoolean(obj: unknown): obj is boolean;
|
|||
|
|
export declare function isNull(obj: unknown): obj is null;
|
|||
|
|
export declare function isDate(obj: unknown): obj is Date;
|
|||
|
|
-export declare function isBigInt(obj: unknown): obj is BigInt;
|
|||
|
|
+export declare function isBigInt(obj: unknown): obj is bigint;
|
|||
|
|
export declare function isBuffer(obj: unknown): obj is {
|
|||
|
|
length: number;
|
|||
|
|
};
|