11import { expectError , expectType } from 'tsd'
2- import type { Kysely , RawBuilder } from '..'
2+ import type { Kysely } from '..'
3+ import type { Database as SharedDatabase } from '../shared'
34import {
45 jsonArrayFrom ,
56 jsonBuildObject ,
67 jsonObjectFrom ,
78} from '../../../helpers/sqlite'
89import { sql } from '../../..'
910
10- interface Database {
11- person : {
11+ interface Database extends SharedDatabase {
12+ blob_test : {
1213 id : number
1314 name : string
1415 data : Buffer
1516 nullable_data : Buffer | null
1617 }
17- pet : {
18- id : number
19- name : string
20- owner_id : number
21- }
2218}
2319
2420// jsonArrayFrom should error when selecting Buffer columns
25- async function testJsonArrayFromWithBuffer ( db : Kysely < Database > ) {
21+ function testJsonArrayFromWithBuffer ( db : Kysely < Database > ) {
2622 expectError (
2723 db
28- . selectFrom ( 'person ' )
24+ . selectFrom ( 'blob_test ' )
2925 . select ( ( eb ) => [
3026 'id' ,
31- jsonArrayFrom ( eb . selectFrom ( 'person ' ) . select ( [ 'id' , 'data' ] ) ) . as (
32- 'people ' ,
27+ jsonArrayFrom ( eb . selectFrom ( 'blob_test ' ) . select ( [ 'id' , 'data' ] ) ) . as (
28+ 'rows ' ,
3329 ) ,
3430 ] ) ,
3531 )
3632}
3733
3834// jsonArrayFrom should error when selecting Buffer | null columns
39- async function testJsonArrayFromWithNullableBuffer ( db : Kysely < Database > ) {
35+ function testJsonArrayFromWithNullableBuffer ( db : Kysely < Database > ) {
4036 expectError (
4137 db
42- . selectFrom ( 'person ' )
38+ . selectFrom ( 'blob_test ' )
4339 . select ( ( eb ) => [
4440 'id' ,
4541 jsonArrayFrom (
46- eb . selectFrom ( 'person ' ) . select ( [ 'id' , 'nullable_data' ] ) ,
47- ) . as ( 'people ' ) ,
42+ eb . selectFrom ( 'blob_test ' ) . select ( [ 'id' , 'nullable_data' ] ) ,
43+ ) . as ( 'rows ' ) ,
4844 ] ) ,
4945 )
5046}
5147
5248// jsonArrayFrom should succeed when no Buffer columns are used
5349async function testJsonArrayFromWithoutBuffer ( db : Kysely < Database > ) {
5450 const result = await db
55- . selectFrom ( 'person ' )
51+ . selectFrom ( 'blob_test ' )
5652 . select ( ( eb ) => [
5753 'id' ,
5854 jsonArrayFrom (
5955 eb
60- . selectFrom ( 'pet ' )
61- . select ( [ 'pet .id' , 'pet .name' ] )
62- . whereRef ( 'pet.owner_id ', '= ' , 'person.id' ) ,
63- ) . as ( 'pets ' ) ,
56+ . selectFrom ( 'blob_test ' )
57+ . select ( [ 'blob_test .id' , 'blob_test .name' ] )
58+ . where ( 'blob_test.id ', '> ' , 0 ) ,
59+ ) . as ( 'rows ' ) ,
6460 ] )
6561 . execute ( )
6662
67- expectType < { id : number ; pets : { id : number ; name : string } [ ] } [ ] > ( result )
63+ expectType < { id : number ; rows : { id : number ; name : string } [ ] } [ ] > ( result )
6864}
6965
7066// jsonObjectFrom should error when selecting Buffer columns
71- async function testJsonObjectFromWithBuffer ( db : Kysely < Database > ) {
67+ function testJsonObjectFromWithBuffer ( db : Kysely < Database > ) {
7268 expectError (
7369 db
74- . selectFrom ( 'person ' )
70+ . selectFrom ( 'blob_test ' )
7571 . select ( ( eb ) => [
7672 'id' ,
7773 jsonObjectFrom (
78- eb . selectFrom ( 'person ' ) . select ( [ 'id' , 'data' ] ) . limit ( 1 ) ,
79- ) . as ( 'person_data ' ) ,
74+ eb . selectFrom ( 'blob_test ' ) . select ( [ 'id' , 'data' ] ) . limit ( 1 ) ,
75+ ) . as ( 'row ' ) ,
8076 ] ) ,
8177 )
8278}
8379
8480// jsonObjectFrom should error when selecting Buffer | null columns
85- async function testJsonObjectFromWithNullableBuffer ( db : Kysely < Database > ) {
81+ function testJsonObjectFromWithNullableBuffer ( db : Kysely < Database > ) {
8682 expectError (
8783 db
88- . selectFrom ( 'person ' )
84+ . selectFrom ( 'blob_test ' )
8985 . select ( ( eb ) => [
9086 'id' ,
9187 jsonObjectFrom (
92- eb . selectFrom ( 'person ' ) . select ( [ 'id' , 'nullable_data' ] ) . limit ( 1 ) ,
93- ) . as ( 'person_data ' ) ,
88+ eb . selectFrom ( 'blob_test ' ) . select ( [ 'id' , 'nullable_data' ] ) . limit ( 1 ) ,
89+ ) . as ( 'row ' ) ,
9490 ] ) ,
9591 )
9692}
9793
9894// jsonObjectFrom should succeed when no Buffer columns are used
9995async function testJsonObjectFromWithoutBuffer ( db : Kysely < Database > ) {
10096 const result = await db
101- . selectFrom ( 'person ' )
97+ . selectFrom ( 'blob_test ' )
10298 . select ( ( eb ) => [
10399 'id' ,
104100 jsonObjectFrom (
105101 eb
106- . selectFrom ( 'pet ' )
107- . select ( [ 'pet .id' , 'pet .name' ] )
108- . whereRef ( 'pet.owner_id ', '= ' , 'person.id' )
102+ . selectFrom ( 'blob_test ' )
103+ . select ( [ 'blob_test .id' , 'blob_test .name' ] )
104+ . where ( 'blob_test.id ', '> ' , 0 )
109105 . limit ( 1 ) ,
110- ) . as ( 'pet ' ) ,
106+ ) . as ( 'row ' ) ,
111107 ] )
112108 . execute ( )
113109
114- expectType < { id : number ; pet : { id : number ; name : string } | null } [ ] > ( result )
110+ expectType < { id : number ; row : { id : number ; name : string } | null } [ ] > ( result )
115111}
116112
117113// jsonBuildObject should error when passing Expression<Buffer>
118- async function testJsonBuildObjectWithBuffer ( db : Kysely < Database > ) {
114+ function testJsonBuildObjectWithBuffer ( db : Kysely < Database > ) {
119115 expectError (
120- db . selectFrom ( 'person ' ) . select ( ( eb ) => [
116+ db . selectFrom ( 'blob_test ' ) . select ( ( eb ) => [
121117 'id' ,
122118 jsonBuildObject ( {
123119 name : eb . ref ( 'name' ) ,
@@ -128,9 +124,9 @@ async function testJsonBuildObjectWithBuffer(db: Kysely<Database>) {
128124}
129125
130126// jsonBuildObject should error when passing Expression<Buffer | null>
131- async function testJsonBuildObjectWithNullableBuffer ( db : Kysely < Database > ) {
127+ function testJsonBuildObjectWithNullableBuffer ( db : Kysely < Database > ) {
132128 expectError (
133- db . selectFrom ( 'person ' ) . select ( ( eb ) => [
129+ db . selectFrom ( 'blob_test ' ) . select ( ( eb ) => [
134130 'id' ,
135131 jsonBuildObject ( {
136132 name : eb . ref ( 'name' ) ,
@@ -143,7 +139,7 @@ async function testJsonBuildObjectWithNullableBuffer(db: Kysely<Database>) {
143139// jsonBuildObject should succeed when no Buffer values are used
144140async function testJsonBuildObjectWithoutBuffer ( db : Kysely < Database > ) {
145141 const result = await db
146- . selectFrom ( 'person ' )
142+ . selectFrom ( 'blob_test ' )
147143 . select ( ( eb ) => [
148144 'id' ,
149145 jsonBuildObject ( {
@@ -159,85 +155,83 @@ async function testJsonBuildObjectWithoutBuffer(db: Kysely<Database>) {
159155// jsonArrayFrom should succeed when Buffer is cast using sql`hex()` (workaround)
160156async function testJsonArrayFromWithHexWorkaround ( db : Kysely < Database > ) {
161157 const result = await db
162- . selectFrom ( 'person ' )
158+ . selectFrom ( 'blob_test ' )
163159 . select ( ( eb ) => [
164160 'id' ,
165161 jsonArrayFrom (
166162 eb
167- . selectFrom ( 'person ' )
163+ . selectFrom ( 'blob_test ' )
168164 . select ( [ 'id' , sql < string > `hex(data)` . as ( 'data_hex' ) ] ) ,
169- ) . as ( 'people ' ) ,
165+ ) . as ( 'rows ' ) ,
170166 ] )
171167 . execute ( )
172168
173- expectType < { id : number ; people : { id : number ; data_hex : string } [ ] } [ ] > (
174- result ,
175- )
169+ expectType < { id : number ; rows : { id : number ; data_hex : string } [ ] } [ ] > ( result )
176170}
177171
178172// jsonArrayFrom should succeed when Buffer is cast using eb.cast<string>() (workaround)
179173async function testJsonArrayFromWithCastWorkaround ( db : Kysely < Database > ) {
180174 const result = await db
181- . selectFrom ( 'person ' )
175+ . selectFrom ( 'blob_test ' )
182176 . select ( ( eb ) => [
183177 'id' ,
184178 jsonArrayFrom (
185179 eb
186- . selectFrom ( 'person ' )
180+ . selectFrom ( 'blob_test ' )
187181 . select ( [ 'id' , eb . cast < string > ( 'data' , 'text' ) . as ( 'data_text' ) ] ) ,
188- ) . as ( 'people ' ) ,
182+ ) . as ( 'rows ' ) ,
189183 ] )
190184 . execute ( )
191185
192- expectType < { id : number ; people : { id : number ; data_text : string } [ ] } [ ] > (
186+ expectType < { id : number ; rows : { id : number ; data_text : string } [ ] } [ ] > (
193187 result ,
194188 )
195189}
196190
197191// jsonObjectFrom should succeed when Buffer is cast using sql`hex()` (workaround)
198192async function testJsonObjectFromWithHexWorkaround ( db : Kysely < Database > ) {
199193 const result = await db
200- . selectFrom ( 'person ' )
194+ . selectFrom ( 'blob_test ' )
201195 . select ( ( eb ) => [
202196 'id' ,
203197 jsonObjectFrom (
204198 eb
205- . selectFrom ( 'person ' )
199+ . selectFrom ( 'blob_test ' )
206200 . select ( [ 'id' , sql < string > `hex(data)` . as ( 'data_hex' ) ] )
207201 . limit ( 1 ) ,
208- ) . as ( 'person_data ' ) ,
202+ ) . as ( 'row ' ) ,
209203 ] )
210204 . execute ( )
211205
212- expectType <
213- { id : number ; person_data : { id : number ; data_hex : string } | null } [ ]
214- > ( result )
206+ expectType < { id : number ; row : { id : number ; data_hex : string } | null } [ ] > (
207+ result ,
208+ )
215209}
216210
217211// jsonObjectFrom should succeed when Buffer is cast using eb.cast<string>() (workaround)
218212async function testJsonObjectFromWithCastWorkaround ( db : Kysely < Database > ) {
219213 const result = await db
220- . selectFrom ( 'person ' )
214+ . selectFrom ( 'blob_test ' )
221215 . select ( ( eb ) => [
222216 'id' ,
223217 jsonObjectFrom (
224218 eb
225- . selectFrom ( 'person ' )
219+ . selectFrom ( 'blob_test ' )
226220 . select ( [ 'id' , eb . cast < string > ( 'data' , 'text' ) . as ( 'data_text' ) ] )
227221 . limit ( 1 ) ,
228- ) . as ( 'person_data ' ) ,
222+ ) . as ( 'row ' ) ,
229223 ] )
230224 . execute ( )
231225
232- expectType <
233- { id : number ; person_data : { id : number ; data_text : string } | null } [ ]
234- > ( result )
226+ expectType < { id : number ; row : { id : number ; data_text : string } | null } [ ] > (
227+ result ,
228+ )
235229}
236230
237231// jsonBuildObject should succeed when Buffer is cast using sql`hex()` (workaround)
238232async function testJsonBuildObjectWithHexWorkaround ( db : Kysely < Database > ) {
239233 const result = await db
240- . selectFrom ( 'person ' )
234+ . selectFrom ( 'blob_test ' )
241235 . select ( ( eb ) => [
242236 'id' ,
243237 jsonBuildObject ( {
@@ -253,7 +247,7 @@ async function testJsonBuildObjectWithHexWorkaround(db: Kysely<Database>) {
253247// jsonBuildObject should succeed when Buffer is cast using eb.cast<string>() (workaround)
254248async function testJsonBuildObjectWithCastWorkaround ( db : Kysely < Database > ) {
255249 const result = await db
256- . selectFrom ( 'person ' )
250+ . selectFrom ( 'blob_test ' )
257251 . select ( ( eb ) => [
258252 'id' ,
259253 jsonBuildObject ( {
0 commit comments