from typing import Literal
from pydantic import EmailStr, Field
from app.utils.schemas_utils import CustomModel

class StudentCreate(CustomModel):
    first_name: str | None = Field(default=None)
    last_name: str | None = Field(default=None)
    student_email: str | None = Field(default=None)
    password: str | None = Field(default=None)
    role: Literal["student"] = Field(default="student")
    group_id: int | None = Field(default=None)

class GetSimulationGroupStudent(CustomModel):
    first_name : str
    last_name : str
    student_email : str
    # password : str
    group_code : str
    
class GetStudentGroupCode(CustomModel):
    first_name : str
    last_name : str
    student_email : str
    password : str
    group_code : str
    
class GroupResponse(CustomModel):
    group_id: int
    group_name: str
    group_email: str
    category_assigned: str | None
    number_of_members: int
    


class StudentResponse(StudentCreate):
    group: GroupResponse | None = None  

class StudentUpdate(CustomModel):
    student_id:int
    first_name: str | None = Field(default=None)
    last_name: str | None = Field(default=None)
    student_email: str | None = Field(default=None)
    password: str | None = Field(default=None)
    role: Literal["student"] = Field(default="student")
    group_id: int | None = Field(default=None)
    


class PasswordRequest(CustomModel):
    student_email: EmailStr


    