Skip to content

Commit 4f588f8

Browse files
authored
Allow multivalued query parameters (#2)
1 parent 275c233 commit 4f588f8

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

.github/workflows/ci-python.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: CI (Python)
22

3-
on: [push]
3+
on: [push, pull_request]
44

55
jobs:
66
build:

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,6 @@ dmypy.json
127127

128128
# Pyre type checker
129129
.pyre/
130+
131+
# PyCharm
132+
.idea/

postgrest_py/request_builder.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,14 @@ def not_(self):
5555

5656
def filter(self, column: str, operator: str, criteria: str):
5757
"""Either filter in or filter out based on Self.negate_next."""
58-
if self.negate_next == True:
58+
if self.negate_next is True:
5959
self.negate_next = False
6060
operator = f"not.{operator}"
61-
self.session.params[sanitize_param(column)] = f"{operator}.{criteria}"
61+
key, val = sanitize_param(column), f"{operator}.{criteria}"
62+
if key in self.session.params:
63+
self.session.params.update({key: self.session.params.getlist(key) + [val]})
64+
else:
65+
self.session.params[key] = val
6266
return self
6367

6468
def eq(self, column: str, value: str):

tests/test_filter_request_builder.py

+6
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,9 @@ def test_filter(filter_request_builder):
2828
builder = filter_request_builder.filter(":col.name", "eq", "val")
2929

3030
assert builder.session.params['":col.name"'] == "eq.val"
31+
32+
33+
def test_multivalued_param(filter_request_builder):
34+
builder = filter_request_builder.lte("x", "a").gte("x", "b")
35+
36+
assert str(builder.session.params) == "x=lte.a&x=gte.b"

0 commit comments

Comments
 (0)