aboutsummaryrefslogtreecommitdiffstats
path: root/py_bindings/src
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2025-02-10 22:28:54 +0200
committerJan Tuomi <jan@jantuomi.fi>2025-02-11 00:25:28 +0200
commitff8b5f63ca6bf0bdbfd36edcaed4091d9d25c3de (patch)
treeef9ff9ac65441d2342338bc33a291a9a4e2abcab /py_bindings/src
parentf29a9a65cb50e6d3a7d6416de576603eccd0eb30 (diff)
Add query params to py bindings
Diffstat (limited to 'py_bindings/src')
-rw-r--r--py_bindings/src/lib.rs29
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, &params)
.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, &params)
.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, &params)
.map_err(|e| PyException::new_err(e.to_string()))
}