Skip to content

Commit 4e8846d

Browse files
committed
HACK
1 parent a1a358f commit 4e8846d

1 file changed

Lines changed: 22 additions & 13 deletions

File tree

src/lib.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,10 @@ impl Statement {
600600
env.execute_tokio_future(future, move |&mut _env, result| {
601601
let mut column_names = vec![];
602602
for i in 0..result.column_count() {
603-
column_names.push(result.column_name(i).unwrap().to_string());
603+
let column_name = result.column_name(i).unwrap();
604+
let column_name = env.create_string(column_name)?;
605+
let column_name = env.create_reference(column_name)?;
606+
column_names.push(column_name);
604607
}
605608
let iter = RowsIterator::new(
606609
Arc::new(tokio::sync::Mutex::new(result)),
@@ -634,7 +637,10 @@ impl Statement {
634637
let rows = stmt.query(params).await.map_err(Error::from)?;
635638
let mut column_names = vec![];
636639
for i in 0..rows.column_count() {
637-
column_names.push(rows.column_name(i).unwrap().to_string());
640+
let column_name = rows.column_name(i).unwrap();
641+
let column_name = env.create_string(column_name)?;
642+
let column_name = env.create_reference(column_name)?;
643+
column_names.push(column_name);
638644
}
639645
Ok::<_, napi::Error>((rows, column_names))
640646
};
@@ -725,8 +731,12 @@ impl Statement {
725731
let mut rows = stmt.query(params).await.map_err(Error::from)?;
726732
let mut column_names = vec![];
727733
for i in 0..rows.column_count() {
728-
column_names.push(rows.column_name(i).unwrap().to_string());
734+
let column_name = rows.column_name(i).unwrap();
735+
let column_name = env.create_string(column_name)?;
736+
let column_name = env.create_reference(column_name)?;
737+
column_names.push(column_name);
729738
}
739+
let column_names = Arc::new(column_names);
730740
let row = rows.next().await.map_err(Error::from)?;
731741
let duration = start.elapsed().as_secs_f64();
732742
let result = match row {
@@ -776,7 +786,7 @@ impl Statement {
776786
#[napi]
777787
pub struct RowsIterator {
778788
rows: Arc<tokio::sync::Mutex<libsql::Rows>>,
779-
column_names: Vec<String>,
789+
column_names: Arc<Vec<napi::Ref<()>>>,
780790
safe_ints: bool,
781791
raw: bool,
782792
pluck: bool,
@@ -786,14 +796,14 @@ pub struct RowsIterator {
786796
impl RowsIterator {
787797
pub fn new(
788798
rows: Arc<tokio::sync::Mutex<libsql::Rows>>,
789-
column_names: Vec<String>,
799+
column_names: Vec<napi::Ref<()>>,
790800
safe_ints: bool,
791801
raw: bool,
792802
pluck: bool,
793803
) -> Result<Self> {
794804
let iter = RowsIterator {
795805
rows,
796-
column_names,
806+
column_names: Arc::new(column_names),
797807
safe_ints,
798808
raw,
799809
pluck,
@@ -831,7 +841,7 @@ impl RowsIterator {
831841

832842
#[napi]
833843
pub struct Record {
834-
column_names: Vec<String>,
844+
column_names: Arc<Vec<napi::Ref<()>>>,
835845
row: Option<libsql::Row>,
836846
safe_ints: bool,
837847
raw: bool,
@@ -864,7 +874,7 @@ fn runtime() -> Result<&'static Runtime> {
864874

865875
fn map_row(
866876
env: &Env,
867-
column_names: &[String],
877+
column_names: &Arc<Vec<napi::Ref<()>>>,
868878
row: &libsql::Row,
869879
safe_ints: bool,
870880
raw: bool,
@@ -900,7 +910,7 @@ fn convert_value_to_js(
900910

901911
fn map_row_object(
902912
env: &Env,
903-
column_names: &[String],
913+
column_names: &Arc<Vec<napi::Ref<()>>>,
904914
row: &libsql::Row,
905915
safe_ints: bool,
906916
pluck: bool,
@@ -925,10 +935,9 @@ fn map_row_object(
925935
Ok(v) => v,
926936
Err(e) => return Err(napi::Error::from_reason(e.to_string())),
927937
};
928-
929-
let column_name = column_names[idx].as_str();
938+
let column_name: JsString = env.get_reference_value(&column_names[idx])?;
930939
let js_value = convert_value_to_js(env, &value, safe_ints)?;
931-
result.set_named_property(column_name, js_value)?;
940+
result.set_property(column_name, js_value)?;
932941
}
933942
result.into_unknown()
934943
};
@@ -937,7 +946,7 @@ fn map_row_object(
937946

938947
fn map_row_raw(
939948
env: &Env,
940-
column_names: &[String],
949+
column_names: &Arc<Vec<napi::Ref<()>>>,
941950
row: &libsql::Row,
942951
safe_ints: bool,
943952
pluck: bool,

0 commit comments

Comments
 (0)