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

48 lines
1.5 KiB
Python

from enum import Enum as PyEnum
from sqlalchemy import Boolean, Column, DateTime, Enum, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from app.db.base import Base
class VehicleType(str, PyEnum):
CAR = "car"
BUS = "bus"
TRAIN = "train"
class Vehicle(Base):
__tablename__ = "vehicles"
id = Column(Integer, primary_key=True, index=True)
vehicle_number = Column(String, unique=True, index=True)
vehicle_type = Column(Enum(VehicleType), index=True)
capacity = Column(Integer)
is_active = Column(Boolean, default=True)
# Relationships
schedules = relationship("Schedule", back_populates="vehicle")
def __repr__(self):
return f"Vehicle(id={self.id}, number={self.vehicle_number}, type={self.vehicle_type})"
class Schedule(Base):
__tablename__ = "schedules"
id = Column(Integer, primary_key=True, index=True)
vehicle_id = Column(Integer, ForeignKey("vehicles.id"))
departure_location = Column(String)
arrival_location = Column(String)
departure_time = Column(DateTime, index=True)
arrival_time = Column(DateTime)
available_seats = Column(Integer)
is_active = Column(Boolean, default=True)
# Relationships
vehicle = relationship("Vehicle", back_populates="schedules")
tickets = relationship("Ticket", back_populates="schedule")
def __repr__(self):
return f"Schedule(id={self.id}, vehicle={self.vehicle_id}, departure={self.departure_time})"