kysely 0.16.1 → 0.16.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +205 -0
- package/dist/cjs/dialect/mysql/mysql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -205
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +10 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +103 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.js +2 -0
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +1 -103
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +11 -2
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -43
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +10 -2
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/migration/migrator.d.ts +2 -2
- package/dist/cjs/operation-node/primitive-value-list-node.d.ts +2 -3
- package/dist/cjs/operation-node/value-node.d.ts +3 -4
- package/dist/cjs/parser/complex-expression-parser.d.ts +1 -0
- package/dist/cjs/parser/complex-expression-parser.js +5 -1
- package/dist/cjs/parser/default-value-parser.d.ts +2 -3
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.js +4 -3
- package/dist/cjs/parser/reference-parser.d.ts +2 -3
- package/dist/cjs/parser/value-parser.d.ts +2 -3
- package/dist/cjs/parser/value-parser.js +6 -7
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/expression-builder.d.ts +42 -0
- package/dist/cjs/query-builder/expression-builder.js +48 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +16 -0
- package/dist/cjs/query-builder/insert-query-builder.js +16 -0
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +5 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +1 -2
- package/dist/cjs/query-creator.d.ts +1 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +30 -4
- package/dist/cjs/schema/alter-table-builder.js +2 -5
- package/dist/cjs/schema/column-definition-builder.d.ts +27 -2
- package/dist/cjs/util/object-utils.d.ts +4 -5
- package/dist/cjs/util/object-utils.js +8 -16
- package/dist/esm/dialect/database-introspector.js +1 -0
- package/dist/esm/dialect/dialect-adapter-base.js +1 -0
- package/dist/esm/dialect/dialect-adapter.js +1 -0
- package/dist/esm/dialect/dialect.js +1 -0
- package/dist/esm/dialect/mysql/mysql-adapter.js +1 -0
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +205 -0
- package/dist/esm/dialect/mysql/mysql-dialect-config.js +2 -0
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -205
- package/dist/esm/dialect/mysql/mysql-dialect.js +1 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +12 -3
- package/dist/esm/dialect/mysql/mysql-introspector.js +1 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +1 -0
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +103 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.js +2 -0
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +1 -103
- package/dist/esm/dialect/postgres/postgres-dialect.js +1 -0
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +12 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -0
- package/dist/esm/dialect/postgres/postgres-query-compiler.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +43 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -43
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-driver.js +11 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +1 -0
- package/dist/esm/driver/connection-provider.js +1 -0
- package/dist/esm/driver/database-connection.js +1 -0
- package/dist/esm/driver/default-connection-provider.js +1 -0
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +1 -0
- package/dist/esm/driver/single-connection-provider.js +1 -0
- package/dist/esm/dynamic/dynamic-reference-builder.js +1 -0
- package/dist/esm/dynamic/dynamic.js +1 -0
- package/dist/esm/index-nodeless.js +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/kysely.js +1 -0
- package/dist/esm/migration/file-migration-provider.js +1 -0
- package/dist/esm/migration/migrator.d.ts +2 -2
- package/dist/esm/migration/migrator.js +1 -0
- package/dist/esm/operation-node/add-column-node.js +1 -0
- package/dist/esm/operation-node/add-constraint-node.js +1 -0
- package/dist/esm/operation-node/alias-node.js +1 -0
- package/dist/esm/operation-node/alter-column-node.js +1 -0
- package/dist/esm/operation-node/alter-table-node.js +1 -0
- package/dist/esm/operation-node/and-node.js +1 -0
- package/dist/esm/operation-node/check-constraint-node.js +1 -0
- package/dist/esm/operation-node/column-definition-node.js +1 -0
- package/dist/esm/operation-node/column-node.js +1 -0
- package/dist/esm/operation-node/column-update-node.js +1 -0
- package/dist/esm/operation-node/common-table-expression-name-node.js +1 -0
- package/dist/esm/operation-node/common-table-expression-node.js +1 -0
- package/dist/esm/operation-node/constraint-node.js +1 -0
- package/dist/esm/operation-node/create-index-node.js +1 -0
- package/dist/esm/operation-node/create-schema-node.js +1 -0
- package/dist/esm/operation-node/create-table-node.js +1 -0
- package/dist/esm/operation-node/create-view-node.js +1 -0
- package/dist/esm/operation-node/data-type-node.js +1 -0
- package/dist/esm/operation-node/default-value-node.js +1 -0
- package/dist/esm/operation-node/delete-query-node.js +1 -0
- package/dist/esm/operation-node/drop-column-node.js +1 -0
- package/dist/esm/operation-node/drop-constraint-node.js +1 -0
- package/dist/esm/operation-node/drop-index-node.js +1 -0
- package/dist/esm/operation-node/drop-schema-node.js +1 -0
- package/dist/esm/operation-node/drop-table-node.js +1 -0
- package/dist/esm/operation-node/drop-view-node.js +1 -0
- package/dist/esm/operation-node/filter-node.js +1 -0
- package/dist/esm/operation-node/foreign-key-constraint-node.js +1 -0
- package/dist/esm/operation-node/from-node.js +1 -0
- package/dist/esm/operation-node/generated-node.js +1 -0
- package/dist/esm/operation-node/group-by-item-node.js +1 -0
- package/dist/esm/operation-node/group-by-node.js +1 -0
- package/dist/esm/operation-node/having-node.js +1 -0
- package/dist/esm/operation-node/identifier-node.js +1 -0
- package/dist/esm/operation-node/insert-query-node.js +1 -0
- package/dist/esm/operation-node/join-node.js +1 -0
- package/dist/esm/operation-node/limit-node.js +1 -0
- package/dist/esm/operation-node/list-node.js +1 -0
- package/dist/esm/operation-node/modify-column-node.js +1 -0
- package/dist/esm/operation-node/offset-node.js +1 -0
- package/dist/esm/operation-node/on-conflict-node.js +1 -0
- package/dist/esm/operation-node/on-duplicate-key-node.js +1 -0
- package/dist/esm/operation-node/on-node.js +1 -0
- package/dist/esm/operation-node/operation-node-source.js +1 -0
- package/dist/esm/operation-node/operation-node-transformer.js +1 -0
- package/dist/esm/operation-node/operation-node-utils.js +1 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.js +1 -0
- package/dist/esm/operation-node/operator-node.js +1 -0
- package/dist/esm/operation-node/or-node.js +1 -0
- package/dist/esm/operation-node/order-by-item-node.js +1 -0
- package/dist/esm/operation-node/order-by-node.js +1 -0
- package/dist/esm/operation-node/parens-node.js +1 -0
- package/dist/esm/operation-node/primary-constraint-node.js +1 -0
- package/dist/esm/operation-node/primitive-value-list-node.d.ts +2 -3
- package/dist/esm/operation-node/primitive-value-list-node.js +1 -0
- package/dist/esm/operation-node/query-node.js +1 -0
- package/dist/esm/operation-node/raw-node.js +1 -0
- package/dist/esm/operation-node/reference-node.js +1 -0
- package/dist/esm/operation-node/references-node.js +1 -0
- package/dist/esm/operation-node/rename-column-node.js +1 -0
- package/dist/esm/operation-node/returning-node.js +1 -0
- package/dist/esm/operation-node/select-all-node.js +1 -0
- package/dist/esm/operation-node/select-query-node.js +1 -0
- package/dist/esm/operation-node/selection-node.js +1 -0
- package/dist/esm/operation-node/table-node.js +1 -0
- package/dist/esm/operation-node/union-node.js +1 -0
- package/dist/esm/operation-node/unique-constraint-node.js +1 -0
- package/dist/esm/operation-node/update-query-node.js +1 -0
- package/dist/esm/operation-node/value-list-node.js +1 -0
- package/dist/esm/operation-node/value-node.d.ts +3 -4
- package/dist/esm/operation-node/value-node.js +1 -0
- package/dist/esm/operation-node/values-node.js +1 -0
- package/dist/esm/operation-node/where-node.js +1 -0
- package/dist/esm/operation-node/with-node.js +1 -0
- package/dist/esm/parser/complex-expression-parser.d.ts +1 -0
- package/dist/esm/parser/complex-expression-parser.js +4 -0
- package/dist/esm/parser/data-type-parser.js +1 -0
- package/dist/esm/parser/default-value-parser.d.ts +2 -3
- package/dist/esm/parser/default-value-parser.js +3 -2
- package/dist/esm/parser/filter-parser.js +1 -0
- package/dist/esm/parser/group-by-parser.js +1 -0
- package/dist/esm/parser/insert-values-parser.js +6 -4
- package/dist/esm/parser/join-parser.js +1 -0
- package/dist/esm/parser/order-by-parser.js +1 -0
- package/dist/esm/parser/parse-context.js +1 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.js +2 -1
- package/dist/esm/parser/returning-parser.js +1 -0
- package/dist/esm/parser/select-parser.js +1 -0
- package/dist/esm/parser/table-parser.js +1 -0
- package/dist/esm/parser/union-parser.js +1 -0
- package/dist/esm/parser/update-set-parser.js +1 -0
- package/dist/esm/parser/value-parser.d.ts +2 -3
- package/dist/esm/parser/value-parser.js +9 -9
- package/dist/esm/parser/with-parser.js +1 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +3 -2
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +1 -0
- package/dist/esm/plugin/camel-case/camel-case.js +1 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +1 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-transformer.js +1 -0
- package/dist/esm/plugin/kysely-plugin.js +1 -0
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +1 -0
- package/dist/esm/query-builder/delete-query-builder.js +1 -0
- package/dist/esm/query-builder/delete-result.js +1 -0
- package/dist/esm/query-builder/expression-builder.d.ts +42 -0
- package/dist/esm/query-builder/expression-builder.js +49 -0
- package/dist/esm/query-builder/function-builder.js +1 -0
- package/dist/esm/query-builder/having-interface.js +1 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +16 -0
- package/dist/esm/query-builder/insert-query-builder.js +17 -0
- package/dist/esm/query-builder/insert-result.js +1 -0
- package/dist/esm/query-builder/join-builder.js +1 -0
- package/dist/esm/query-builder/join-interface.js +1 -0
- package/dist/esm/query-builder/no-result-error.js +1 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +5 -3
- package/dist/esm/query-builder/on-conflict-builder.js +1 -0
- package/dist/esm/query-builder/returning-interface.js +1 -0
- package/dist/esm/query-builder/select-query-builder.js +1 -0
- package/dist/esm/query-builder/update-query-builder.js +1 -0
- package/dist/esm/query-builder/update-result.js +1 -0
- package/dist/esm/query-builder/where-interface.js +1 -0
- package/dist/esm/query-compiler/compiled-query.js +1 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +1 -2
- package/dist/esm/query-compiler/default-query-compiler.js +1 -0
- package/dist/esm/query-compiler/query-compiler.js +1 -0
- package/dist/esm/query-creator.d.ts +1 -1
- package/dist/esm/query-creator.js +1 -0
- package/dist/esm/query-executor/default-query-executor.js +1 -0
- package/dist/esm/query-executor/noop-query-executor.js +1 -0
- package/dist/esm/query-executor/query-executor.js +1 -0
- package/dist/esm/raw-builder/raw-builder.js +1 -0
- package/dist/esm/schema/alter-table-builder.d.ts +30 -4
- package/dist/esm/schema/alter-table-builder.js +3 -5
- package/dist/esm/schema/column-definition-builder.d.ts +27 -2
- package/dist/esm/schema/column-definition-builder.js +1 -0
- package/dist/esm/schema/create-index-builder.js +1 -0
- package/dist/esm/schema/create-schema-builder.js +1 -0
- package/dist/esm/schema/create-table-builder.js +1 -0
- package/dist/esm/schema/create-view-builder.js +1 -0
- package/dist/esm/schema/drop-index-builder.js +1 -0
- package/dist/esm/schema/drop-schema-builder.js +1 -0
- package/dist/esm/schema/drop-table-builder.js +1 -0
- package/dist/esm/schema/drop-view-builder.js +1 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +1 -0
- package/dist/esm/schema/schema.js +1 -0
- package/dist/esm/util/assert.js +1 -0
- package/dist/esm/util/column-type.js +1 -0
- package/dist/esm/util/compilable.js +1 -0
- package/dist/esm/util/log.js +1 -0
- package/dist/esm/util/object-utils.d.ts +4 -5
- package/dist/esm/util/object-utils.js +6 -12
- package/dist/esm/util/performance-now.js +1 -0
- package/dist/esm/util/prevent-await.js +1 -0
- package/dist/esm/util/private-symbols.js +1 -0
- package/dist/esm/util/query-id.js +1 -0
- package/dist/esm/util/random-string.js +1 -0
- package/dist/esm/util/type-utils.js +1 -0
- package/package.json +3 -2
- package/.prettierignore +0 -1
- package/dist/cjs/util/dynamic-import.d.ts +0 -2
- package/dist/cjs/util/dynamic-import.js +0 -32
- package/dist/esm/util/dynamic-import.d.ts +0 -2
- package/dist/esm/util/dynamic-import.js +0 -27
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import * as stream from 'stream';
|
|
3
|
-
import { ConnectionOptions } from 'tls';
|
|
4
1
|
import { Driver } from '../../driver/driver.js';
|
|
5
2
|
import { Kysely } from '../../kysely.js';
|
|
6
3
|
import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
7
4
|
import { Dialect } from '../dialect.js';
|
|
8
5
|
import { DatabaseIntrospector } from '../database-introspector.js';
|
|
9
6
|
import { DialectAdapter } from '../dialect-adapter.js';
|
|
10
|
-
import {
|
|
7
|
+
import { PostgresDialectConfig } from './postgres-dialect-config.js';
|
|
11
8
|
/**
|
|
12
9
|
* PostgreSQL dialect that uses the [pg](https://node-postgres.com/) library.
|
|
13
10
|
*
|
|
@@ -42,102 +39,3 @@ export declare class PostgresDialect implements Dialect {
|
|
|
42
39
|
*/
|
|
43
40
|
createIntrospector(db: Kysely<any>): DatabaseIntrospector;
|
|
44
41
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Config for the PostgreSQL dialect.
|
|
47
|
-
*
|
|
48
|
-
* This interface is equal to `pg` library's `Pool` config:
|
|
49
|
-
*
|
|
50
|
-
* https://node-postgres.com/api/pool
|
|
51
|
-
* https://node-postgres.com/api/client
|
|
52
|
-
*/
|
|
53
|
-
export interface PostgresDialectConfig {
|
|
54
|
-
/**
|
|
55
|
-
* defaults process.env.PGUSER || process.env.USER.
|
|
56
|
-
*/
|
|
57
|
-
user?: string;
|
|
58
|
-
/**
|
|
59
|
-
* default process.env.PGDATABASE || process.env.USER
|
|
60
|
-
*/
|
|
61
|
-
database?: string;
|
|
62
|
-
/**
|
|
63
|
-
* default process.env.PGPASSWORD
|
|
64
|
-
*/
|
|
65
|
-
password?: string | (() => string | Promise<string>);
|
|
66
|
-
/**
|
|
67
|
-
* default process.env.PGPORT
|
|
68
|
-
*/
|
|
69
|
-
port?: number;
|
|
70
|
-
/**
|
|
71
|
-
* default process.env.PGHOST
|
|
72
|
-
*/
|
|
73
|
-
host?: string;
|
|
74
|
-
/**
|
|
75
|
-
* e.g. postgres:*user:password@host:5432/database
|
|
76
|
-
*/
|
|
77
|
-
connectionString?: string;
|
|
78
|
-
/**
|
|
79
|
-
* passed directly to node.TLSSocket, supports all tls.connect options
|
|
80
|
-
*/
|
|
81
|
-
ssl?: boolean | ConnectionOptions;
|
|
82
|
-
/**
|
|
83
|
-
* Number of milliseconds to wait before timing out when connecting a new client
|
|
84
|
-
* by default this is 0 which means no timeout.
|
|
85
|
-
*/
|
|
86
|
-
connectionTimeoutMillis?: number;
|
|
87
|
-
/**
|
|
88
|
-
* Maximum number of clients the pool should contain. by default this is set to 10.
|
|
89
|
-
*/
|
|
90
|
-
max?: number;
|
|
91
|
-
/**
|
|
92
|
-
* Minimum number of clients the pool should contain
|
|
93
|
-
*/
|
|
94
|
-
min?: number;
|
|
95
|
-
/**
|
|
96
|
-
* Number of milliseconds a client must sit idle in the pool and not be checked out
|
|
97
|
-
* before it is disconnected from the backend and discarded.
|
|
98
|
-
*
|
|
99
|
-
* default is 10000 (10 seconds) - set to 0 to disable auto-disconnection of idle clients.
|
|
100
|
-
*/
|
|
101
|
-
idleTimeoutMillis?: number;
|
|
102
|
-
/**
|
|
103
|
-
* Default behavior is the pool will keep clients open & connected to the backend
|
|
104
|
-
* until idleTimeoutMillis expire for each client and node will maintain a ref
|
|
105
|
-
* to the socket on the client, keeping the event loop alive until all clients are closed
|
|
106
|
-
* after being idle or the pool is manually shutdown with `pool.end()`.
|
|
107
|
-
*
|
|
108
|
-
* Setting `allowExitOnIdle: true` in the config will allow the node event loop to exit
|
|
109
|
-
* as soon as all clients in the pool are idle, even if their socket is still open
|
|
110
|
-
* to the PostgreSQL server. This can be handy in scripts & tests
|
|
111
|
-
* where you don't want to wait for your clients to go idle before your process exits.
|
|
112
|
-
*/
|
|
113
|
-
allowExitOnIdle?: boolean;
|
|
114
|
-
log?: (...messages: any[]) => void;
|
|
115
|
-
/**
|
|
116
|
-
* Number of milliseconds before a statement in query will time out, default is no timeout.
|
|
117
|
-
*/
|
|
118
|
-
statement_timeout?: false | number;
|
|
119
|
-
/**
|
|
120
|
-
* Number of milliseconds before terminating any session with an open idle transaction.
|
|
121
|
-
* Default is no timeout.
|
|
122
|
-
*/
|
|
123
|
-
idle_in_transaction_session_timeout?: number;
|
|
124
|
-
/**
|
|
125
|
-
* Number of milliseconds before a query call will timeout, default is no timeout.
|
|
126
|
-
*/
|
|
127
|
-
query_timeout?: number;
|
|
128
|
-
/**
|
|
129
|
-
* The name of the application that created this Client instance.
|
|
130
|
-
*/
|
|
131
|
-
application_name?: string;
|
|
132
|
-
/**
|
|
133
|
-
* Called once for each created connection.
|
|
134
|
-
*
|
|
135
|
-
* This is a Kysely specific feature and does not come from the `pg` module.
|
|
136
|
-
*/
|
|
137
|
-
onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
138
|
-
keepAlive?: boolean;
|
|
139
|
-
keepAliveInitialDelayMillis?: number;
|
|
140
|
-
types?: any;
|
|
141
|
-
stream?: stream.Duplex;
|
|
142
|
-
parseInputDatesAsUTC?: boolean;
|
|
143
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
2
2
|
import { Driver, TransactionSettings } from '../../driver/driver.js';
|
|
3
|
-
import { PostgresDialectConfig } from './postgres-dialect.js';
|
|
3
|
+
import { PostgresDialectConfig } from './postgres-dialect-config.js';
|
|
4
4
|
export declare class PostgresDriver implements Driver {
|
|
5
5
|
#private;
|
|
6
6
|
constructor(config: PostgresDialectConfig);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PostgresDriver = void 0;
|
|
4
4
|
const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|
5
|
-
const
|
|
5
|
+
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
6
6
|
const PRIVATE_RELEASE_METHOD = Symbol();
|
|
7
7
|
class PostgresDriver {
|
|
8
8
|
#config;
|
|
@@ -66,7 +66,16 @@ class PostgresDriver {
|
|
|
66
66
|
exports.PostgresDriver = PostgresDriver;
|
|
67
67
|
async function importPgPool() {
|
|
68
68
|
try {
|
|
69
|
-
|
|
69
|
+
// The imported module name must be a string literal to make
|
|
70
|
+
// some bundlers work. So don't move this code behind a helper
|
|
71
|
+
// for example.
|
|
72
|
+
const pgModule = await Promise.resolve().then(() => require('pg'));
|
|
73
|
+
if ((0, object_utils_js_1.isFunction)(pgModule.Pool)) {
|
|
74
|
+
return pgModule.Pool;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return pgModule.default.Pool;
|
|
78
|
+
}
|
|
70
79
|
}
|
|
71
80
|
catch (error) {
|
|
72
81
|
throw new Error('Postgres client not installed. Please run `npm install pg`');
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
2
|
+
/**
|
|
3
|
+
* Config for the SQLite dialect.
|
|
4
|
+
*
|
|
5
|
+
* This interface is equal to `better-sqlite3` library's `Databse` class's constructor parameters.
|
|
6
|
+
*
|
|
7
|
+
* https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options
|
|
8
|
+
*/
|
|
9
|
+
export interface SqliteDialectConfig {
|
|
10
|
+
/**
|
|
11
|
+
* The database file path.
|
|
12
|
+
*
|
|
13
|
+
* This is passed as the first argument for the [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
|
|
14
|
+
* class constructor.
|
|
15
|
+
*/
|
|
16
|
+
databasePath: string;
|
|
17
|
+
/**
|
|
18
|
+
* Open the database connection in readonly mode (default: false)
|
|
19
|
+
*/
|
|
20
|
+
readonly?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* If the database does not exist, an Error will be thrown instead of creating a new file.
|
|
23
|
+
* This option is ignored for in-memory, temporary, or readonly database connections
|
|
24
|
+
* (default: false)
|
|
25
|
+
*/
|
|
26
|
+
fileMustExist?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The number of milliseconds to wait when executing queries on a locked database,
|
|
29
|
+
* before throwing a SQLITE_BUSY error (default: 5000)
|
|
30
|
+
*/
|
|
31
|
+
timeout?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Provide a function that gets called with every SQL string executed by the database connection
|
|
34
|
+
* (default: null)
|
|
35
|
+
*/
|
|
36
|
+
verbose?: (sql: string) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Called once when the first query is executed.
|
|
39
|
+
*
|
|
40
|
+
* This is a Kysely specific feature and does not come from the `better-sqlite3` module.
|
|
41
|
+
*/
|
|
42
|
+
onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
43
|
+
}
|
|
@@ -4,7 +4,7 @@ import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
|
4
4
|
import { Dialect } from '../dialect.js';
|
|
5
5
|
import { DatabaseIntrospector } from '../database-introspector.js';
|
|
6
6
|
import { DialectAdapter } from '../dialect-adapter.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SqliteDialectConfig } from './sqlite-dialect-config.js';
|
|
8
8
|
/**
|
|
9
9
|
* SQLite dialect that uses the [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3) library.
|
|
10
10
|
*
|
|
@@ -36,45 +36,3 @@ export declare class SqliteDialect implements Dialect {
|
|
|
36
36
|
*/
|
|
37
37
|
createIntrospector(db: Kysely<any>): DatabaseIntrospector;
|
|
38
38
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Config for the SQLite dialect.
|
|
41
|
-
*
|
|
42
|
-
* This interface is equal to `better-sqlite3` library's `Databse` class's constructor parameters.
|
|
43
|
-
*
|
|
44
|
-
* https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options
|
|
45
|
-
*/
|
|
46
|
-
export interface SqliteDialectConfig {
|
|
47
|
-
/**
|
|
48
|
-
* The database file path.
|
|
49
|
-
*
|
|
50
|
-
* This is passed as the first argument for the [Database](https://github.com/JoshuaWise/better-sqlite3/blob/master/docs/api.md#new-databasepath-options)
|
|
51
|
-
* class constructor.
|
|
52
|
-
*/
|
|
53
|
-
databasePath: string;
|
|
54
|
-
/**
|
|
55
|
-
* Open the database connection in readonly mode (default: false)
|
|
56
|
-
*/
|
|
57
|
-
readonly?: boolean;
|
|
58
|
-
/**
|
|
59
|
-
* If the database does not exist, an Error will be thrown instead of creating a new file.
|
|
60
|
-
* This option is ignored for in-memory, temporary, or readonly database connections
|
|
61
|
-
* (default: false)
|
|
62
|
-
*/
|
|
63
|
-
fileMustExist?: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* The number of milliseconds to wait when executing queries on a locked database,
|
|
66
|
-
* before throwing a SQLITE_BUSY error (default: 5000)
|
|
67
|
-
*/
|
|
68
|
-
timeout?: number;
|
|
69
|
-
/**
|
|
70
|
-
* Provide a function that gets called with every SQL string executed by the database connection
|
|
71
|
-
* (default: null)
|
|
72
|
-
*/
|
|
73
|
-
verbose?: (sql: string) => void;
|
|
74
|
-
/**
|
|
75
|
-
* Called once when the first query is executed.
|
|
76
|
-
*
|
|
77
|
-
* This is a Kysely specific feature and does not come from the `better-sqlite3` module.
|
|
78
|
-
*/
|
|
79
|
-
onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
|
|
80
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
2
2
|
import { Driver } from '../../driver/driver.js';
|
|
3
|
-
import { SqliteDialectConfig } from './sqlite-dialect.js';
|
|
3
|
+
import { SqliteDialectConfig } from './sqlite-dialect-config.js';
|
|
4
4
|
export declare class SqliteDriver implements Driver {
|
|
5
5
|
#private;
|
|
6
6
|
constructor(config: SqliteDialectConfig);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SqliteDriver = void 0;
|
|
4
4
|
const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|
5
|
-
const dynamic_import_js_1 = require("../../util/dynamic-import.js");
|
|
6
5
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
7
6
|
class SqliteDriver {
|
|
8
7
|
#config;
|
|
@@ -63,7 +62,16 @@ class SqliteDriver {
|
|
|
63
62
|
exports.SqliteDriver = SqliteDriver;
|
|
64
63
|
async function importBetterSqlite3Database() {
|
|
65
64
|
try {
|
|
66
|
-
|
|
65
|
+
// The imported module name must be a string literal to make
|
|
66
|
+
// some bundlers work. So don't move this code behind a helper
|
|
67
|
+
// for example.
|
|
68
|
+
const sqliteModule = await Promise.resolve().then(() => require('better-sqlite3'));
|
|
69
|
+
if ((0, object_utils_js_1.isFunction)(sqliteModule)) {
|
|
70
|
+
return sqliteModule;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return sqliteModule.default;
|
|
74
|
+
}
|
|
67
75
|
}
|
|
68
76
|
catch (error) {
|
|
69
77
|
throw new Error('SQLite client not installed. Please run `npm install better-sqlite3`');
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export * from './index-nodeless.js';
|
|
2
2
|
export * from './migration/file-migration-provider.js';
|
|
3
3
|
export * from './dialect/sqlite/sqlite-dialect.js';
|
|
4
|
+
export * from './dialect/sqlite/sqlite-dialect-config.js';
|
|
4
5
|
export * from './dialect/sqlite/sqlite-driver.js';
|
|
5
6
|
export * from './dialect/mysql/mysql-dialect.js';
|
|
7
|
+
export * from './dialect/mysql/mysql-dialect-config.js';
|
|
6
8
|
export * from './dialect/mysql/mysql-driver.js';
|
|
7
9
|
export * from './dialect/postgres/postgres-driver.js';
|
|
10
|
+
export * from './dialect/postgres/postgres-dialect-config.js';
|
|
8
11
|
export * from './dialect/postgres/postgres-dialect.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -13,8 +13,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
__exportStar(require("./index-nodeless.js"), exports);
|
|
14
14
|
__exportStar(require("./migration/file-migration-provider.js"), exports);
|
|
15
15
|
__exportStar(require("./dialect/sqlite/sqlite-dialect.js"), exports);
|
|
16
|
+
__exportStar(require("./dialect/sqlite/sqlite-dialect-config.js"), exports);
|
|
16
17
|
__exportStar(require("./dialect/sqlite/sqlite-driver.js"), exports);
|
|
17
18
|
__exportStar(require("./dialect/mysql/mysql-dialect.js"), exports);
|
|
19
|
+
__exportStar(require("./dialect/mysql/mysql-dialect-config.js"), exports);
|
|
18
20
|
__exportStar(require("./dialect/mysql/mysql-driver.js"), exports);
|
|
19
21
|
__exportStar(require("./dialect/postgres/postgres-driver.js"), exports);
|
|
22
|
+
__exportStar(require("./dialect/postgres/postgres-dialect-config.js"), exports);
|
|
20
23
|
__exportStar(require("./dialect/postgres/postgres-dialect.js"), exports);
|
|
@@ -144,8 +144,8 @@ export interface MigratorProps {
|
|
|
144
144
|
readonly provider: MigrationProvider;
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
147
|
-
* All migration methods ({@link
|
|
148
|
-
* {@link
|
|
147
|
+
* All migration methods ({@link Migrator.migrateTo | migrateTo},
|
|
148
|
+
* {@link Migrator.migrateToLatest | migrateToLatest} etc.) never
|
|
149
149
|
* throw but return this object instead.
|
|
150
150
|
*/
|
|
151
151
|
export interface MigrationResultSet {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
2
|
/**
|
|
4
3
|
* This node is basically just a performance optimization over the normal ValueListNode.
|
|
@@ -7,12 +6,12 @@ import { OperationNode } from './operation-node.js';
|
|
|
7
6
|
*/
|
|
8
7
|
export interface PrimitiveValueListNode extends OperationNode {
|
|
9
8
|
readonly kind: 'PrimitiveValueListNode';
|
|
10
|
-
readonly values: ReadonlyArray<
|
|
9
|
+
readonly values: ReadonlyArray<unknown>;
|
|
11
10
|
}
|
|
12
11
|
/**
|
|
13
12
|
* @internal
|
|
14
13
|
*/
|
|
15
14
|
export declare const PrimitiveValueListNode: Readonly<{
|
|
16
15
|
is(node: OperationNode): node is PrimitiveValueListNode;
|
|
17
|
-
create(values: ReadonlyArray<
|
|
16
|
+
create(values: ReadonlyArray<unknown>): PrimitiveValueListNode;
|
|
18
17
|
}>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
2
|
export interface ValueNode extends OperationNode {
|
|
4
3
|
readonly kind: 'ValueNode';
|
|
5
|
-
readonly value:
|
|
4
|
+
readonly value: unknown;
|
|
6
5
|
readonly immediate?: boolean;
|
|
7
6
|
}
|
|
8
7
|
/**
|
|
@@ -10,6 +9,6 @@ export interface ValueNode extends OperationNode {
|
|
|
10
9
|
*/
|
|
11
10
|
export declare const ValueNode: Readonly<{
|
|
12
11
|
is(node: OperationNode): node is ValueNode;
|
|
13
|
-
create(value:
|
|
14
|
-
createImmediate(value:
|
|
12
|
+
create(value: unknown): ValueNode;
|
|
13
|
+
createImmediate(value: unknown): ValueNode;
|
|
15
14
|
}>;
|
|
@@ -7,3 +7,4 @@ export declare type ComplexExpression<DB, TB extends keyof DB> = AnySelectQueryB
|
|
|
7
7
|
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
|
|
8
8
|
export declare function parseComplexExpression(ctx: ParseContext, exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
|
|
9
9
|
export declare function parseAliasedComplexExpression(ctx: ParseContext, exp: AliasedComplexExpression<any, any>): AliasNode;
|
|
10
|
+
export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseAliasedComplexExpression = exports.parseComplexExpression = void 0;
|
|
3
|
+
exports.isComplexExpression = exports.parseAliasedComplexExpression = exports.parseComplexExpression = void 0;
|
|
4
4
|
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
5
5
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
6
|
function parseComplexExpression(ctx, exp) {
|
|
@@ -23,3 +23,7 @@ function parseAliasedComplexExpression(ctx, exp) {
|
|
|
23
23
|
throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
|
|
24
24
|
}
|
|
25
25
|
exports.parseAliasedComplexExpression = parseAliasedComplexExpression;
|
|
26
|
+
function isComplexExpression(obj) {
|
|
27
|
+
return (0, operation_node_source_js_1.isOperationNodeSource)(obj) || (0, object_utils_js_1.isFunction)(obj);
|
|
28
|
+
}
|
|
29
|
+
exports.isComplexExpression = isComplexExpression;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
2
2
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export declare type DefaultValueExpression = PrimitiveValue | AnyRawBuilder;
|
|
3
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
|
+
export declare type DefaultValueExpression = unknown | RawBuilder;
|
|
6
5
|
export declare function parseDefaultValueExpression(value: DefaultValueExpression): ValueNode | RawNode;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseDefaultValueExpression = void 0;
|
|
4
|
-
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
5
4
|
const value_node_js_1 = require("../operation-node/value-node.js");
|
|
5
|
+
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
6
6
|
function parseDefaultValueExpression(value) {
|
|
7
|
-
return
|
|
7
|
+
return value instanceof raw_builder_js_1.RawBuilder
|
|
8
8
|
? value.toOperationNode()
|
|
9
9
|
: value_node_js_1.ValueNode.createImmediate(value);
|
|
10
10
|
}
|
|
@@ -7,6 +7,7 @@ const value_list_node_js_1 = require("../operation-node/value-list-node.js");
|
|
|
7
7
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
8
8
|
const value_parser_js_1 = require("./value-parser.js");
|
|
9
9
|
const values_node_js_1 = require("../operation-node/values-node.js");
|
|
10
|
+
const complex_expression_parser_js_1 = require("./complex-expression-parser.js");
|
|
10
11
|
function parseInsertObjectOrList(ctx, args) {
|
|
11
12
|
return parseInsertColumnsAndValues(ctx, Array.isArray(args) ? args : [args]);
|
|
12
13
|
}
|
|
@@ -40,8 +41,8 @@ function parseRowValues(ctx, row, columns) {
|
|
|
40
41
|
rowValues[columnIdx] = value;
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
|
-
if (rowValues.
|
|
44
|
-
return
|
|
44
|
+
if (rowValues.some(complex_expression_parser_js_1.isComplexExpression)) {
|
|
45
|
+
return value_list_node_js_1.ValueListNode.create(rowValues.map((it) => (0, value_parser_js_1.parseValueExpression)(ctx, it)));
|
|
45
46
|
}
|
|
46
|
-
return
|
|
47
|
+
return primitive_value_list_node_js_1.PrimitiveValueListNode.create(rowValues);
|
|
47
48
|
}
|
|
@@ -2,7 +2,6 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
3
|
import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
4
4
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
6
5
|
import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
7
6
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
7
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
@@ -13,8 +12,8 @@ import { SelectType } from '../util/column-type.js';
|
|
|
13
12
|
export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any> | ComplexExpression<DB, TB>;
|
|
14
13
|
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
15
14
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
16
|
-
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> :
|
|
17
|
-
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = 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> :
|
|
15
|
+
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : unknown;
|
|
16
|
+
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = 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> : unknown;
|
|
18
17
|
export declare function parseReferenceExpressionOrList(ctx: ParseContext, arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
|
|
19
18
|
export declare function parseReferenceExpression(ctx: ParseContext, exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
|
|
20
19
|
export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
2
2
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
-
import { PrimitiveValue } from '../util/object-utils.js';
|
|
4
3
|
import { ParseContext } from './parse-context.js';
|
|
5
4
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
6
5
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
7
6
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
8
7
|
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
|
|
9
8
|
export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
10
|
-
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any,
|
|
11
|
-
export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any,
|
|
9
|
+
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
|
|
10
|
+
export declare function parseValueExpression(ctx: ParseContext, exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
|
|
@@ -16,16 +16,15 @@ function parseValueExpressionOrList(ctx, arg) {
|
|
|
16
16
|
}
|
|
17
17
|
exports.parseValueExpressionOrList = parseValueExpressionOrList;
|
|
18
18
|
function parseValueExpression(ctx, exp) {
|
|
19
|
-
if ((0,
|
|
20
|
-
return
|
|
19
|
+
if ((0, complex_expression_parser_js_1.isComplexExpression)(exp)) {
|
|
20
|
+
return (0, complex_expression_parser_js_1.parseComplexExpression)(ctx, exp);
|
|
21
21
|
}
|
|
22
|
-
return
|
|
22
|
+
return value_node_js_1.ValueNode.create(exp);
|
|
23
23
|
}
|
|
24
24
|
exports.parseValueExpression = parseValueExpression;
|
|
25
25
|
function parseValueExpressionList(ctx, arg) {
|
|
26
|
-
if (arg.
|
|
27
|
-
|
|
28
|
-
return primitive_value_list_node_js_1.PrimitiveValueListNode.create(arg);
|
|
26
|
+
if (arg.some(complex_expression_parser_js_1.isComplexExpression)) {
|
|
27
|
+
return value_list_node_js_1.ValueListNode.create(arg.map((it) => parseValueExpression(ctx, it)));
|
|
29
28
|
}
|
|
30
|
-
return
|
|
29
|
+
return primitive_value_list_node_js_1.PrimitiveValueListNode.create(arg);
|
|
31
30
|
}
|
|
@@ -111,5 +111,5 @@ class CamelCasePlugin {
|
|
|
111
111
|
}
|
|
112
112
|
exports.CamelCasePlugin = CamelCasePlugin;
|
|
113
113
|
function canMap(obj) {
|
|
114
|
-
return (0, object_utils_js_1.isObject)(obj) && !(
|
|
114
|
+
return (0, object_utils_js_1.isObject)(obj) && !(0, object_utils_js_1.isDate)(obj) && !(0, object_utils_js_1.isBuffer)(obj);
|
|
115
115
|
}
|
|
@@ -3,6 +3,8 @@ import { TableExpression, TableExpressionDatabase, TableExpressionTables } from
|
|
|
3
3
|
import { NoopQueryExecutor } from '../query-executor/noop-query-executor.js';
|
|
4
4
|
import { ParseContext } from '../parser/parse-context.js';
|
|
5
5
|
import { FunctionBuilder } from './function-builder.js';
|
|
6
|
+
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
7
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
6
8
|
export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
7
9
|
#private;
|
|
8
10
|
constructor(props: ExpressionBuilderProps);
|
|
@@ -44,6 +46,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
44
46
|
* The query builder returned by this method is typed in a way that you can refer to
|
|
45
47
|
* all tables of the parent query in addition to the subquery's tables.
|
|
46
48
|
*
|
|
49
|
+
* This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
|
|
50
|
+
*
|
|
47
51
|
* ### Examples
|
|
48
52
|
*
|
|
49
53
|
* This example shows that you can refer to both `pet.owner_id` and `person.id`
|
|
@@ -86,6 +90,44 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
86
90
|
* See {@link QueryCreator.withSchema}
|
|
87
91
|
*/
|
|
88
92
|
withSchema(schema: string): ExpressionBuilder<DB, TB>;
|
|
93
|
+
/**
|
|
94
|
+
* See {@link QueryCreator.raw}.
|
|
95
|
+
*/
|
|
96
|
+
raw<T = unknown>(sql: string, parameters?: unknown[]): RawBuilder<T>;
|
|
97
|
+
/**
|
|
98
|
+
* This can be used to reference columns.
|
|
99
|
+
*
|
|
100
|
+
* ### Examples
|
|
101
|
+
*
|
|
102
|
+
* In the next example we use the `ref` method to reference
|
|
103
|
+
* columns of the virtual table `excluded` in a type-safe way
|
|
104
|
+
* to create an upsert operation:
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* db.insertInto('person')
|
|
108
|
+
* .values(person)
|
|
109
|
+
* .onConflict(oc => oc
|
|
110
|
+
* .column('id')
|
|
111
|
+
* .doUpdateSet({
|
|
112
|
+
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
113
|
+
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
114
|
+
* })
|
|
115
|
+
* )
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* In the next example we use `ref` in a raw expression. Unless you
|
|
119
|
+
* want to be as type-safe as possible, this is probably overkill:
|
|
120
|
+
*
|
|
121
|
+
* ```ts
|
|
122
|
+
* db.update('pet').set({
|
|
123
|
+
* name: (eb) => eb.raw('concat(?, ?)', [
|
|
124
|
+
* eb.ref('pet.name'),
|
|
125
|
+
* suffix,
|
|
126
|
+
* ])
|
|
127
|
+
* })
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
89
131
|
}
|
|
90
132
|
export interface ExpressionBuilderProps {
|
|
91
133
|
readonly executor: NoopQueryExecutor;
|
|
@@ -8,6 +8,7 @@ const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugi
|
|
|
8
8
|
const query_id_js_1 = require("../util/query-id.js");
|
|
9
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
10
|
const function_builder_js_1 = require("./function-builder.js");
|
|
11
|
+
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
11
12
|
class ExpressionBuilder {
|
|
12
13
|
#props;
|
|
13
14
|
constructor(props) {
|
|
@@ -64,5 +65,52 @@ class ExpressionBuilder {
|
|
|
64
65
|
executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
|
|
65
66
|
});
|
|
66
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* See {@link QueryCreator.raw}.
|
|
70
|
+
*/
|
|
71
|
+
raw(sql, parameters) {
|
|
72
|
+
return new raw_builder_js_1.RawBuilder({
|
|
73
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
74
|
+
executor: this.#props.executor,
|
|
75
|
+
sql,
|
|
76
|
+
parameters,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* This can be used to reference columns.
|
|
81
|
+
*
|
|
82
|
+
* ### Examples
|
|
83
|
+
*
|
|
84
|
+
* In the next example we use the `ref` method to reference
|
|
85
|
+
* columns of the virtual table `excluded` in a type-safe way
|
|
86
|
+
* to create an upsert operation:
|
|
87
|
+
*
|
|
88
|
+
* ```ts
|
|
89
|
+
* db.insertInto('person')
|
|
90
|
+
* .values(person)
|
|
91
|
+
* .onConflict(oc => oc
|
|
92
|
+
* .column('id')
|
|
93
|
+
* .doUpdateSet({
|
|
94
|
+
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
95
|
+
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
96
|
+
* })
|
|
97
|
+
* )
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* In the next example we use `ref` in a raw expression. Unless you
|
|
101
|
+
* want to be as type-safe as possible, this is probably overkill:
|
|
102
|
+
*
|
|
103
|
+
* ```ts
|
|
104
|
+
* db.update('pet').set({
|
|
105
|
+
* name: (eb) => eb.raw('concat(?, ?)', [
|
|
106
|
+
* eb.ref('pet.name'),
|
|
107
|
+
* suffix,
|
|
108
|
+
* ])
|
|
109
|
+
* })
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
ref(reference) {
|
|
113
|
+
return this.raw('??', [reference]);
|
|
114
|
+
}
|
|
67
115
|
}
|
|
68
116
|
exports.ExpressionBuilder = ExpressionBuilder;
|