diff options
Diffstat (limited to 'py_bindings/src/lib.rs')
| -rw-r--r-- | py_bindings/src/lib.rs | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/py_bindings/src/lib.rs b/py_bindings/src/lib.rs index 9a14d19..ce62dd7 100644 --- a/py_bindings/src/lib.rs +++ b/py_bindings/src/lib.rs @@ -1,6 +1,7 @@ use std::str::FromStr; +use std::usize; -use log_db::{self, OwnedBounds}; +use log_db::{self, OwnedBounds, QueryParams, DEFAULT_QUERY_PARAMS}; use pyo3::exceptions::PyException; use pyo3::prelude::*; use rust_decimal::Decimal; @@ -299,31 +300,45 @@ impl DB { .map_err(|e| PyException::new_err(e.to_string())) } - // TODO: refactor out &String - pub fn find_by(&mut self, field: PyField, key: &Value) -> PyResult<Vec<PyRecord>> { + #[pyo3(signature = (field, key, offset = DEFAULT_QUERY_PARAMS.offset, limit = DEFAULT_QUERY_PARAMS.limit))] + pub fn find_by( + &mut self, + field: PyField, + key: &Value, + offset: usize, + limit: usize, + ) -> PyResult<Vec<PyRecord>> { + let params = QueryParams { offset, limit }; self.db - .find_by(&field, &key.record_value) + .find_by_with_params(&field, &key.record_value, ¶ms) .map_err(|e| PyException::new_err(e.to_string())) } - // batch_find_by + #[pyo3(signature = (field, keys, offset = DEFAULT_QUERY_PARAMS.offset, limit = DEFAULT_QUERY_PARAMS.limit))] pub fn batch_find_by( &mut self, field: PyField, keys: Vec<Value>, + offset: usize, + limit: usize, ) -> PyResult<Vec<(usize, PyRecord)>> { + let params = QueryParams { offset, limit }; let keys: Vec<log_db::Value> = keys.into_iter().map(|key| key.record_value).collect(); self.db - .batch_find_by(&field, &keys) + .batch_find_by_with_params(&field, &keys, ¶ms) .map_err(|e| PyException::new_err(e.to_string())) } + #[pyo3(signature = (field, start, end, offset = DEFAULT_QUERY_PARAMS.offset, limit = DEFAULT_QUERY_PARAMS.limit))] pub fn range_by( &mut self, field: PyField, start: &PyRangeBound, end: &PyRangeBound, + offset: usize, + limit: usize, ) -> PyResult<Vec<PyRecord>> { + let params = QueryParams { offset, limit }; let range = OwnedBounds::new( match start { PyRangeBound::Unbounded() => StdBound::Unbounded, @@ -338,7 +353,7 @@ impl DB { ); self.db - .range_by(&field, range) + .range_by_with_params(&field, range, ¶ms) .map_err(|e| PyException::new_err(e.to_string())) } |
