51 Commits

Author SHA1 Message Date
Dmitriy Ryajov
f5dadd93be
Adding mounted store (#33)
* adding monted store

* misc spelling

* adding mounted store tests to suite

* split out key

* relaxed key initialization

* always mount and lookup by path

* cleaned up and reorged tests

* test lookup by path

* add re-exports

* more re-exports

* fix warnings and re-exports
2022-09-21 18:13:50 -06:00
Dmitriy Ryajov
446de6f978
Fsds query (#32)
* add basic query capabilities to fsds

* rename common tests

* make query tests common

* sanitize key

* check it's possible to query keys at same level
2022-09-20 18:18:33 -06:00
Dmitriy Ryajov
02167bb69e
Add proper sqlite query support (#30)
* Add query support for sqlite backend

* basic tests with in memory ds

* remove `close` default implementation
2022-09-20 14:41:54 -06:00
Dmitriy Ryajov
e6430b6b85
close db 2022-09-20 09:51:28 -06:00
Dmitriy Ryajov
a3781edc6a
remove path sanitization for now, address in upcoming pr 2022-09-20 09:16:56 -06:00
Dmitriy Ryajov
bb387650ab
exclude windows from protected dirs checking 2022-09-19 23:19:38 -06:00
Dmitriy Ryajov
b4b90485ef
wip 2022-09-19 23:11:47 -06:00
Dmitriy Ryajov
29577b6dd7
paths are already sanitized, removing allowed 2022-09-19 23:01:10 -06:00
Dmitriy Ryajov
309ac94f21
test invalid char on windows 2022-09-19 22:40:46 -06:00
Dmitriy Ryajov
fc842663bb
implement close method for sqlite 2022-09-19 22:40:01 -06:00
Dmitriy Ryajov
68f3f86cd9
fix invalid identation on nim 1.6.6 2022-09-19 22:31:24 -06:00
Dmitriy Ryajov
1dfc30f64a
more valid chars 2022-09-19 22:28:58 -06:00
Dmitriy Ryajov
5f6acbd88d
add numbers as allowed chars 2022-09-19 22:27:08 -06:00
Dmitriy Ryajov
17c4ff92a4
use proper os separator depending on OS 2022-09-19 22:21:10 -06:00
Dmitriy Ryajov
f9cfab5cbc
commend out query for now 2022-09-19 17:29:32 -06:00
Dmitriy Ryajov
c0f6e38fda
cleanup tiered ds 2022-09-19 17:13:34 -06:00
Dmitriy Ryajov
7f9c319b98
export sqlds 2022-09-19 17:13:20 -06:00
Dmitriy Ryajov
ec4015a404
proper query iterator interface 2022-09-19 17:13:11 -06:00
Dmitriy Ryajov
60e0ea5573
get rid of null datastore 2022-09-19 17:12:52 -06:00
Dmitriy Ryajov
2680789884
missing key should return appropriate error 2022-09-19 17:12:34 -06:00
Dmitriy Ryajov
5e30230a9f
default implementation for close 2022-09-19 17:12:16 -06:00
Dmitriy Ryajov
4d43447ef2
add sql top level export 2022-09-19 15:53:24 -06:00
Dmitriy Ryajov
bdc10c27fd
rename tired datastore 2022-09-19 15:53:13 -06:00
Dmitriy Ryajov
9fcf719d0f
rename null datastore 2022-09-19 15:53:00 -06:00
Dmitriy Ryajov
24d161d4b4
more cleanup 2022-09-19 15:52:46 -06:00
Dmitriy Ryajov
437ae2e035
add proper query interface 2022-09-19 15:52:34 -06:00
Dmitriy Ryajov
b380d09d6b
rename fsstore to fsds 2022-09-19 15:52:00 -06:00
Dmitriy Ryajov
13bc02f595
split out and cleanup sql lite store 2022-09-16 21:14:31 -06:00
Dmitriy Ryajov
2390839406
rename and cleanup fs store 2022-09-16 21:13:25 -06:00
Dmitriy Ryajov
b150b2f922
cleanup key 2022-09-16 21:12:49 -06:00
Dmitriy Ryajov
78653d9dd4
wip 2022-09-12 12:30:52 -06:00
Dmitriy Ryajov
ed6842b743
simplify key api 2022-09-10 13:50:05 -06:00
Michael Bradley, Jr
2769ce1de2 refactor Datastore impls so root/basePath creation is user's responsibility 2022-08-08 16:33:54 -05:00
Michael Bradley, Jr
d5d986c014 revise order of definitions in datastore/sqlite.nim
in some complex builds, e.g. `make testAll` of nim-codex, the previous order
resulted in compilation errors
2022-07-27 15:24:43 -05:00
Michael Bradley, Jr
249f63a589 add basic query implementation 2022-07-21 13:20:43 -05:00
Michael Bradley, Jr
fb5ce62532 switch to sqlite3_prepare_v3 and supply default prepFlags
for long-lived prepared statements in datastore/sqlite_datastore.nim use
`prepFlags = SQLITE_PREPARE_PERSISTENT`

closes #13
2022-07-20 17:11:48 -05:00
Michael Bradley, Jr
96695fed47
implement sqlite3_column_text_not_null in datastore/sqlite.nim
consolidate calls re: `SQLiteDatastore.new` and `idCol`
2022-07-15 11:11:56 -05:00
Michael Bradley, Jr
18df425b09
include SQL statement in error messages of checkColMetadata 2022-07-15 11:11:50 -05:00
Michael Bradley, Jr
a73c58c632
do not need to check dataLen re: OOM error (and the check was incorrect anyway) 2022-07-15 11:11:47 -05:00
Michael Bradley, Jr
a68c4caa8e
define and use constants for column indexes re: methods contains and get 2022-07-15 11:11:43 -05:00
Michael Bradley, Jr
0df3e2424d
export ColName constants 2022-07-15 11:11:40 -05:00
Michael Bradley, Jr
aee7f7b57c
remove ColIndex constants and default values for index parameters in id/data/timestampCol 2022-07-15 11:11:37 -05:00
Michael Bradley, Jr
a62fffcb3f
convert checkColMetadata from a template to a proc 2022-07-15 11:11:33 -05:00
Michael Bradley, Jr
89051a38ea
refactor repeated "check column metadata" code into a template 2022-07-15 11:11:30 -05:00
Michael Bradley, Jr
9131323747
improve error message for mismatch between index and column metadata 2022-07-15 11:11:27 -05:00
Michael Bradley, Jr
ca9ee12aeb check column metadata in id/data/timestampCol
The goal is to detect mismatches between caller-supplied indexes and original
column names, and in that case crash the process by raising Defect. This should
help avoid harder to debug errors for such mismatches.

These helper procs are now higher-order, which allows column metadata checks to
be run only once, i.e. when setting up derivative helpers to be used in an
`onData` callback.

Use compile-time constants for column names and default indexes.

Adjust callback proc annotations to be more precise, and remove unnecessary
annotations.
2022-07-15 10:56:45 -05:00
Michael Bradley, Jr
f634c2f5ae check for out-of-memory errors re: sqlite3_column_text/blob/bytes
closes #2
2022-07-15 10:56:45 -05:00
Michael Bradley, Jr
0c5d805257
refactor base API to be async
and refactor Datastore impls and tests accordingly

Closes #7
2022-07-04 22:28:41 -05:00
Michael Bradley, Jr
3237e87130 improve bindParam handling of empty blobs
Per SQLite's docs, `sqlite3_bind_blob(s, n.cint, nil, 0.cint, nil)` is
equivalent to `sqlite3_bind_null(s, n.cint)` but the intent of the latter is
clearer.
2022-06-22 16:07:18 -05:00
Michael Bradley, Jr
b9eef2a5b4 improve bindParam handling of uint and float types 2022-06-22 16:07:18 -05:00