kommuneity-story-creator / data /userActivities.py
Ashhar
auth final
21999ba
raw
history blame
1.63 kB
import os
import datetime as DT
from typing import TypedDict, List
from supabase import create_client, Client
from zoneinfo import ZoneInfo
from dotenv import load_dotenv
load_dotenv()
url: str = os.environ.get("SUPABASE_URL")
key: str = os.environ.get("SUPABASE_KEY")
supabase: Client = create_client(url, key)
Activity = TypedDict("Activity", {
"id": str,
"email": str,
"chat_history": list,
"messages": list,
"buttons": list,
"created_at": str,
"updated_at": str,
})
def getUserActivities(emailId: str, id=None) -> List[Activity]:
filterQuery = supabase.table("user_activities") \
.select("*") \
.eq("email", emailId)
if id:
filterQuery = filterQuery.eq("id", id)
response = filterQuery \
.order("updated_at", desc=True) \
.execute()
activities = response.data
return activities or []
def createUserActivity(emailId: str, chatHistory: list, messages: list, buttons: list) -> str:
data, count = supabase.table('user_activities').insert({
"email": emailId,
"chat_history": chatHistory,
"messages": messages,
"buttons": buttons,
}).execute()
if data:
print(f"{data=}")
activityId = data[1][0]["id"]
return activityId
def updateUserActivityById(id: str, chatHistory: list, messages: list, buttons: list):
data, count = supabase.table('user_activities').update({
"chat_history": chatHistory,
"messages": messages,
"buttons": buttons,
"updated_at": DT.datetime.now(ZoneInfo("UTC")).isoformat()
}).eq("id", id).execute()