Files
mealno-backend/schemas.py
T
2026-05-25 14:07:00 +00:00

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