0.1.0
This commit is contained in:
@@ -12,10 +12,11 @@ class SupabaseRestClient:
|
||||
|
||||
def __init__(self) -> None:
|
||||
base_url = settings.supabase_url.rstrip("/")
|
||||
apikey = settings.supabase_anon_key or settings.supabase_service_role_key
|
||||
self.client = httpx.Client(
|
||||
base_url=f"{base_url}/rest/v1",
|
||||
headers={
|
||||
"apikey": settings.supabase_service_role_key,
|
||||
"apikey": apikey,
|
||||
"Authorization": f"Bearer {settings.supabase_service_role_key}",
|
||||
},
|
||||
timeout=10.0,
|
||||
@@ -43,6 +44,32 @@ class SupabaseRestClient:
|
||||
return data[0]
|
||||
return None
|
||||
|
||||
def select(
|
||||
self,
|
||||
table: str,
|
||||
filters: Optional[Dict[str, Any]] = None,
|
||||
*,
|
||||
columns: str = "*",
|
||||
order: Optional[str] = None,
|
||||
limit: Optional[int] = None,
|
||||
) -> list[Dict[str, Any]]:
|
||||
params: Dict[str, Any] = {"select": columns}
|
||||
if filters:
|
||||
for key, value in filters.items():
|
||||
params[key] = f"eq.{value}"
|
||||
if order:
|
||||
params["order"] = order
|
||||
if limit is not None:
|
||||
params["limit"] = limit
|
||||
response = self.client.get(f"/{table}", params=params)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
if isinstance(data, list):
|
||||
return data
|
||||
if data:
|
||||
return [data]
|
||||
return []
|
||||
|
||||
def update(self, table: str, filters: Dict[str, Any], payload: Dict[str, Any]) -> None:
|
||||
params = {key: f"eq.{value}" for key, value in filters.items()}
|
||||
response = self.client.patch(
|
||||
|
||||
Reference in New Issue
Block a user