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})"