from pydantic import BaseModel, EmailStr, Field from datetime import datetime from typing import Optional # VisitorLog Schemas class VisitorLogBase(BaseModel): full_name: str email_address: EmailStr phone_number: str company_name: Optional[str] = None qid_id_number: Optional[str] = None purpose_of_visit: str person_to_meet: str preferred_datetime: datetime class VisitorLogCreate(VisitorLogBase): pass class VisitorLogResponse(VisitorLogBase): sl_no: int reference_number: str class Config: from_attributes = True # Updated from orm_mode # MeetingStatus Schemas class MeetingStatusBase(BaseModel): status: str email_send: Optional[str] = None class MeetingStatusCreate(MeetingStatusBase): reference_number: str class MeetingStatusUpdate(MeetingStatusBase): pass class MeetingStatusResponse(MeetingStatusBase): sl_no: int reference_number: str class Config: from_attributes = True # Updated from orm_mode # Combined Response Schema class VisitorWithStatusResponse(VisitorLogResponse): meeting_status: Optional[MeetingStatusResponse] = None class Config: from_attributes = True # Updated from orm_mode # PersonToMeet Schemas class PersonToMeetBase(BaseModel): name: str phone_number: str department: str email_id: EmailStr class PersonToMeetCreate(PersonToMeetBase): pass class PersonToMeetUpdate(PersonToMeetBase): pass class PersonToMeetResponse(PersonToMeetBase): id: int class Config: from_attributes = True