Skip to content

Commit 9eadbe1

Browse files
J0Joel Lee
and
Joel Lee
authored
Add Match Command (#18)
Co-authored-by: Joel Lee <[email protected]>
1 parent 1144895 commit 9eadbe1

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

postgrest_py/request_builder.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Iterable, Tuple
1+
from typing import Any, Iterable, Tuple, Dict, Optional
22

33
from deprecation import deprecated
44
from httpx import AsyncClient
@@ -13,7 +13,8 @@ def __init__(self, session: AsyncClient, path: str):
1313
self.path = path
1414

1515
def select(self, *columns: str):
16-
self.session.params = self.session.params.set("select", ",".join(columns))
16+
self.session.params = self.session.params.set(
17+
"select", ",".join(columns))
1718
return SelectRequestBuilder(self.session, self.path, "GET", {})
1819

1920
def insert(self, json: dict, *, upsert=False):
@@ -136,6 +137,13 @@ def nxr(self, column: str, range: Tuple[int, int]):
136137
def adj(self, column: str, range: Tuple[int, int]):
137138
return self.filter(column, "adj", f"({range[0]},{range[1]})")
138139

140+
def match(self, query: Dict[str, Any]):
141+
updated_query = None
142+
for key in query.keys():
143+
value = query.get(key, '')
144+
updated_query = self.eq(key, value)
145+
return updated_query
146+
139147

140148
class SelectRequestBuilder(FilterRequestBuilder):
141149
def __init__(self, session: AsyncClient, path: str, http_method: str, json: dict):

tests/test_filter_request_builder.py

+5
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,8 @@ def test_multivalued_param(filter_request_builder):
3434
builder = filter_request_builder.lte("x", "a").gte("x", "b")
3535

3636
assert str(builder.session.params) == "x=lte.a&x=gte.b"
37+
38+
39+
def test_match(filter_request_builder):
40+
builder = filter_request_builder.match({'id': '1', 'done': 'false'})
41+
assert str(builder.session.params) == 'id=eq.1&done=eq.false'

0 commit comments

Comments
 (0)