Browse Source

Fix get_one_by_multi implementation.

Kestrel 2 years ago
parent
commit
13d7d6b245
2 changed files with 9 additions and 8 deletions
  1. 1 1
      Cargo.lock
  2. 8 7
      microrm/src/query.rs

+ 1 - 1
Cargo.lock

@@ -338,7 +338,7 @@ dependencies = [
 
 [[package]]
 name = "microrm"
-version = "0.2.1"
+version = "0.2.2"
 dependencies = [
  "base64",
  "criterion",

+ 8 - 7
microrm/src/query.rs

@@ -187,21 +187,22 @@ impl<'l> QueryInterface<'l> {
         assert_eq!(c.len(), val.len());
 
         self.cached_query_column(
-            "get_one_by",
+            "get_one_by_multi",
             std::any::TypeId::of::<T>(),
             c,
             &|| {
-                self.db
-                    .conn
-                    .prepare(&format!(
+                let query = format!(
                         "SELECT * FROM \"{}\" WHERE {}",
                         table_name,
                         c.iter()
                             .map(|col| format!("\"{}\" = ?", <T as Entity>::name(col.clone())))
                             .collect::<Vec<_>>()
-                            .join(",")
-                    ))
-                    .expect("")
+                            .join(" AND ")
+                    );
+                self.db
+                    .conn
+                    .prepare(&query)
+                    .expect(format!("Failed to prepare SQL query: {}", query).as_str())
             },
             &mut |stmt| {
                 for index in 0..val.len() {