Spaces:
Running
Running
File size: 2,931 Bytes
b8548e4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | import os
import uuid
from datetime import datetime
from supabase import create_client, Client
from dotenv import load_dotenv
load_dotenv()
class SupabaseHandler:
def __init__(self):
url: str = os.getenv("SUPABASE_URL")
key: str = os.getenv("SUPABASE_ANON_KEY")
if not url or not key:
raise ValueError("SUPABASE_URL and SUPABASE_ANON_KEY must be set in environment variables")
self.supabase: Client = create_client(url, key)
def store_evaluation_result(self, teacher_email, evaluation_data):
"""
Store evaluation result in Supabase with a unique key
Returns the unique key for retrieval
"""
try:
# Generate unique key
unique_key = str(uuid.uuid4())
# Prepare data for storage
storage_data = {
"unique_key": unique_key,
"teacher_email": teacher_email,
"evaluation_data": evaluation_data,
"created_at": datetime.utcnow().isoformat(),
"total_students": evaluation_data.get("total_students", 0)
}
# Insert into Supabase
result = self.supabase.table("evaluation_results").insert(storage_data).execute()
if result.data:
print(f"Successfully stored evaluation result with key: {unique_key}")
return unique_key
else:
print("Failed to store evaluation result")
return None
except Exception as e:
print(f"Error storing evaluation result: {str(e)}")
return None
def get_evaluation_result(self, unique_key):
"""
Retrieve evaluation result by unique key
"""
try:
result = self.supabase.table("evaluation_results").select("*").eq("unique_key", unique_key).execute()
if result.data and len(result.data) > 0:
return result.data[0]
else:
return None
except Exception as e:
print(f"Error retrieving evaluation result: {str(e)}")
return None
def get_teacher_evaluations(self, teacher_email):
"""
Get all evaluation results for a specific teacher
"""
try:
result = self.supabase.table("evaluation_results").select("unique_key", "created_at", "total_students").eq("teacher_email", teacher_email).order("created_at", desc=True).execute()
if result.data:
return result.data
else:
return []
except Exception as e:
print(f"Error retrieving teacher evaluations: {str(e)}")
return []
|