from datetime import datetime, time from typing import Optional from enum import Enum from pydantic import BaseModel class WeekDay(str, Enum): MONDAY = "monday" TUESDAY = "tuesday" WEDNESDAY = "wednesday" THURSDAY = "thursday" FRIDAY = "friday" SATURDAY = "saturday" SUNDAY = "sunday" # Shared properties class DoctorScheduleBase(BaseModel): day_of_week: Optional[WeekDay] = None start_time: Optional[time] = None end_time: Optional[time] = None is_available: Optional[bool] = True # Properties to receive via API on creation class DoctorScheduleCreate(DoctorScheduleBase): doctor_id: int day_of_week: WeekDay start_time: time end_time: time # Properties to receive via API on update class DoctorScheduleUpdate(DoctorScheduleBase): pass class DoctorScheduleInDBBase(DoctorScheduleBase): id: Optional[int] = None doctor_id: int created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Config: from_attributes = True # Additional properties to return via API class DoctorSchedule(DoctorScheduleInDBBase): pass # Additional properties stored in DB class DoctorScheduleInDB(DoctorScheduleInDBBase): pass