@@ -642,7 +642,6 @@ impl Statement {
642642 rt. block_on ( async move {
643643 let conn = self . conn . lock ( ) . await ;
644644 let total_changes_before = conn. total_changes ( ) ;
645- // Get start time
646645 let start = std:: time:: Instant :: now ( ) ;
647646
648647 let mut stmt = self . stmt . lock ( ) . await ;
@@ -697,38 +696,57 @@ impl Statement {
697696 let start = std:: time:: Instant :: now ( ) ;
698697 rt. block_on ( async move {
699698 let mut stmt = self . stmt . lock ( ) . await ;
700- stmt. reset ( ) ;
701699 let params = map_params ( & stmt, params) ?;
702700 let mut rows = stmt. query ( params) . await . map_err ( Error :: from) ?;
703701 let column_names = Self :: get_column_names ( & rows) ?;
704702 let row = rows. next ( ) . await . map_err ( Error :: from) ?;
705703 let duration = start. elapsed ( ) . as_secs_f64 ( ) ;
706- let result = match row {
707- Some ( row) => {
708- if raw {
709- let js_array = map_row_raw ( & env, & column_names, & row, safe_ints, pluck) ?;
710- Ok ( js_array. into_unknown ( ) )
711- } else {
712- let mut js_object =
713- map_row_object ( & env, & column_names, & row, safe_ints, pluck) ?
714- . coerce_to_object ( ) ?;
715- let mut metadata = env. create_object ( ) ?;
716- let js_duration = env. create_double ( duration) ?;
717- metadata. set_named_property ( "duration" , js_duration) ?;
718- js_object. set_named_property ( "_metadata" , metadata) ?;
719- Ok ( js_object. into_unknown ( ) )
720- }
721- }
722- None => {
723- let undefined = env. get_undefined ( ) ?;
724- Ok ( undefined. into_unknown ( ) )
725- }
726- } ;
704+ let result = Self :: get_internal (
705+ & env,
706+ & row,
707+ & column_names,
708+ safe_ints,
709+ raw,
710+ pluck,
711+ duration,
712+ ) ;
727713 stmt. reset ( ) ;
728714 result
729715 } )
730716 }
731717
718+ fn get_internal (
719+ env : & Env ,
720+ row : & Option < libsql:: Row > ,
721+ column_names : & [ std:: ffi:: CString ] ,
722+ safe_ints : bool ,
723+ raw : bool ,
724+ pluck : bool ,
725+ duration : f64 ,
726+ ) -> Result < napi:: JsUnknown > {
727+ match row {
728+ Some ( row) => {
729+ if raw {
730+ let js_array = map_row_raw ( & env, & column_names, & row, safe_ints, pluck) ?;
731+ Ok ( js_array. into_unknown ( ) )
732+ } else {
733+ let mut js_object =
734+ map_row_object ( & env, & column_names, & row, safe_ints, pluck) ?
735+ . coerce_to_object ( ) ?;
736+ let mut metadata = env. create_object ( ) ?;
737+ let js_duration = env. create_double ( duration) ?;
738+ metadata. set_named_property ( "duration" , js_duration) ?;
739+ js_object. set_named_property ( "_metadata" , metadata) ?;
740+ Ok ( js_object. into_unknown ( ) )
741+ }
742+ }
743+ None => {
744+ let undefined = env. get_undefined ( ) ?;
745+ Ok ( undefined. into_unknown ( ) )
746+ }
747+ }
748+ }
749+
732750 #[ napi]
733751 pub fn safeIntegers ( & self , toggle : Option < bool > ) -> Result < & Self > {
734752 self . safe_ints
0 commit comments