@@ -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