
This commit includes: - Project structure and FastAPI setup - SQLAlchemy models for users, vehicles, schedules, and tickets - Alembic migrations - User authentication and management - Vehicle and schedule management - Ticket purchase and cancellation with time restrictions - Comprehensive API documentation
73 lines
1.4 KiB
Python
73 lines
1.4 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.models.vehicle import VehicleType
|
|
|
|
|
|
class VehicleBase(BaseModel):
|
|
vehicle_number: str
|
|
vehicle_type: VehicleType
|
|
capacity: int = Field(..., gt=0)
|
|
|
|
|
|
class VehicleCreate(VehicleBase):
|
|
pass
|
|
|
|
|
|
class VehicleUpdate(BaseModel):
|
|
vehicle_number: Optional[str] = None
|
|
vehicle_type: Optional[VehicleType] = None
|
|
capacity: Optional[int] = Field(None, gt=0)
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
class VehicleInDBBase(VehicleBase):
|
|
id: int
|
|
is_active: bool
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class Vehicle(VehicleInDBBase):
|
|
pass
|
|
|
|
|
|
class ScheduleBase(BaseModel):
|
|
vehicle_id: int
|
|
departure_location: str
|
|
arrival_location: str
|
|
departure_time: datetime
|
|
arrival_time: datetime
|
|
available_seats: int = Field(..., ge=0)
|
|
|
|
|
|
class ScheduleCreate(ScheduleBase):
|
|
pass
|
|
|
|
|
|
class ScheduleUpdate(BaseModel):
|
|
departure_location: Optional[str] = None
|
|
arrival_location: Optional[str] = None
|
|
departure_time: Optional[datetime] = None
|
|
arrival_time: Optional[datetime] = None
|
|
available_seats: Optional[int] = Field(None, ge=0)
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
class ScheduleInDBBase(ScheduleBase):
|
|
id: int
|
|
is_active: bool
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class Schedule(ScheduleInDBBase):
|
|
vehicle: Vehicle
|
|
|
|
|
|
class ScheduleWithoutVehicle(ScheduleInDBBase):
|
|
pass |