from pydantic import BaseModel, EmailStr, Field, validator
from typing import Any, Optional, List
from fastapi import HTTPException
from datetime import datetime

class Token(BaseModel):
    access_token: str
    token_type: str

class TokenData(BaseModel):
    email: EmailStr


class CoursesResponse(BaseModel):
    course_id: str
    topic: str
    email: str
    status: str
    course_imscc_url: str
    task_id: Optional[str] = None
    skill_development: Optional[str] = None
    education_degree: Optional[str] = None
    allocated_time: Optional[str] = None
    language: Optional[str] = None
    mode_of_delivery: Optional[str] = None
    tone: Optional[str] = None,
    course_step: int = 1
    no_of_modules: Optional[int] = None
    content_description: Optional[str] = None
    content_outcomes: Optional[str] = None
    content_objectives: Optional[str] = None
    content_summary: Optional[str] = None
    content_outline: Optional[str] = None
    learning_approach: Optional[str] = None
    weblinks: Optional[str] = None
    created_at: datetime

    class Config:
        from_attributes = True
        json_encoders = {
            datetime: lambda v: v.isoformat()
        }