Skip to content

Commit cc0b821

Browse files
committed
HACKS
1 parent 503a231 commit cc0b821

1 file changed

Lines changed: 113 additions & 113 deletions

File tree

src/lib.rs

Lines changed: 113 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -536,43 +536,92 @@ impl Statement {
536536
}
537537

538538
#[napi]
539-
pub fn columns(&self, env: Env) -> Result<Array> {
539+
pub fn run(&self, params: Option<napi::JsUnknown>) -> Result<RunResult> {
540540
let rt = runtime()?;
541541
rt.block_on(async move {
542-
let stmt = self.stmt.lock().await;
543-
let columns = stmt.columns();
544-
let mut js_array = env.create_array(columns.len() as u32)?;
545-
for (i, col) in columns.iter().enumerate() {
546-
let mut js_obj = env.create_object()?;
547-
js_obj.set_named_property("name", env.create_string(col.name())?)?;
548-
// origin_name -> column
549-
if let Some(origin_name) = col.origin_name() {
550-
js_obj.set_named_property("column", env.create_string(origin_name)?)?;
551-
} else {
552-
js_obj.set_named_property("column", env.get_null()?)?;
553-
}
554-
// table_name -> table
555-
if let Some(table_name) = col.table_name() {
556-
js_obj.set_named_property("table", env.create_string(table_name)?)?;
557-
} else {
558-
js_obj.set_named_property("table", env.get_null()?)?;
559-
}
560-
// database_name -> database
561-
if let Some(database_name) = col.database_name() {
562-
js_obj.set_named_property("database", env.create_string(database_name)?)?;
563-
} else {
564-
js_obj.set_named_property("database", env.get_null()?)?;
565-
}
566-
// decl_type -> type
567-
if let Some(decl_type) = col.decl_type() {
568-
js_obj.set_named_property("type", env.create_string(decl_type)?)?;
542+
let conn = self.conn.lock().await;
543+
let total_changes_before = conn.total_changes();
544+
let start = std::time::Instant::now();
545+
546+
let mut stmt = self.stmt.lock().await;
547+
stmt.reset();
548+
let params = map_params(&stmt, params)?;
549+
stmt.query(params).await.map_err(Error::from)?;
550+
let changes = if conn.total_changes() == total_changes_before {
551+
0
552+
} else {
553+
conn.changes()
554+
};
555+
let last_insert_row_id = conn.last_insert_rowid();
556+
let duration = start.elapsed().as_secs_f64();
557+
Ok(RunResult {
558+
changes: changes as f64,
559+
duration,
560+
lastInsertRowid: last_insert_row_id,
561+
})
562+
})
563+
}
564+
565+
#[napi]
566+
pub fn get(&self, env: Env, params: Option<napi::JsUnknown>) -> Result<napi::JsUnknown> {
567+
let rt = runtime()?;
568+
569+
let safe_ints = self.safe_ints.load(Ordering::SeqCst);
570+
let raw = self.raw.load(Ordering::SeqCst);
571+
let pluck = self.pluck.load(Ordering::SeqCst);
572+
573+
let start = std::time::Instant::now();
574+
rt.block_on(async move {
575+
let mut stmt = self.stmt.lock().await;
576+
let params = map_params(&stmt, params)?;
577+
let mut rows = stmt.query(params).await.map_err(Error::from)?;
578+
let column_names = Self::get_column_names(&rows)?;
579+
let row = rows.next().await.map_err(Error::from)?;
580+
let duration = start.elapsed().as_secs_f64();
581+
let result = Self::get_internal(
582+
&env,
583+
&row,
584+
&column_names,
585+
safe_ints,
586+
raw,
587+
pluck,
588+
duration,
589+
);
590+
stmt.reset();
591+
result
592+
})
593+
}
594+
595+
fn get_internal(
596+
env: &Env,
597+
row: &Option<libsql::Row>,
598+
column_names: &[std::ffi::CString],
599+
safe_ints: bool,
600+
raw: bool,
601+
pluck: bool,
602+
duration: f64,
603+
) -> Result<napi::JsUnknown> {
604+
match row {
605+
Some(row) => {
606+
if raw {
607+
let js_array = map_row_raw(&env, &column_names, &row, safe_ints, pluck)?;
608+
Ok(js_array.into_unknown())
569609
} else {
570-
js_obj.set_named_property("type", env.get_null()?)?;
610+
let mut js_object =
611+
map_row_object(&env, &column_names, &row, safe_ints, pluck)?
612+
.coerce_to_object()?;
613+
let mut metadata = env.create_object()?;
614+
let js_duration = env.create_double(duration)?;
615+
metadata.set_named_property("duration", js_duration)?;
616+
js_object.set_named_property("_metadata", metadata)?;
617+
Ok(js_object.into_unknown())
571618
}
572-
js_array.set(i as u32, js_obj)?;
573619
}
574-
Ok(js_array)
575-
})
620+
None => {
621+
let undefined = env.get_undefined()?;
622+
Ok(undefined.into_unknown())
623+
}
624+
}
576625
}
577626

578627
#[napi]
@@ -636,33 +685,6 @@ impl Statement {
636685
))
637686
}
638687

639-
#[napi]
640-
pub fn run(&self, params: Option<napi::JsUnknown>) -> Result<RunResult> {
641-
let rt = runtime()?;
642-
rt.block_on(async move {
643-
let conn = self.conn.lock().await;
644-
let total_changes_before = conn.total_changes();
645-
let start = std::time::Instant::now();
646-
647-
let mut stmt = self.stmt.lock().await;
648-
stmt.reset();
649-
let params = map_params(&stmt, params)?;
650-
stmt.query(params).await.map_err(Error::from)?;
651-
let changes = if conn.total_changes() == total_changes_before {
652-
0
653-
} else {
654-
conn.changes()
655-
};
656-
let last_insert_row_id = conn.last_insert_rowid();
657-
let duration = start.elapsed().as_secs_f64();
658-
Ok(RunResult {
659-
changes: changes as f64,
660-
duration,
661-
lastInsertRowid: last_insert_row_id,
662-
})
663-
})
664-
}
665-
666688
#[napi]
667689
pub fn pluck(&self, pluck: Option<bool>) -> Result<&Self> {
668690
self.pluck.store(pluck.unwrap_or(true), Ordering::SeqCst);
@@ -686,65 +708,43 @@ impl Statement {
686708
}
687709

688710
#[napi]
689-
pub fn get(&self, env: Env, params: Option<napi::JsUnknown>) -> Result<napi::JsUnknown> {
711+
pub fn columns(&self, env: Env) -> Result<Array> {
690712
let rt = runtime()?;
691-
692-
let safe_ints = self.safe_ints.load(Ordering::SeqCst);
693-
let raw = self.raw.load(Ordering::SeqCst);
694-
let pluck = self.pluck.load(Ordering::SeqCst);
695-
696-
let start = std::time::Instant::now();
697713
rt.block_on(async move {
698-
let mut stmt = self.stmt.lock().await;
699-
let params = map_params(&stmt, params)?;
700-
let mut rows = stmt.query(params).await.map_err(Error::from)?;
701-
let column_names = Self::get_column_names(&rows)?;
702-
let row = rows.next().await.map_err(Error::from)?;
703-
let duration = start.elapsed().as_secs_f64();
704-
let result = Self::get_internal(
705-
&env,
706-
&row,
707-
&column_names,
708-
safe_ints,
709-
raw,
710-
pluck,
711-
duration,
712-
);
713-
stmt.reset();
714-
result
715-
})
716-
}
717-
718-
fn get_internal(
719-
env: &Env,
720-
row: &Option<libsql::Row>,
721-
column_names: &[std::ffi::CString],
722-
safe_ints: bool,
723-
raw: bool,
724-
pluck: bool,
725-
duration: f64,
726-
) -> Result<napi::JsUnknown> {
727-
match row {
728-
Some(row) => {
729-
if raw {
730-
let js_array = map_row_raw(&env, &column_names, &row, safe_ints, pluck)?;
731-
Ok(js_array.into_unknown())
714+
let stmt = self.stmt.lock().await;
715+
let columns = stmt.columns();
716+
let mut js_array = env.create_array(columns.len() as u32)?;
717+
for (i, col) in columns.iter().enumerate() {
718+
let mut js_obj = env.create_object()?;
719+
js_obj.set_named_property("name", env.create_string(col.name())?)?;
720+
// origin_name -> column
721+
if let Some(origin_name) = col.origin_name() {
722+
js_obj.set_named_property("column", env.create_string(origin_name)?)?;
732723
} else {
733-
let mut js_object =
734-
map_row_object(&env, &column_names, &row, safe_ints, pluck)?
735-
.coerce_to_object()?;
736-
let mut metadata = env.create_object()?;
737-
let js_duration = env.create_double(duration)?;
738-
metadata.set_named_property("duration", js_duration)?;
739-
js_object.set_named_property("_metadata", metadata)?;
740-
Ok(js_object.into_unknown())
724+
js_obj.set_named_property("column", env.get_null()?)?;
741725
}
726+
// table_name -> table
727+
if let Some(table_name) = col.table_name() {
728+
js_obj.set_named_property("table", env.create_string(table_name)?)?;
729+
} else {
730+
js_obj.set_named_property("table", env.get_null()?)?;
731+
}
732+
// database_name -> database
733+
if let Some(database_name) = col.database_name() {
734+
js_obj.set_named_property("database", env.create_string(database_name)?)?;
735+
} else {
736+
js_obj.set_named_property("database", env.get_null()?)?;
737+
}
738+
// decl_type -> type
739+
if let Some(decl_type) = col.decl_type() {
740+
js_obj.set_named_property("type", env.create_string(decl_type)?)?;
741+
} else {
742+
js_obj.set_named_property("type", env.get_null()?)?;
743+
}
744+
js_array.set(i as u32, js_obj)?;
742745
}
743-
None => {
744-
let undefined = env.get_undefined()?;
745-
Ok(undefined.into_unknown())
746-
}
747-
}
746+
Ok(js_array)
747+
})
748748
}
749749

750750
#[napi]

0 commit comments

Comments
 (0)