from datetime import datetime
from typing import Literal, Optional

from pydantic import Field

from app.models.main.category import CategoryEnum
from app.utils.schemas_utils import CustomModel


class SimulationCreate(CustomModel):
    simulation_name: str
    description: str
    status: Literal["Active", "Completed"] =  Field(default="Active")
    start_date: datetime
    end_date: datetime
    category: CategoryEnum | None = Field(default=None)
    institution: str
    location: str
    simulation_code: str

class SimulationResponse(SimulationCreate):
    pass

class GroupResponse(CustomModel):
    group_id: int
    simulation_id: int
    group_name: str
    group_email: str
    category_assigned: Optional[str]
    number_of_members: int