Automated Action 9e56bda916 Implement Multimodal Ticketing System with FastAPI and SQLite
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
2025-06-17 11:08:42 +00:00

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