120 lines
2.2 KiB
Python
120 lines
2.2 KiB
Python
from pydantic import BaseModel
|
|
from typing import List
|
|
from typing import Literal
|
|
|
|
|
|
|
|
class AddressCreate(BaseModel):
|
|
user_id: int
|
|
flat: str
|
|
building: str
|
|
landmark: str = None
|
|
lat: float
|
|
lng: float
|
|
address_type: Literal["HOME", "WORK", "OTHER"] = "HOME"
|
|
frontend_ip: str
|
|
|
|
class OrderItemRequest(BaseModel):
|
|
menu_item_id: int
|
|
quantity: int
|
|
vendor_id: int
|
|
|
|
|
|
class OrderCreate(BaseModel):
|
|
frontend_ip: str | None = None
|
|
|
|
user_id: int
|
|
lat: float
|
|
lng: float
|
|
items: List[OrderItemRequest]
|
|
|
|
|
|
class AssignDelivery(BaseModel):
|
|
order_id: int
|
|
delivery_boy_id: int
|
|
|
|
|
|
class UpdateDeliveryStatus(BaseModel):
|
|
order_id: int
|
|
status: str # ASSIGNED / PICKED / DELIVERED
|
|
|
|
class DeliveryPayment(BaseModel):
|
|
order_id: int
|
|
payment_method: str
|
|
payment_proof: str | None = None
|
|
amount: float
|
|
|
|
|
|
# User Login
|
|
|
|
class UserCreate(BaseModel):
|
|
name: str
|
|
phone: str
|
|
email: str
|
|
|
|
class SendOTP(BaseModel):
|
|
phone: str
|
|
|
|
class VerifyOTP(BaseModel):
|
|
phone: str
|
|
otp: str
|
|
|
|
name: str = None
|
|
email: str = None
|
|
|
|
# ✅ NEW
|
|
frontend_ip: str | None = None
|
|
|
|
# ================= ADMIN =================
|
|
|
|
class AdminLogin(BaseModel):
|
|
email: str
|
|
password: str
|
|
|
|
|
|
class CreateZonalAdmin(BaseModel):
|
|
name: str
|
|
email: str
|
|
password: str
|
|
zone: str
|
|
|
|
class VendorCreate(BaseModel):
|
|
name: str
|
|
location: str
|
|
|
|
flat: str = None
|
|
building: str = None
|
|
landmark: str = None
|
|
lat: float | None = None
|
|
lng: float | None = None
|
|
|
|
email: str
|
|
password: str
|
|
|
|
class DeliveryBoyCreate(BaseModel):
|
|
name: str
|
|
email: str
|
|
phone: str
|
|
password: str
|
|
|
|
class DeliveryBoyLogin(BaseModel):
|
|
email: str
|
|
password: str
|
|
|
|
frontend_ip: str | None = None
|
|
|
|
class ReviewCreate(BaseModel):
|
|
user_id: int
|
|
order_id: int
|
|
rating: int
|
|
comment: str | None = None
|
|
|
|
# =========================
|
|
# SUPPORT TICKET
|
|
# =========================
|
|
|
|
class SupportTicketCreate(BaseModel):
|
|
user_id: int
|
|
message: str
|
|
frontend_ip: str | None = None
|
|
|