Skip to content

Commit e51efa5

Browse files
committed
Sample usage of the new error handling.
This can be done through some macro, instead of doing it manually, but I wanted to validate the idea, before doing so.
1 parent 0124ac5 commit e51efa5

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

src/session.rs

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use scylla::response::PagingState;
55
use scylla::statement::batch::Batch;
66
use scylla::statement::{Consistency, SerialConsistency, Statement};
77

8-
use crate::errors::{err_to_napi, js_error};
8+
use crate::errors::{ConvertedError, JsResult, ToConvertable, err_to_napi, js_error};
99
use crate::options;
1010
use crate::paging::{PagingResult, PagingStateWrapper};
1111
use crate::requests::request::{QueryOptionsObj, QueryOptionsWrapper};
@@ -151,13 +151,12 @@ impl SessionWrapper {
151151
&self,
152152
batch: &BatchWrapper,
153153
params: Vec<Vec<EncodedValuesWrapper>>,
154-
) -> napi::Result<QueryResultWrapper> {
155-
QueryResultWrapper::from_query(
156-
self.inner
157-
.batch(&batch.inner, params)
158-
.await
159-
.map_err(err_to_napi)?,
160-
)
154+
) -> JsResult<QueryResultWrapper> {
155+
let z: Result<QueryResultWrapper, ConvertedError> = async {
156+
QueryResultWrapper::from_query(self.inner.batch(&batch.inner, params).await?).cnv()
157+
}
158+
.await;
159+
z.into()
161160
}
162161

163162
/// Query a single page of a prepared statement
@@ -172,23 +171,26 @@ impl SessionWrapper {
172171
params: Vec<EncodedValuesWrapper>,
173172
options: &QueryOptionsWrapper,
174173
paging_state: Option<&PagingStateWrapper>,
175-
) -> napi::Result<PagingResult> {
176-
let statement: Statement = apply_statement_options(query.into(), &options.options)?;
177-
let paging_state = paging_state
178-
.map(|e| e.inner.clone())
179-
.unwrap_or(PagingState::start());
174+
) -> JsResult<PagingResult> {
175+
let z: Result<PagingResult, ConvertedError> = async {
176+
let statement: Statement = apply_statement_options(query.into(), &options.options)?;
177+
let paging_state = paging_state
178+
.map(|e| e.inner.clone())
179+
.unwrap_or(PagingState::start());
180180

181-
let (result, paging_state_response) = self
182-
.inner
183-
.get_session()
184-
.query_single_page(statement, params, paging_state)
185-
.await
186-
.map_err(err_to_napi)?;
181+
let (result, paging_state_response) = self
182+
.inner
183+
.get_session()
184+
.query_single_page(statement, params, paging_state)
185+
.await?;
187186

188-
Ok(PagingResult {
189-
result: QueryResultWrapper::from_query(result)?,
190-
paging_state: paging_state_response.into(),
191-
})
187+
Ok(PagingResult {
188+
result: QueryResultWrapper::from_query(result)?,
189+
paging_state: paging_state_response.into(),
190+
})
191+
}
192+
.await;
193+
z.into()
192194
}
193195

194196
/// Execute a single page of a prepared statement

0 commit comments

Comments
 (0)