# schemas.py from datetime import datetime from typing import List, Optional from pydantic import BaseModel, EmailStr from enums.enums import AppointmentStatus, ClinicUserRoles, UserType # Base schemas (shared attributes for create/read operations) class ClinicBase(BaseModel): name: str address: Optional[str] = None phone: str email: Optional[EmailStr] = None class DoctorBase(BaseModel): name: str age: Optional[int] = None email: Optional[EmailStr] = None phone: str address: Optional[str] = None clinic_id: int class PatientBase(BaseModel): name: str age: Optional[int] = None email: Optional[EmailStr] = None phone: Optional[str] = None address: Optional[str] = None dob: Optional[str] = None class AppointmentBase(BaseModel): doctor_id: int patient_id: int appointment_time: datetime status: AppointmentStatus = AppointmentStatus.CONFIRMED class CalendarBase(BaseModel): doc_id: int # rrule: str # Recurrence rule in iCalendar format time: str class UserBase(BaseModel): username: str email: EmailStr password: str clinicRole: Optional[ClinicUserRoles] = None userType: Optional[UserType] = None