care_agents / utils /supabase_client.py
omgy's picture
Create utils/supabase_client.py
9e755c1 verified
import os
from supabase import create_client, Client
SUPABASE_URL = os.environ.get("SUPABASE_URL")
SUPABASE_KEY = os.environ.get("SUPABASE_KEY")
if not SUPABASE_URL or not SUPABASE_KEY:
raise RuntimeError("Set SUPABASE_URL and SUPABASE_KEY in environment (HF secrets).")
supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
# helper functions (examples)
def get_pending_tasks(role: str):
# tasks table columns: id, type, agent_role, assigned_to, bed_id, patient_id, status, options
resp = supabase.table("tasks").select("*").eq("status", "pending").or_(
f"agent_role.eq.{role},target_role.eq.HUMAN"
).execute()
return resp.data
def lock_task(task_id: int):
return supabase.table("tasks").update({"status": "locked"}).eq("id", task_id).execute()
def unlock_task(task_id: int):
return supabase.table("tasks").update({"status": "pending"}).eq("id", task_id).execute()
def submit_task_decision(task_id: int, decision: dict):
# store decision in a decisions table OR update task result
supabase.table("task_decisions").insert([{
"task_id": task_id,
"decision": decision
}]).execute()
# mark task as completed/assigned as appropriate (backend should validate)
return supabase.table("tasks").update({"status": "completed"}).eq("id", task_id).execute()
def fetch_context_for_task(task):
# example: get beds, staff, patient info needed for decision
data = {}
# get available beds
beds = supabase.table("beds").select("*").in_("status", ["available"]).execute().data
data["available_beds"] = beds or []
# staff list
staff = supabase.table("staff").select("*").execute().data
data["staff"] = staff or []
# patient if any
if task.get("patient_id"):
patient = supabase.table("patients").select("*").eq("id", task["patient_id"]).single().execute().data
data["patient"] = patient
return data