kysely 0.27.4 → 0.27.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/.renovaterc.json +3 -0
- package/CONTRIBUTING.md +1 -1
- package/deno.check.d.ts +86 -0
- package/deno.check.json +21 -0
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +11 -2
- package/dist/cjs/dialect/dialect-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +37 -29
- package/dist/cjs/dialect/mssql/mssql-driver.js +20 -13
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/cjs/dialect/postgres/postgres-driver.js +3 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/cjs/driver/dummy-driver.d.ts +13 -12
- package/dist/cjs/driver/dummy-driver.js +13 -12
- package/dist/cjs/dynamic/dynamic.d.ts +6 -6
- package/dist/cjs/dynamic/dynamic.js +6 -6
- package/dist/cjs/expression/expression-builder.d.ts +152 -61
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -23
- package/dist/cjs/expression/expression.d.ts +40 -5
- package/dist/cjs/helpers/mssql.d.ts +74 -14
- package/dist/cjs/helpers/mssql.js +74 -14
- package/dist/cjs/helpers/mysql.d.ts +14 -10
- package/dist/cjs/helpers/mysql.js +14 -10
- package/dist/cjs/helpers/postgres.d.ts +7 -4
- package/dist/cjs/helpers/postgres.js +7 -4
- package/dist/cjs/helpers/sqlite.d.ts +41 -16
- package/dist/cjs/helpers/sqlite.js +41 -16
- package/dist/cjs/kysely.d.ts +99 -41
- package/dist/cjs/kysely.js +60 -36
- package/dist/cjs/migration/file-migration-provider.d.ts +2 -2
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/migration/migrator.d.ts +82 -14
- package/dist/cjs/migration/migrator.js +82 -14
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +9 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/data-type-node.js +12 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +1 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +9 -3
- package/dist/cjs/operation-node/operation-node-transformer.js +14 -3
- package/dist/cjs/operation-node/query-node.d.ts +4 -0
- package/dist/cjs/operation-node/query-node.js +8 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -8
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -0
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +52 -25
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +24 -19
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/cjs/plugin/kysely-plugin.d.ts +28 -6
- package/dist/cjs/plugin/noop-plugin.d.ts +28 -6
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/cjs/query-builder/aggregate-function-builder.js +30 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +137 -45
- package/dist/cjs/query-builder/delete-query-builder.js +76 -26
- package/dist/cjs/query-builder/function-module.d.ts +35 -88
- package/dist/cjs/query-builder/insert-query-builder.d.ts +239 -65
- package/dist/cjs/query-builder/insert-query-builder.js +188 -52
- package/dist/cjs/query-builder/insert-result.d.ts +10 -5
- package/dist/cjs/query-builder/insert-result.js +10 -5
- package/dist/cjs/query-builder/json-path-builder.d.ts +33 -9
- package/dist/cjs/query-builder/json-path-builder.js +8 -5
- package/dist/cjs/query-builder/merge-query-builder.d.ts +159 -21
- package/dist/cjs/query-builder/merge-query-builder.js +68 -6
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +51 -18
- package/dist/cjs/query-builder/on-conflict-builder.js +41 -16
- package/dist/cjs/query-builder/output-interface.d.ts +50 -7
- package/dist/cjs/query-builder/returning-interface.d.ts +5 -5
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +295 -63
- package/dist/cjs/query-builder/select-query-builder.js +7 -7
- package/dist/cjs/query-builder/update-query-builder.d.ts +138 -29
- package/dist/cjs/query-builder/update-query-builder.js +75 -10
- package/dist/cjs/query-builder/update-result.d.ts +2 -2
- package/dist/cjs/query-builder/update-result.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +5 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +20 -0
- package/dist/cjs/query-creator.d.ts +66 -18
- package/dist/cjs/query-creator.js +2 -2
- package/dist/cjs/raw-builder/raw-builder.d.ts +29 -7
- package/dist/cjs/raw-builder/sql.d.ts +26 -7
- package/dist/cjs/schema/alter-column-builder.d.ts +17 -3
- package/dist/cjs/schema/alter-column-builder.js +17 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +43 -9
- package/dist/cjs/schema/alter-table-add-index-builder.js +26 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +283 -26
- package/dist/cjs/schema/column-definition-builder.js +283 -26
- package/dist/cjs/schema/create-table-builder.d.ts +86 -33
- package/dist/cjs/schema/create-table-builder.js +86 -33
- package/dist/cjs/util/column-type.d.ts +5 -9
- package/dist/cjs/util/require-all-props.d.ts +4 -2
- package/dist/cjs/util/require-all-props.js +4 -2
- package/dist/cjs/util/streamable.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +4 -2
- package/dist/esm/dialect/dialect-adapter-base.d.ts +11 -2
- package/dist/esm/dialect/dialect-adapter.d.ts +11 -2
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +37 -29
- package/dist/esm/dialect/mssql/mssql-driver.js +20 -13
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +11 -2
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +11 -2
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +10 -3
- package/dist/esm/dialect/postgres/postgres-driver.js +3 -0
- package/dist/esm/dialect/postgres/postgres-introspector.js +5 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +11 -2
- package/dist/esm/driver/dummy-driver.d.ts +13 -12
- package/dist/esm/driver/dummy-driver.js +13 -12
- package/dist/esm/dynamic/dynamic.d.ts +6 -6
- package/dist/esm/dynamic/dynamic.js +6 -6
- package/dist/esm/expression/expression-builder.d.ts +152 -61
- package/dist/esm/expression/expression-wrapper.d.ts +92 -23
- package/dist/esm/expression/expression.d.ts +40 -5
- package/dist/esm/helpers/mssql.d.ts +74 -14
- package/dist/esm/helpers/mssql.js +74 -14
- package/dist/esm/helpers/mysql.d.ts +14 -10
- package/dist/esm/helpers/mysql.js +14 -10
- package/dist/esm/helpers/postgres.d.ts +7 -4
- package/dist/esm/helpers/postgres.js +7 -4
- package/dist/esm/helpers/sqlite.d.ts +41 -16
- package/dist/esm/helpers/sqlite.js +41 -16
- package/dist/esm/kysely.d.ts +99 -41
- package/dist/esm/kysely.js +60 -36
- package/dist/esm/migration/file-migration-provider.d.ts +2 -2
- package/dist/esm/migration/file-migration-provider.js +2 -2
- package/dist/esm/migration/migrator.d.ts +82 -14
- package/dist/esm/migration/migrator.js +82 -14
- package/dist/esm/operation-node/aggregate-function-node.d.ts +4 -0
- package/dist/esm/operation-node/aggregate-function-node.js +9 -0
- package/dist/esm/operation-node/data-type-node.d.ts +1 -1
- package/dist/esm/operation-node/data-type-node.js +12 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +1 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +9 -3
- package/dist/esm/operation-node/operation-node-transformer.js +14 -3
- package/dist/esm/operation-node/query-node.d.ts +4 -0
- package/dist/esm/operation-node/query-node.js +8 -0
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -8
- package/dist/esm/operation-node/update-query-node.d.ts +1 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +52 -25
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +24 -19
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +29 -7
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +2 -2
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.d.ts +28 -6
- package/dist/esm/plugin/kysely-plugin.d.ts +28 -6
- package/dist/esm/plugin/noop-plugin.d.ts +28 -6
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +62 -9
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +34 -3
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +28 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +43 -1
- package/dist/esm/query-builder/aggregate-function-builder.js +30 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +137 -45
- package/dist/esm/query-builder/delete-query-builder.js +76 -26
- package/dist/esm/query-builder/function-module.d.ts +35 -88
- package/dist/esm/query-builder/insert-query-builder.d.ts +239 -65
- package/dist/esm/query-builder/insert-query-builder.js +188 -52
- package/dist/esm/query-builder/insert-result.d.ts +10 -5
- package/dist/esm/query-builder/insert-result.js +10 -5
- package/dist/esm/query-builder/json-path-builder.d.ts +33 -9
- package/dist/esm/query-builder/json-path-builder.js +8 -5
- package/dist/esm/query-builder/merge-query-builder.d.ts +159 -21
- package/dist/esm/query-builder/merge-query-builder.js +68 -6
- package/dist/esm/query-builder/on-conflict-builder.d.ts +51 -18
- package/dist/esm/query-builder/on-conflict-builder.js +41 -16
- package/dist/esm/query-builder/output-interface.d.ts +50 -7
- package/dist/esm/query-builder/returning-interface.d.ts +5 -5
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +8 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +295 -63
- package/dist/esm/query-builder/select-query-builder.js +7 -7
- package/dist/esm/query-builder/update-query-builder.d.ts +138 -29
- package/dist/esm/query-builder/update-query-builder.js +75 -10
- package/dist/esm/query-builder/update-result.d.ts +2 -2
- package/dist/esm/query-builder/update-result.js +2 -2
- package/dist/esm/query-builder/where-interface.d.ts +5 -1
- package/dist/esm/query-compiler/default-query-compiler.js +20 -0
- package/dist/esm/query-creator.d.ts +66 -18
- package/dist/esm/query-creator.js +2 -2
- package/dist/esm/raw-builder/raw-builder.d.ts +29 -7
- package/dist/esm/raw-builder/sql.d.ts +26 -7
- package/dist/esm/schema/alter-column-builder.d.ts +17 -3
- package/dist/esm/schema/alter-column-builder.js +17 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +43 -9
- package/dist/esm/schema/alter-table-add-index-builder.js +26 -9
- package/dist/esm/schema/column-definition-builder.d.ts +283 -26
- package/dist/esm/schema/column-definition-builder.js +283 -26
- package/dist/esm/schema/create-table-builder.d.ts +86 -33
- package/dist/esm/schema/create-table-builder.js +86 -33
- package/dist/esm/util/column-type.d.ts +5 -9
- package/dist/esm/util/require-all-props.d.ts +4 -2
- package/dist/esm/util/require-all-props.js +4 -2
- package/dist/esm/util/streamable.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +4 -2
- package/package.json +28 -23
|
@@ -17,11 +17,19 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
17
17
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
18
18
|
* Simply add this getter for your expression and always return `undefined` from it:
|
|
19
19
|
*
|
|
20
|
+
* ### Examples
|
|
21
|
+
*
|
|
20
22
|
* ```ts
|
|
23
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
24
|
+
*
|
|
21
25
|
* class SomeExpression<T> implements Expression<T> {
|
|
22
26
|
* get expressionType(): T | undefined {
|
|
23
27
|
* return undefined
|
|
24
28
|
* }
|
|
29
|
+
*
|
|
30
|
+
* toOperationNode(): OperationNode {
|
|
31
|
+
* return sql`some sql here`.toOperationNode()
|
|
32
|
+
* }
|
|
25
33
|
* }
|
|
26
34
|
* ```
|
|
27
35
|
*
|
|
@@ -33,6 +41,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
33
41
|
/**
|
|
34
42
|
* Returns an aliased version of the expression.
|
|
35
43
|
*
|
|
44
|
+
* ### Examples
|
|
45
|
+
*
|
|
36
46
|
* In addition to slapping `as "the_alias"` to the end of the SQL,
|
|
37
47
|
* this method also provides strict typing:
|
|
38
48
|
*
|
|
@@ -50,7 +60,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
50
60
|
*
|
|
51
61
|
* The generated SQL (PostgreSQL):
|
|
52
62
|
*
|
|
53
|
-
* ```
|
|
63
|
+
* ```sql
|
|
54
64
|
* select "first_name" = $1 as "is_jennifer"
|
|
55
65
|
* from "person"
|
|
56
66
|
* ```
|
|
@@ -59,6 +69,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
59
69
|
/**
|
|
60
70
|
* Returns an aliased version of the expression.
|
|
61
71
|
*
|
|
72
|
+
* ### Examples
|
|
73
|
+
*
|
|
62
74
|
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
63
75
|
* this method also provides strict typing:
|
|
64
76
|
*
|
|
@@ -67,7 +79,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
67
79
|
* .selectFrom('person')
|
|
68
80
|
* .select((eb) =>
|
|
69
81
|
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
70
|
-
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
82
|
+
* eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
|
|
71
83
|
* )
|
|
72
84
|
* .executeTakeFirstOrThrow()
|
|
73
85
|
*
|
|
@@ -77,7 +89,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
77
89
|
*
|
|
78
90
|
* The generated SQL (PostgreSQL):
|
|
79
91
|
*
|
|
80
|
-
* ```
|
|
92
|
+
* ```sql
|
|
81
93
|
* select
|
|
82
94
|
* concat("first_name", $1, "last_name") as "full_name"
|
|
83
95
|
* from
|
|
@@ -88,6 +100,8 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
88
100
|
* provide the alias as the only type argument:
|
|
89
101
|
*
|
|
90
102
|
* ```ts
|
|
103
|
+
* import { sql } from 'kysely'
|
|
104
|
+
*
|
|
91
105
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
92
106
|
*
|
|
93
107
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -102,11 +116,12 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
102
116
|
* .expression(
|
|
103
117
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
104
118
|
* )
|
|
119
|
+
* .execute()
|
|
105
120
|
* ```
|
|
106
121
|
*
|
|
107
122
|
* The generated SQL (PostgreSQL):
|
|
108
123
|
*
|
|
109
|
-
* ```
|
|
124
|
+
* ```sql
|
|
110
125
|
* insert into "person" ("first_name", "last_name")
|
|
111
126
|
* from (values (1, 'foo')) as t(a, b)
|
|
112
127
|
* select "t"."a", "t"."b"
|
|
@@ -121,17 +136,18 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
121
136
|
* ### Examples
|
|
122
137
|
*
|
|
123
138
|
* ```ts
|
|
124
|
-
* db.selectFrom('person')
|
|
139
|
+
* const result = await db.selectFrom('person')
|
|
125
140
|
* .selectAll()
|
|
126
141
|
* .where(eb => eb('first_name', '=', 'Jennifer')
|
|
127
142
|
* .or('first_name', '=', 'Arnold')
|
|
128
143
|
* .or('first_name', '=', 'Sylvester')
|
|
129
144
|
* )
|
|
145
|
+
* .execute()
|
|
130
146
|
* ```
|
|
131
147
|
*
|
|
132
148
|
* The generated SQL (PostgreSQL):
|
|
133
149
|
*
|
|
134
|
-
* ```
|
|
150
|
+
* ```sql
|
|
135
151
|
* select *
|
|
136
152
|
* from "person"
|
|
137
153
|
* where (
|
|
@@ -145,7 +161,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
145
161
|
* this method:
|
|
146
162
|
*
|
|
147
163
|
* ```ts
|
|
148
|
-
* db.selectFrom('person')
|
|
164
|
+
* const result = await db.selectFrom('person')
|
|
149
165
|
* .selectAll()
|
|
150
166
|
* .where(eb => eb('first_name', '=', 'Jennifer')
|
|
151
167
|
* .or(eb('first_name', '=', 'Sylvester').and('last_name', '=', 'Stallone'))
|
|
@@ -153,13 +169,14 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
153
169
|
* eb.selectFrom('pet')
|
|
154
170
|
* .select('id')
|
|
155
171
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
156
|
-
* )
|
|
172
|
+
* ))
|
|
157
173
|
* )
|
|
174
|
+
* .execute()
|
|
158
175
|
* ```
|
|
159
176
|
*
|
|
160
177
|
* The generated SQL (PostgreSQL):
|
|
161
178
|
*
|
|
162
|
-
* ```
|
|
179
|
+
* ```sql
|
|
163
180
|
* select *
|
|
164
181
|
* from "person"
|
|
165
182
|
* where (
|
|
@@ -183,17 +200,18 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
183
200
|
* ### Examples
|
|
184
201
|
*
|
|
185
202
|
* ```ts
|
|
186
|
-
* db.selectFrom('person')
|
|
203
|
+
* const result = await db.selectFrom('person')
|
|
187
204
|
* .selectAll()
|
|
188
205
|
* .where(eb => eb('first_name', '=', 'Jennifer')
|
|
189
206
|
* .and('last_name', '=', 'Aniston')
|
|
190
207
|
* .and('age', '>', 40)
|
|
191
208
|
* )
|
|
209
|
+
* .execute()
|
|
192
210
|
* ```
|
|
193
211
|
*
|
|
194
212
|
* The generated SQL (PostgreSQL):
|
|
195
213
|
*
|
|
196
|
-
* ```
|
|
214
|
+
* ```sql
|
|
197
215
|
* select *
|
|
198
216
|
* from "person"
|
|
199
217
|
* where (
|
|
@@ -207,7 +225,7 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
207
225
|
* this method:
|
|
208
226
|
*
|
|
209
227
|
* ```ts
|
|
210
|
-
* db.selectFrom('person')
|
|
228
|
+
* const result = await db.selectFrom('person')
|
|
211
229
|
* .selectAll()
|
|
212
230
|
* .where(eb => eb('first_name', '=', 'Jennifer')
|
|
213
231
|
* .and(eb('first_name', '=', 'Sylvester').or('last_name', '=', 'Stallone'))
|
|
@@ -215,13 +233,14 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
215
233
|
* eb.selectFrom('pet')
|
|
216
234
|
* .select('id')
|
|
217
235
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
218
|
-
* )
|
|
236
|
+
* ))
|
|
219
237
|
* )
|
|
238
|
+
* .execute()
|
|
220
239
|
* ```
|
|
221
240
|
*
|
|
222
241
|
* The generated SQL (PostgreSQL):
|
|
223
242
|
*
|
|
224
|
-
* ```
|
|
243
|
+
* ```sql
|
|
225
244
|
* select *
|
|
226
245
|
* from "person"
|
|
227
246
|
* where (
|
|
@@ -257,11 +276,19 @@ export declare class ExpressionWrapper<DB, TB extends keyof DB, T> implements Al
|
|
|
257
276
|
/**
|
|
258
277
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
259
278
|
*
|
|
279
|
+
* ### Examples
|
|
280
|
+
*
|
|
260
281
|
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
261
282
|
* template tag to build the node:
|
|
262
283
|
*
|
|
263
284
|
* ```ts
|
|
285
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
286
|
+
*
|
|
264
287
|
* class SomeExpression<T> implements Expression<T> {
|
|
288
|
+
* get expressionType(): T | undefined {
|
|
289
|
+
* return undefined
|
|
290
|
+
* }
|
|
291
|
+
*
|
|
265
292
|
* toOperationNode(): OperationNode {
|
|
266
293
|
* return sql`some sql here`.toOperationNode()
|
|
267
294
|
* }
|
|
@@ -296,11 +323,19 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
296
323
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
297
324
|
* Simply add this getter for your expression and always return `undefined` from it:
|
|
298
325
|
*
|
|
326
|
+
* ### Examples
|
|
327
|
+
*
|
|
299
328
|
* ```ts
|
|
329
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
330
|
+
*
|
|
300
331
|
* class SomeExpression<T> implements Expression<T> {
|
|
301
332
|
* get expressionType(): T | undefined {
|
|
302
333
|
* return undefined
|
|
303
334
|
* }
|
|
335
|
+
*
|
|
336
|
+
* toOperationNode(): OperationNode {
|
|
337
|
+
* return sql`some sql here`.toOperationNode()
|
|
338
|
+
* }
|
|
304
339
|
* }
|
|
305
340
|
* ```
|
|
306
341
|
*
|
|
@@ -331,7 +366,7 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
331
366
|
*
|
|
332
367
|
* The generated SQL (PostgreSQL):
|
|
333
368
|
*
|
|
334
|
-
* ```
|
|
369
|
+
* ```sql
|
|
335
370
|
* select "first_name" = $1 or "first_name" = $2 as "is_jennifer_or_sylvester"
|
|
336
371
|
* from "person"
|
|
337
372
|
* ```
|
|
@@ -340,6 +375,8 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
340
375
|
/**
|
|
341
376
|
* Returns an aliased version of the expression.
|
|
342
377
|
*
|
|
378
|
+
* ### Examples
|
|
379
|
+
*
|
|
343
380
|
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
344
381
|
* this method also provides strict typing:
|
|
345
382
|
*
|
|
@@ -348,7 +385,7 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
348
385
|
* .selectFrom('person')
|
|
349
386
|
* .select((eb) =>
|
|
350
387
|
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
351
|
-
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
388
|
+
* eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
|
|
352
389
|
* )
|
|
353
390
|
* .executeTakeFirstOrThrow()
|
|
354
391
|
*
|
|
@@ -358,7 +395,7 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
358
395
|
*
|
|
359
396
|
* The generated SQL (PostgreSQL):
|
|
360
397
|
*
|
|
361
|
-
* ```
|
|
398
|
+
* ```sql
|
|
362
399
|
* select
|
|
363
400
|
* concat("first_name", $1, "last_name") as "full_name"
|
|
364
401
|
* from
|
|
@@ -369,6 +406,8 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
369
406
|
* provide the alias as the only type argument:
|
|
370
407
|
*
|
|
371
408
|
* ```ts
|
|
409
|
+
* import { sql } from 'kysely'
|
|
410
|
+
*
|
|
372
411
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
373
412
|
*
|
|
374
413
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -383,11 +422,12 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
383
422
|
* .expression(
|
|
384
423
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
385
424
|
* )
|
|
425
|
+
* .execute()
|
|
386
426
|
* ```
|
|
387
427
|
*
|
|
388
428
|
* The generated SQL (PostgreSQL):
|
|
389
429
|
*
|
|
390
|
-
* ```
|
|
430
|
+
* ```sql
|
|
391
431
|
* insert into "person" ("first_name", "last_name")
|
|
392
432
|
* from (values (1, 'foo')) as t(a, b)
|
|
393
433
|
* select "t"."a", "t"."b"
|
|
@@ -411,11 +451,19 @@ export declare class OrWrapper<DB, TB extends keyof DB, T extends SqlBool> imple
|
|
|
411
451
|
/**
|
|
412
452
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
413
453
|
*
|
|
454
|
+
* ### Examples
|
|
455
|
+
*
|
|
414
456
|
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
415
457
|
* template tag to build the node:
|
|
416
458
|
*
|
|
417
459
|
* ```ts
|
|
460
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
461
|
+
*
|
|
418
462
|
* class SomeExpression<T> implements Expression<T> {
|
|
463
|
+
* get expressionType(): T | undefined {
|
|
464
|
+
* return undefined
|
|
465
|
+
* }
|
|
466
|
+
*
|
|
419
467
|
* toOperationNode(): OperationNode {
|
|
420
468
|
* return sql`some sql here`.toOperationNode()
|
|
421
469
|
* }
|
|
@@ -432,11 +480,19 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
432
480
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
433
481
|
* Simply add this getter for your expression and always return `undefined` from it:
|
|
434
482
|
*
|
|
483
|
+
* ### Examples
|
|
484
|
+
*
|
|
435
485
|
* ```ts
|
|
486
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
487
|
+
*
|
|
436
488
|
* class SomeExpression<T> implements Expression<T> {
|
|
437
489
|
* get expressionType(): T | undefined {
|
|
438
490
|
* return undefined
|
|
439
491
|
* }
|
|
492
|
+
*
|
|
493
|
+
* toOperationNode(): OperationNode {
|
|
494
|
+
* return sql`some sql here`.toOperationNode()
|
|
495
|
+
* }
|
|
440
496
|
* }
|
|
441
497
|
* ```
|
|
442
498
|
*
|
|
@@ -462,12 +518,12 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
462
518
|
* .executeTakeFirstOrThrow()
|
|
463
519
|
*
|
|
464
520
|
* // `is_jennifer_aniston: SqlBool` field exists in the result type.
|
|
465
|
-
* console.log(result.
|
|
521
|
+
* console.log(result.is_jennifer_aniston)
|
|
466
522
|
* ```
|
|
467
523
|
*
|
|
468
524
|
* The generated SQL (PostgreSQL):
|
|
469
525
|
*
|
|
470
|
-
* ```
|
|
526
|
+
* ```sql
|
|
471
527
|
* select "first_name" = $1 and "first_name" = $2 as "is_jennifer_aniston"
|
|
472
528
|
* from "person"
|
|
473
529
|
* ```
|
|
@@ -476,6 +532,8 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
476
532
|
/**
|
|
477
533
|
* Returns an aliased version of the expression.
|
|
478
534
|
*
|
|
535
|
+
* ### Examples
|
|
536
|
+
*
|
|
479
537
|
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
480
538
|
* this method also provides strict typing:
|
|
481
539
|
*
|
|
@@ -484,7 +542,7 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
484
542
|
* .selectFrom('person')
|
|
485
543
|
* .select((eb) =>
|
|
486
544
|
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
487
|
-
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
545
|
+
* eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
|
|
488
546
|
* )
|
|
489
547
|
* .executeTakeFirstOrThrow()
|
|
490
548
|
*
|
|
@@ -494,7 +552,7 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
494
552
|
*
|
|
495
553
|
* The generated SQL (PostgreSQL):
|
|
496
554
|
*
|
|
497
|
-
* ```
|
|
555
|
+
* ```sql
|
|
498
556
|
* select
|
|
499
557
|
* concat("first_name", $1, "last_name") as "full_name"
|
|
500
558
|
* from
|
|
@@ -505,6 +563,8 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
505
563
|
* provide the alias as the only type argument:
|
|
506
564
|
*
|
|
507
565
|
* ```ts
|
|
566
|
+
* import { sql } from 'kysely'
|
|
567
|
+
*
|
|
508
568
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
509
569
|
*
|
|
510
570
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -519,11 +579,12 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
519
579
|
* .expression(
|
|
520
580
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
521
581
|
* )
|
|
582
|
+
* .execute()
|
|
522
583
|
* ```
|
|
523
584
|
*
|
|
524
585
|
* The generated SQL (PostgreSQL):
|
|
525
586
|
*
|
|
526
|
-
* ```
|
|
587
|
+
* ```sql
|
|
527
588
|
* insert into "person" ("first_name", "last_name")
|
|
528
589
|
* from (values (1, 'foo')) as t(a, b)
|
|
529
590
|
* select "t"."a", "t"."b"
|
|
@@ -547,11 +608,19 @@ export declare class AndWrapper<DB, TB extends keyof DB, T extends SqlBool> impl
|
|
|
547
608
|
/**
|
|
548
609
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
549
610
|
*
|
|
611
|
+
* ### Examples
|
|
612
|
+
*
|
|
550
613
|
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
551
614
|
* template tag to build the node:
|
|
552
615
|
*
|
|
553
616
|
* ```ts
|
|
617
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
618
|
+
*
|
|
554
619
|
* class SomeExpression<T> implements Expression<T> {
|
|
620
|
+
* get expressionType(): T | undefined {
|
|
621
|
+
* return undefined
|
|
622
|
+
* }
|
|
623
|
+
*
|
|
555
624
|
* toOperationNode(): OperationNode {
|
|
556
625
|
* return sql`some sql here`.toOperationNode()
|
|
557
626
|
* }
|
|
@@ -7,7 +7,11 @@ import { OperationNode } from '../operation-node/operation-node.js';
|
|
|
7
7
|
* Most Kysely methods accept instances of `Expression` and most classes like `SelectQueryBuilder`
|
|
8
8
|
* and the return value of the {@link sql} template tag implement it.
|
|
9
9
|
*
|
|
10
|
+
* ### Examples
|
|
11
|
+
*
|
|
10
12
|
* ```ts
|
|
13
|
+
* import { type Expression, sql } from 'kysely'
|
|
14
|
+
*
|
|
11
15
|
* const exp1: Expression<string> = sql<string>`CONCAT('hello', ' ', 'world')`
|
|
12
16
|
* const exp2: Expression<{ first_name: string }> = db.selectFrom('person').select('first_name')
|
|
13
17
|
* ```
|
|
@@ -19,11 +23,19 @@ export interface Expression<T> extends OperationNodeSource {
|
|
|
19
23
|
* All expressions need to have this getter for complicated type-related reasons.
|
|
20
24
|
* Simply add this getter for your expression and always return `undefined` from it:
|
|
21
25
|
*
|
|
26
|
+
* ### Examples
|
|
27
|
+
*
|
|
22
28
|
* ```ts
|
|
29
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
30
|
+
*
|
|
23
31
|
* class SomeExpression<T> implements Expression<T> {
|
|
24
32
|
* get expressionType(): T | undefined {
|
|
25
33
|
* return undefined
|
|
26
34
|
* }
|
|
35
|
+
*
|
|
36
|
+
* toOperationNode(): OperationNode {
|
|
37
|
+
* return sql`some sql here`.toOperationNode()
|
|
38
|
+
* }
|
|
27
39
|
* }
|
|
28
40
|
* ```
|
|
29
41
|
*
|
|
@@ -35,11 +47,19 @@ export interface Expression<T> extends OperationNodeSource {
|
|
|
35
47
|
/**
|
|
36
48
|
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
37
49
|
*
|
|
50
|
+
* ### Examples
|
|
51
|
+
*
|
|
38
52
|
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
39
53
|
* template tag to build the node:
|
|
40
54
|
*
|
|
41
55
|
* ```ts
|
|
56
|
+
* import { type Expression, type OperationNode, sql } from 'kysely'
|
|
57
|
+
*
|
|
42
58
|
* class SomeExpression<T> implements Expression<T> {
|
|
59
|
+
* get expressionType(): T | undefined {
|
|
60
|
+
* return undefined
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
43
63
|
* toOperationNode(): OperationNode {
|
|
44
64
|
* return sql`some sql here`.toOperationNode()
|
|
45
65
|
* }
|
|
@@ -55,6 +75,8 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
55
75
|
/**
|
|
56
76
|
* Returns an aliased version of the expression.
|
|
57
77
|
*
|
|
78
|
+
* ### Examples
|
|
79
|
+
*
|
|
58
80
|
* In addition to slapping `as "the_alias"` at the end of the expression,
|
|
59
81
|
* this method also provides strict typing:
|
|
60
82
|
*
|
|
@@ -63,7 +85,7 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
63
85
|
* .selectFrom('person')
|
|
64
86
|
* .select((eb) =>
|
|
65
87
|
* // `eb.fn<string>` returns an AliasableExpression<string>
|
|
66
|
-
* eb.fn<string>('concat', ['first_name' eb.val(' '), 'last_name']).as('full_name')
|
|
88
|
+
* eb.fn<string>('concat', ['first_name', eb.val(' '), 'last_name']).as('full_name')
|
|
67
89
|
* )
|
|
68
90
|
* .executeTakeFirstOrThrow()
|
|
69
91
|
*
|
|
@@ -73,7 +95,7 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
73
95
|
*
|
|
74
96
|
* The generated SQL (PostgreSQL):
|
|
75
97
|
*
|
|
76
|
-
* ```
|
|
98
|
+
* ```sql
|
|
77
99
|
* select
|
|
78
100
|
* concat("first_name", $1, "last_name") as "full_name"
|
|
79
101
|
* from
|
|
@@ -84,6 +106,8 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
84
106
|
* provide the alias as the only type argument:
|
|
85
107
|
*
|
|
86
108
|
* ```ts
|
|
109
|
+
* import { sql } from 'kysely'
|
|
110
|
+
*
|
|
87
111
|
* const values = sql<{ a: number, b: string }>`(values (1, 'foo'))`
|
|
88
112
|
*
|
|
89
113
|
* // The alias is `t(a, b)` which specifies the column names
|
|
@@ -98,11 +122,12 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
98
122
|
* .expression(
|
|
99
123
|
* db.selectFrom(aliasedValues).select(['t.a', 't.b'])
|
|
100
124
|
* )
|
|
125
|
+
* .execute()
|
|
101
126
|
* ```
|
|
102
127
|
*
|
|
103
128
|
* The generated SQL (PostgreSQL):
|
|
104
129
|
*
|
|
105
|
-
* ```
|
|
130
|
+
* ```sql
|
|
106
131
|
* insert into "person" ("first_name", "last_name")
|
|
107
132
|
* from (values (1, 'foo')) as t(a, b)
|
|
108
133
|
* select "t"."a", "t"."b"
|
|
@@ -119,9 +144,16 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
119
144
|
* needs to implement an `AliasedExpression<T, A>`. `A` becomes the name of the selected expression
|
|
120
145
|
* in the result and `T` becomes its type.
|
|
121
146
|
*
|
|
122
|
-
*
|
|
147
|
+
* ### Examples
|
|
123
148
|
*
|
|
124
149
|
* ```ts
|
|
150
|
+
* import {
|
|
151
|
+
* AliasNode,
|
|
152
|
+
* type AliasedExpression,
|
|
153
|
+
* type Expression,
|
|
154
|
+
* IdentifierNode
|
|
155
|
+
* } from 'kysely'
|
|
156
|
+
*
|
|
125
157
|
* class SomeAliasedExpression<T, A extends string> implements AliasedExpression<T, A> {
|
|
126
158
|
* #expression: Expression<T>
|
|
127
159
|
* #alias: A
|
|
@@ -140,7 +172,10 @@ export interface AliasableExpression<T> extends Expression<T> {
|
|
|
140
172
|
* }
|
|
141
173
|
*
|
|
142
174
|
* toOperationNode(): AliasNode {
|
|
143
|
-
* return AliasNode.create(
|
|
175
|
+
* return AliasNode.create(
|
|
176
|
+
* this.#expression.toOperationNode(),
|
|
177
|
+
* IdentifierNode.create(this.#alias)
|
|
178
|
+
* )
|
|
144
179
|
* }
|
|
145
180
|
* }
|
|
146
181
|
* ```
|
|
@@ -10,8 +10,26 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
10
10
|
* The plugin can be installed like this:
|
|
11
11
|
*
|
|
12
12
|
* ```ts
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* import { Kysely, MssqlDialect, ParseJSONResultsPlugin } from 'kysely'
|
|
14
|
+
* import * as Tarn from 'tarn'
|
|
15
|
+
* import * as Tedious from 'tedious'
|
|
16
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
17
|
+
*
|
|
18
|
+
* const db = new Kysely<Database>({
|
|
19
|
+
* dialect: new MssqlDialect({
|
|
20
|
+
* tarn: { options: { max: 10, min: 0 }, ...Tarn },
|
|
21
|
+
* tedious: {
|
|
22
|
+
* ...Tedious,
|
|
23
|
+
* connectionFactory: () => new Tedious.Connection({
|
|
24
|
+
* authentication: {
|
|
25
|
+
* options: { password: 'password', userName: 'sa' },
|
|
26
|
+
* type: 'default',
|
|
27
|
+
* },
|
|
28
|
+
* options: { database: 'test', port: 21433, trustServerCertificate: true },
|
|
29
|
+
* server: 'localhost',
|
|
30
|
+
* }),
|
|
31
|
+
* },
|
|
32
|
+
* }),
|
|
15
33
|
* plugins: [new ParseJSONResultsPlugin()]
|
|
16
34
|
* })
|
|
17
35
|
* ```
|
|
@@ -19,6 +37,8 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
19
37
|
* ### Examples
|
|
20
38
|
*
|
|
21
39
|
* ```ts
|
|
40
|
+
* import { jsonArrayFrom } from 'kysely/helpers/mssql'
|
|
41
|
+
*
|
|
22
42
|
* const result = await db
|
|
23
43
|
* .selectFrom('person')
|
|
24
44
|
* .select((eb) => [
|
|
@@ -28,14 +48,14 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
28
48
|
* .select(['pet.id as pet_id', 'pet.name'])
|
|
29
49
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
30
50
|
* .orderBy('pet.name')
|
|
31
|
-
* .
|
|
51
|
+
* .offset(0)
|
|
32
52
|
* ).as('pets')
|
|
33
53
|
* ])
|
|
34
54
|
* .execute()
|
|
35
55
|
*
|
|
36
|
-
* result[0]
|
|
37
|
-
* result[0]
|
|
38
|
-
* result[0]
|
|
56
|
+
* result[0]?.id
|
|
57
|
+
* result[0]?.pets[0]?.pet_id
|
|
58
|
+
* result[0]?.pets[0]?.name
|
|
39
59
|
* ```
|
|
40
60
|
*
|
|
41
61
|
* The generated SQL (MS SQL Server):
|
|
@@ -47,7 +67,7 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
47
67
|
* from "pet"
|
|
48
68
|
* where "pet"."owner_id" = "person"."id"
|
|
49
69
|
* order by "pet"."name"
|
|
50
|
-
* offset
|
|
70
|
+
* offset @1 rows
|
|
51
71
|
* ) as "agg" for json path, include_null_values), '[]')
|
|
52
72
|
* ) as "pets"
|
|
53
73
|
* from "person"
|
|
@@ -65,8 +85,26 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
|
|
|
65
85
|
* The plugin can be installed like this:
|
|
66
86
|
*
|
|
67
87
|
* ```ts
|
|
68
|
-
*
|
|
69
|
-
*
|
|
88
|
+
* import { Kysely, MssqlDialect, ParseJSONResultsPlugin } from 'kysely'
|
|
89
|
+
* import * as Tarn from 'tarn'
|
|
90
|
+
* import * as Tedious from 'tedious'
|
|
91
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
92
|
+
*
|
|
93
|
+
* const db = new Kysely<Database>({
|
|
94
|
+
* dialect: new MssqlDialect({
|
|
95
|
+
* tarn: { options: { max: 10, min: 0 }, ...Tarn },
|
|
96
|
+
* tedious: {
|
|
97
|
+
* ...Tedious,
|
|
98
|
+
* connectionFactory: () => new Tedious.Connection({
|
|
99
|
+
* authentication: {
|
|
100
|
+
* options: { password: 'password', userName: 'sa' },
|
|
101
|
+
* type: 'default',
|
|
102
|
+
* },
|
|
103
|
+
* options: { database: 'test', port: 21433, trustServerCertificate: true },
|
|
104
|
+
* server: 'localhost',
|
|
105
|
+
* }),
|
|
106
|
+
* },
|
|
107
|
+
* }),
|
|
70
108
|
* plugins: [new ParseJSONResultsPlugin()]
|
|
71
109
|
* })
|
|
72
110
|
* ```
|
|
@@ -74,6 +112,8 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
|
|
|
74
112
|
* ### Examples
|
|
75
113
|
*
|
|
76
114
|
* ```ts
|
|
115
|
+
* import { jsonObjectFrom } from 'kysely/helpers/mssql'
|
|
116
|
+
*
|
|
77
117
|
* const result = await db
|
|
78
118
|
* .selectFrom('person')
|
|
79
119
|
* .select((eb) => [
|
|
@@ -87,9 +127,9 @@ export declare function jsonArrayFrom<O>(expr: Expression<O>): RawBuilder<Simpli
|
|
|
87
127
|
* ])
|
|
88
128
|
* .execute()
|
|
89
129
|
*
|
|
90
|
-
* result[0]
|
|
91
|
-
* result[0]
|
|
92
|
-
* result[0]
|
|
130
|
+
* result[0]?.id
|
|
131
|
+
* result[0]?.favorite_pet?.pet_id
|
|
132
|
+
* result[0]?.favorite_pet?.name
|
|
93
133
|
* ```
|
|
94
134
|
*
|
|
95
135
|
* The generated SQL (MS SQL Server):
|
|
@@ -116,8 +156,26 @@ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simpl
|
|
|
116
156
|
* The plugin can be installed like this:
|
|
117
157
|
*
|
|
118
158
|
* ```ts
|
|
119
|
-
*
|
|
120
|
-
*
|
|
159
|
+
* import { Kysely, MssqlDialect, ParseJSONResultsPlugin } from 'kysely'
|
|
160
|
+
* import * as Tarn from 'tarn'
|
|
161
|
+
* import * as Tedious from 'tedious'
|
|
162
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
163
|
+
*
|
|
164
|
+
* const db = new Kysely<Database>({
|
|
165
|
+
* dialect: new MssqlDialect({
|
|
166
|
+
* tarn: { options: { max: 10, min: 0 }, ...Tarn },
|
|
167
|
+
* tedious: {
|
|
168
|
+
* ...Tedious,
|
|
169
|
+
* connectionFactory: () => new Tedious.Connection({
|
|
170
|
+
* authentication: {
|
|
171
|
+
* options: { password: 'password', userName: 'sa' },
|
|
172
|
+
* type: 'default',
|
|
173
|
+
* },
|
|
174
|
+
* options: { database: 'test', port: 21433, trustServerCertificate: true },
|
|
175
|
+
* server: 'localhost',
|
|
176
|
+
* }),
|
|
177
|
+
* },
|
|
178
|
+
* }),
|
|
121
179
|
* plugins: [new ParseJSONResultsPlugin()]
|
|
122
180
|
* })
|
|
123
181
|
* ```
|
|
@@ -125,6 +183,8 @@ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simpl
|
|
|
125
183
|
* ### Examples
|
|
126
184
|
*
|
|
127
185
|
* ```ts
|
|
186
|
+
* import { jsonBuildObject } from 'kysely/helpers/mssql'
|
|
187
|
+
*
|
|
128
188
|
* const result = await db
|
|
129
189
|
* .selectFrom('person')
|
|
130
190
|
* .select((eb) => [
|