diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2025-05-02 23:38:23 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2025-05-02 23:38:23 +0300 |
| commit | e17048eddfe2df86abd2d498da2a33b9c3dd8a72 (patch) | |
| tree | 4e6799cdfb0e05c9df499bcf8ec4d33d8d5ec3fd /py_bindings | |
| parent | ef72b74ec34e95a38890d542cda298dd6565d5ad (diff) | |
Add sort_asc param, impl demo chat app
Diffstat (limited to 'py_bindings')
| -rw-r--r-- | py_bindings/log_db.pyi | 6 | ||||
| -rw-r--r-- | py_bindings/src/lib.rs | 36 |
2 files changed, 33 insertions, 9 deletions
diff --git a/py_bindings/log_db.pyi b/py_bindings/log_db.pyi index aeb6421..9a6db62 100644 --- a/py_bindings/log_db.pyi +++ b/py_bindings/log_db.pyi @@ -26,11 +26,11 @@ class DB: def configure() -> Config: ... def upsert(self, record: Record) -> None: ... def get(self, key: str) -> Record: ... - def find_by(self, key: str, value: "Value", offset: int = ..., limit: int = ...) -> list[Record]: ... - def batch_find_by(self, key: str, values: list["Value"], offset: int = ..., limit: int = ...) -> list[tuple[int, Record]]: ... + def find_by(self, key: str, value: "Value", offset: int = ..., limit: int = ..., sort_asc: bool = ...) -> list[Record]: ... + def batch_find_by(self, key: str, values: list["Value"], offset: int = ..., limit: int = ..., sort_asc: bool = ...) -> list[tuple[int, Record]]: ... def delete(self, key: str) -> list[Record]: ... def delete_by(self, key: str, value: "Value") -> list[Record]: ... - def range_by(self, key: str, start: "Bound", end: "Bound", offset: int = ..., limit: int = ...) -> list[Record]: ... + def range_by(self, key: str, start: "Bound", end: "Bound", offset: int = ..., limit: int = ..., sort_asc: bool = ...) -> list[Record]: ... def tx_begin(self) -> None: ... def tx_commit(self) -> None: ... def tx_rollback(self) -> None: ... diff --git a/py_bindings/src/lib.rs b/py_bindings/src/lib.rs index a4abfde..4e125ec 100644 --- a/py_bindings/src/lib.rs +++ b/py_bindings/src/lib.rs @@ -307,15 +307,23 @@ impl DB { Ok(recs.map(|rec| py_from_record(rec))) } - #[pyo3(signature = (field, key, offset = DEFAULT_QUERY_PARAMS.offset, limit = DEFAULT_QUERY_PARAMS.limit))] + #[pyo3(signature = (field, key, + offset = DEFAULT_QUERY_PARAMS.offset, + limit = DEFAULT_QUERY_PARAMS.limit, + sort_asc = DEFAULT_QUERY_PARAMS.sort_asc))] pub fn find_by( &mut self, field: PyField, key: &Value, offset: usize, limit: usize, + sort_asc: bool, ) -> PyResult<Vec<PyRecord>> { - let params = QueryParams { offset, limit }; + let params = QueryParams { + offset, + limit, + sort_asc, + }; let recs = self .db .find_by_with_params(&field, &key.record_value, ¶ms) @@ -324,15 +332,23 @@ impl DB { Ok(recs.into_iter().map(|rec| py_from_record(rec)).collect()) } - #[pyo3(signature = (field, keys, offset = DEFAULT_QUERY_PARAMS.offset, limit = DEFAULT_QUERY_PARAMS.limit))] + #[pyo3(signature = (field, keys, + offset = DEFAULT_QUERY_PARAMS.offset, + limit = DEFAULT_QUERY_PARAMS.limit, + sort_asc = DEFAULT_QUERY_PARAMS.sort_asc))] pub fn batch_find_by( &mut self, field: PyField, keys: Vec<Value>, offset: usize, limit: usize, + sort_asc: bool, ) -> PyResult<Vec<(usize, PyRecord)>> { - let params = QueryParams { offset, limit }; + let params = QueryParams { + offset, + limit, + sort_asc, + }; let keys: Vec<log_db::Value> = keys.into_iter().map(|key| key.record_value).collect(); let recs = self .db @@ -345,7 +361,10 @@ impl DB { .collect()) } - #[pyo3(signature = (field, start, end, offset = DEFAULT_QUERY_PARAMS.offset, limit = DEFAULT_QUERY_PARAMS.limit))] + #[pyo3(signature = (field, start, end, + offset = DEFAULT_QUERY_PARAMS.offset, + limit = DEFAULT_QUERY_PARAMS.limit, + sort_asc = DEFAULT_QUERY_PARAMS.sort_asc))] pub fn range_by( &mut self, field: PyField, @@ -353,8 +372,13 @@ impl DB { end: &PyRangeBound, offset: usize, limit: usize, + sort_asc: bool, ) -> PyResult<Vec<PyRecord>> { - let params = QueryParams { offset, limit }; + let params = QueryParams { + offset, + limit, + sort_asc, + }; let range = OwnedBounds::new( match start { PyRangeBound::Unbounded() => StdBound::Unbounded, |
