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 []