Spaces:
Sleeping
Sleeping
File size: 2,629 Bytes
df37f6e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
from pydantic import BaseModel, field_validator
from typing import Any
from pydantic import BaseModel, Field
from app.dto.trip import TripDTO
class LocationRequest(BaseModel):
origin_office: str | None = None
departure_city: str | None = None
dest_office: str | None = None
destination_city: str | None = None
class TimeRequest(BaseModel):
time_select: dict | None = Field(default_factory=dict)
class TripQueryRequest(BaseModel):
departure_city: str | None = None
destination_city: str | None = None
origin_office: str | None = None
dest_office: str | None = None
ticket_number: int | None = None
date: dict | None = Field(default_factory=dict)
time_select: dict | None = Field(default_factory=dict)
id_selected: int | None = None
@field_validator("ticket_number", "id_selected", mode="before")
def validate_ticket_number(cls, v):
return int(v) if v else None
@field_validator("id_selected", mode="before")
def validate_selected_pickup(cls, v):
return int(v) if v else None
class TicketRequest(BaseModel):
user_name: str | None = None
phone_number: str | None = None
email: str | None = None
seat: str | None = None
pickup: str | None = None
dropoff: str | None = None
trip_data: TripDTO | None = None
class SeatQueryRequest(BaseModel):
seat: str | None = None
trip_data: TripDTO | None = None
class SessionInfo(BaseModel):
session: str | None = None
parameters: dict[str, Any] = Field(default_factory=dict)
class FulfillmentInfo(BaseModel):
tag: str | None = None
class DialogflowWebhookRequest(BaseModel):
text: str | None = None
sessionInfo: SessionInfo | None = None
fulfillmentInfo: FulfillmentInfo | None = None
detectIntentResponseId: str | None = None
def get_parameters(self) -> dict[str, Any]:
return self.sessionInfo.parameters if self.sessionInfo else {}
def get_session(self) -> str:
return (
self.sessionInfo.session
if self.sessionInfo and self.sessionInfo.session
else ""
)
def get_text(self) -> str:
return self.text.strip() if self.text else ""
def get_tag(self) -> str:
return (
self.fulfillmentInfo.tag
if self.fulfillmentInfo and self.fulfillmentInfo.tag
else ""
)
class StopRequest(BaseModel):
trip_data: TripDTO | None = None
id_selected: int | None = None
@field_validator("id_selected", mode="before")
def validate_selected_pickup(cls, v):
return int(v) if v else None
|