Files
booking-service/app/schemas.py

91 lines
1.8 KiB
Python

from pydantic import BaseModel, Field
from datetime import datetime, date
from typing import Optional
# === Services ===
class ServiceOut(BaseModel):
id: int
name: str
slug: str
duration_min: int
description: Optional[str] = None
category: str
class Config:
from_attributes = True
class ServiceCreate(BaseModel):
name: str
slug: str
duration_min: int = 15
description: Optional[str] = None
category: str = "generale"
# === Providers ===
class ProviderOut(BaseModel):
id: int
name: str
class Config:
from_attributes = True
class ProviderCreate(BaseModel):
name: str
email: Optional[str] = None
phone: Optional[str] = None
google_calendar_id: Optional[str] = None
# === Availability ===
class TimeSlot(BaseModel):
start: str # "09:00"
end: str # "09:30"
provider_id: int
provider_name: str
class AvailabilityRule(BaseModel):
weekday: int # 0=lun, 6=dom
start: str # "09:00"
end: str # "13:00"
# === Bookings ===
class BookingCreate(BaseModel):
service_id: int
provider_id: int
start_at: datetime
customer_name: str
customer_phone: str
customer_email: Optional[str] = None
notes: Optional[str] = None
class BookingOut(BaseModel):
id: int
service_id: int
provider_id: int
customer_name: str
customer_phone: str
customer_email: Optional[str] = None
start_at: datetime
end_at: datetime
status: str
notes: Optional[str] = None
created_at: datetime
service: Optional[ServiceOut] = None
provider: Optional[ProviderOut] = None
class Config:
from_attributes = True
class BookingUpdate(BaseModel):
status: Optional[str] = None
notes: Optional[str] = None