@@ -7,6 +7,7 @@ mod auth;
77#[ macro_use]
88extern crate napi_derive;
99
10+ use libsql:: Row ;
1011use napi:: bindgen_prelude:: { Array , FromNapiValue , ToNapiValue } ;
1112use napi:: { Env , JsUnknown , Result , ValueType } ;
1213use once_cell:: sync:: OnceCell ;
@@ -803,33 +804,40 @@ impl RowsIterator {
803804 }
804805
805806 #[ napi]
806- pub fn next ( & self , env : Env ) -> Result < Record > {
807- let rt = runtime ( ) ?;
807+ pub async fn next ( & self ) -> Result < Record > {
808+ let column_names = self . column_names . clone ( ) ;
809+ let safe_ints = self . safe_ints ;
810+ let raw = self . raw ;
811+ let pluck = self . pluck ;
808812 let rows = self . rows . clone ( ) ;
809- rt. block_on ( async move {
810- let mut rows = rows. lock ( ) . await ;
811- let next_row = rows. next ( ) . await . map_err ( Error :: from) ?;
812- let record = match next_row {
813- Some ( row) => Record {
814- column_names : self . column_names . clone ( ) ,
815- row : Some ( row) ,
816- safe_ints : self . safe_ints ,
817- raw : self . raw ,
818- pluck : self . pluck ,
819- } ,
820- None => Record {
821- column_names : self . column_names . clone ( ) ,
822- row : None ,
823- safe_ints : self . safe_ints ,
824- raw : self . raw ,
825- pluck : self . pluck ,
826- } ,
827- } ;
828- Ok ( record)
829- } )
813+ let mut rows = rows. lock ( ) . await ;
814+ let next_row = rows. next ( ) . await . map_err ( Error :: from) ?;
815+ let record = match next_row {
816+ Some ( row) => Record {
817+ column_names,
818+ row : Some ( row) ,
819+ safe_ints,
820+ raw,
821+ pluck,
822+ } ,
823+ None => Record {
824+ column_names,
825+ row : None ,
826+ safe_ints,
827+ raw,
828+ pluck,
829+ } ,
830+ } ;
831+ Ok ( record)
830832 }
831833}
832834
835+ #[ napi]
836+ pub fn iterator_next_sync ( iter : & RowsIterator ) -> Result < Record > {
837+ let rt = runtime ( ) ?;
838+ rt. block_on ( async move { iter. next ( ) . await } )
839+ }
840+
833841#[ napi]
834842pub struct Record {
835843 column_names : Vec < std:: ffi:: CString > ,
0 commit comments