Spaces:
Paused
Paused
| 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 [] | |