import enum from sqlalchemy import Column, Integer, String, ForeignKey, Enum, DateTime, Boolean, Date, JSON from sqlalchemy.sql import func from app.db.base import Base # Költség Kategóriák class ExpenseCategory(str, enum.Enum): PURCHASE_PRICE = "PURCHASE_PRICE" # Vételár TRANSFER_TAX = "TRANSFER_TAX" # Vagyonszerzési illeték ADMIN_FEE = "ADMIN_FEE" # Eredetiség, forgalmi, törzskönyv VEHICLE_TAX = "VEHICLE_TAX" # Gépjárműadó INSURANCE = "INSURANCE" # Biztosítás REFUELING = "REFUELING" # Tankolás SERVICE = "SERVICE" # Szerviz / Javítás PARKING = "PARKING" # Parkolás TOLL = "TOLL" # Autópálya matrica FINE = "FINE" # Bírság TUNING_ACCESSORIES = "TUNING_ACCESSORIES" # Extrák OTHER = "OTHER" # Egyéb class VehicleEvent(Base): __tablename__ = "vehicle_events" __table_args__ = {"schema": "data"} id = Column(Integer, primary_key=True, index=True) vehicle_id = Column(Integer, ForeignKey("data.user_vehicles.id"), nullable=False) # Esemény típusa event_type = Column(Enum(ExpenseCategory, schema="data", name="expense_category_enum"), nullable=False) date = Column(Date, nullable=False) # Kilométeróra (KÖTELEZŐ!) odometer_value = Column(Integer, nullable=False) odometer_anomaly = Column(Boolean, default=False) # Ha csökkenést észlelünk, True lesz # Pénzügyek cost_amount = Column(Integer, nullable=False, default=0) # HUF # Leírás és Képek description = Column(String, nullable=True) image_paths = Column(JSON, nullable=True) # Lista a feltöltött képek (számla, fotó) útvonalairól # Kapcsolat a szolgáltatóval # Ha is_diy=True, akkor a user maga csinálta. # Ha is_diy=False és service_provider_id=None, akkor ismeretlen helyen készült. is_diy = Column(Boolean, default=False) service_provider_id = Column(Integer, ForeignKey("data.service_providers.id"), nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now())