@@ -3,14 +3,14 @@ use scylla::client::caching_session::CachingSession;
33use  scylla:: client:: session_builder:: SessionBuilder ; 
44use  scylla:: response:: PagingState ; 
55use  scylla:: statement:: batch:: Batch ; 
6- use  scylla:: statement:: prepared:: PreparedStatement ; 
76use  scylla:: statement:: { Consistency ,  SerialConsistency ,  Statement } ; 
87
98use  crate :: errors:: { err_to_napi,  js_error} ; 
109use  crate :: options; 
1110use  crate :: paging:: { PagingResult ,  PagingStateWrapper } ; 
1211use  crate :: requests:: request:: QueryOptionsWrapper ; 
1312use  crate :: types:: encoded_data:: EncodedValuesWrapper ; 
13+ use  crate :: types:: type_wrappers:: ComplexType ; 
1414use  crate :: utils:: bigint_to_i64; 
1515use  crate :: { requests:: request:: PreparedStatementWrapper ,  result:: QueryResultWrapper } ; 
1616
@@ -103,20 +103,18 @@ impl SessionWrapper {
103103    } 
104104
105105    /// Prepares a statement through rust driver for a given session 
106- /// Return PreparedStatementWrapper that wraps object returned by  the rust driver  
106+ /// Return expected types for  the prepared statement  
107107#[ napi]  
108-     pub  async  fn  prepare_statement ( 
109-         & self , 
110-         statement :  String , 
111-     )  -> napi:: Result < PreparedStatementWrapper >  { 
108+     pub  async  fn  prepare_statement ( & self ,  statement :  String )  -> napi:: Result < Vec < ComplexType > >  { 
112109        let  statement:  Statement  = statement. into ( ) ; 
113110        Ok ( PreparedStatementWrapper  { 
114111            prepared :  self 
115112                . inner 
116113                . add_prepared_statement ( & statement)  // TODO: change for add_prepared_statement_to_owned after it is made public 
117114                . await 
118115                . map_err ( err_to_napi) ?, 
119-         } ) 
116+         } 
117+         . get_expected_types ( ) ) 
120118    } 
121119
122120    /// Execute a given prepared statement against the database with provided parameters. 
@@ -132,15 +130,14 @@ impl SessionWrapper {
132130#[ napi]  
133131    pub  async  fn  execute_prepared_unpaged_encoded ( 
134132        & self , 
135-         query :  & PreparedStatementWrapper , 
133+         query :  String , 
136134        params :  Vec < EncodedValuesWrapper > , 
137135        options :  & QueryOptionsWrapper , 
138136    )  -> napi:: Result < QueryResultWrapper >  { 
139-         let  query = apply_prepared_options ( query. prepared . clone ( ) ,  options) ?; 
137+         let  query = apply_statement_options ( query. into ( ) ,  options) ?; 
140138        QueryResultWrapper :: from_query ( 
141139            self . inner 
142-                 . get_session ( ) 
143-                 . execute_unpaged ( & query,  params) 
140+                 . execute_unpaged ( query,  params) 
144141                . await 
145142                . map_err ( err_to_napi) ?, 
146143        ) 
@@ -206,20 +203,19 @@ impl SessionWrapper {
206203#[ napi]  
207204    pub  async  fn  execute_single_page_encoded ( 
208205        & self , 
209-         query :  & PreparedStatementWrapper , 
206+         query :  String , 
210207        params :  Vec < EncodedValuesWrapper > , 
211208        options :  & QueryOptionsWrapper , 
212209        paging_state :  Option < & PagingStateWrapper > , 
213210    )  -> napi:: Result < PagingResult >  { 
214211        let  paging_state = paging_state
215212            . map ( |e| e. inner . clone ( ) ) 
216213            . unwrap_or ( PagingState :: start ( ) ) ; 
217-         let  prepared = apply_prepared_options ( query. prepared . clone ( ) ,  options) ?; 
214+         let  prepared = apply_statement_options ( query. into ( ) ,  options) ?; 
218215
219216        let  ( result,  paging_state)  = self 
220217            . inner 
221-             . get_session ( ) 
222-             . execute_single_page ( & prepared,  params,  paging_state) 
218+             . execute_single_page ( prepared,  params,  paging_state) 
223219            . await 
224220            . map_err ( err_to_napi) ?; 
225221        Ok ( PagingResult  { 
@@ -233,13 +229,13 @@ impl SessionWrapper {
233229/// Requires each passed statement to be already prepared. 
234230#[ napi]  
235231pub  fn  create_prepared_batch ( 
236-     statements :  Vec < & PreparedStatementWrapper > , 
232+     statements :  Vec < String > , 
237233    options :  & QueryOptionsWrapper , 
238234)  -> napi:: Result < BatchWrapper >  { 
239235    let  mut  batch:  Batch  = Default :: default ( ) ; 
240236    statements
241237        . iter ( ) 
242-         . for_each ( |q| batch. append_statement ( q. prepared . clone ( ) ) ) ; 
238+         . for_each ( |q| batch. append_statement ( q. as_str ( ) ) ) ; 
243239    batch = apply_batch_options ( batch,  options) ?; 
244240    Ok ( BatchWrapper  {  inner :  batch } ) 
245241} 
@@ -348,11 +344,6 @@ macro_rules! make_non_batch_apply_options {
348344} 
349345
350346make_non_batch_apply_options ! ( Statement ,  apply_statement_options,  statement_opt_partial) ; 
351- make_non_batch_apply_options ! ( 
352-     PreparedStatement , 
353-     apply_prepared_options, 
354-     prepared_opt_partial
355- ) ; 
356347make_apply_options ! ( Batch ,  apply_batch_options) ; 
357348
358349/// Provides driver self identity, filling information on application based on session options. 
0 commit comments