@@ -182,6 +182,33 @@ Deno.test("sqlite", async (t) => {
182
182
}
183
183
} ) ;
184
184
185
+ await t . step ( "query object (interface type)" , ( ) => {
186
+ interface Row {
187
+ integer : number ;
188
+ text : string ;
189
+ double : number ;
190
+ blob : Uint8Array ;
191
+ nullable : null ;
192
+ }
193
+
194
+ const rows = db . prepare (
195
+ "select * from test where integer != ? and text != ?" ,
196
+ )
197
+ . all < Row > (
198
+ 1 ,
199
+ "hello world" ,
200
+ ) ;
201
+
202
+ assertEquals ( rows . length , 9 ) ;
203
+ for ( const row of rows ) {
204
+ assertEquals ( typeof row . integer , "number" ) ;
205
+ assertEquals ( row . text , `hello ${ row . integer } ` ) ;
206
+ assertEquals ( row . double , 3.14 ) ;
207
+ assertEquals ( row . blob , new Uint8Array ( [ 3 , 2 , 1 ] ) ) ;
208
+ assertEquals ( row . nullable , null ) ;
209
+ }
210
+ } ) ;
211
+
185
212
await t . step ( "query json" , ( ) => {
186
213
const row = db
187
214
. prepare (
@@ -194,6 +221,22 @@ Deno.test("sqlite", async (t) => {
194
221
assertEquals ( row [ 2 ] , '{"no_subtype": true}' ) ;
195
222
} ) ;
196
223
224
+ await t . step ( "query json (parseJson: false)" , ( ) => {
225
+ db . parseJson = false ;
226
+
227
+ const row = db
228
+ . prepare (
229
+ "select json('[1,2,3]'), json_object('name', 'alex'), '{\"no_subtype\": true}'" ,
230
+ )
231
+ . values < [ string , string , string ] > ( ) [ 0 ] ;
232
+
233
+ db . parseJson = true ;
234
+
235
+ assertEquals ( row [ 0 ] , "[1,2,3]" ) ;
236
+ assertEquals ( row [ 1 ] , '{"name":"alex"}' ) ;
237
+ assertEquals ( row [ 2 ] , '{"no_subtype": true}' ) ;
238
+ } ) ;
239
+
197
240
await t . step ( "query with string param" , ( ) => {
198
241
const row = db . prepare (
199
242
"select * from test where text = ?" ,
0 commit comments