From 4750ac69df61dbc87b1c2301f239dde70784272e Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Thu, 21 Sep 2023 18:08:00 -0700 Subject: [PATCH] implementing query --- datastore.nim | 2 +- datastore/sql.nim | 6 +++--- datastore/sql/sqliteds.nim | 3 ++- tests/datastore/sql/testsqliteds.nim | 6 +++--- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/datastore.nim b/datastore.nim index 8242f6d..5a971a5 100644 --- a/datastore.nim +++ b/datastore.nim @@ -1,6 +1,6 @@ import ./datastore/datastore import ./datastore/fsds -import ./datastore/sql +# import ./datastore/sql import ./datastore/mountedds import ./datastore/tieredds diff --git a/datastore/sql.nim b/datastore/sql.nim index 7e13da7..3c32368 100644 --- a/datastore/sql.nim +++ b/datastore/sql.nim @@ -81,10 +81,10 @@ method query*( await lock.acquire() - let res = queries() - iter.result = res + without res =? queries(), err: + iter.finished = true + return failure err - iter.finished = true iter.dispose = proc(): Future[?!void] {.async.} = discard sqlite3_reset(s) diff --git a/datastore/sql/sqliteds.nim b/datastore/sql/sqliteds.nim index 21f067f..c4e6230 100644 --- a/datastore/sql/sqliteds.nim +++ b/datastore/sql/sqliteds.nim @@ -140,10 +140,11 @@ proc query*(self: SQLiteBackend, self.db.env, queryStr).expect("should not fail") s = RawStmtPtr(queryStmt) + queryKey = $query.key & "*" var v = sqlite3_bind_text( - s, 1.cint, ($query.key & "*").cstring, -1.cint, SQLITE_TRANSIENT_GCSAFE) + s, 1.cint, queryKey.cstring, queryKey.len().cint, SQLITE_TRANSIENT_GCSAFE) if not (v == SQLITE_OK): return failure newException(DatastoreError, $sqlite3_errstr(v)) diff --git a/tests/datastore/sql/testsqliteds.nim b/tests/datastore/sql/testsqliteds.nim index 72c0e43..0187e84 100644 --- a/tests/datastore/sql/testsqliteds.nim +++ b/tests/datastore/sql/testsqliteds.nim @@ -15,7 +15,7 @@ import ../dscommontests import ../querycommontests proc testBasic[K, V, B]( - ds: SQLiteDatastore, + ds: SQLiteBackend, key: K, bytes: V, otherBytes: V, @@ -67,7 +67,7 @@ proc testBasic[K, V, B]( suite "Test Basic SQLiteDatastore": let - ds = SQLiteDatastore.new(Memory).tryGet() + ds = SQLiteBackend.new(Memory).tryGet() keyFull = Key.init("a:b/c/d:e").tryGet() key = keyFull.id() bytes = "some bytes".toBytes @@ -85,7 +85,7 @@ suite "Test Basic SQLiteDatastore": suite "Test DataBuffer SQLiteDatastore": let - ds = SQLiteDatastore.new(Memory).tryGet() + ds = SQLiteBackend.new(Memory).tryGet() keyFull = Key.init("a:b/c/d:e").tryGet() key = KeyId.new keyFull.id() bytes = DataBuffer.new "some bytes"