@@ -182,6 +182,33 @@ Deno.test("sqlite", async (t) => {
182182 }
183183 } ) ;
184184
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+
185212 await t . step ( "query json" , ( ) => {
186213 const row = db
187214 . prepare (
@@ -194,6 +221,22 @@ Deno.test("sqlite", async (t) => {
194221 assertEquals ( row [ 2 ] , '{"no_subtype": true}' ) ;
195222 } ) ;
196223
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+
197240 await t . step ( "query with string param" , ( ) => {
198241 const row = db . prepare (
199242 "select * from test where text = ?" ,
0 commit comments