from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import text from app.api.deps import get_db, get_current_user from pydantic import BaseModel from datetime import date from typing import Optional router = APIRouter() class ExpenseCreate(BaseModel): vehicle_id: str category: str # Pl: REFUELING, SERVICE, INSURANCE amount: float date: date odometer_value: Optional[float] = None description: Optional[str] = None @router.post("/add") async def add_expense( expense: ExpenseCreate, db: AsyncSession = Depends(get_db), current_user = Depends(get_current_user) ): """ Új költség rögzítése egy járműhöz. """ # 1. Ellenőrizzük, hogy a jármű létezik-e query = text("SELECT id FROM data.vehicles WHERE id = :v_id") res = await db.execute(query, {"v_id": expense.vehicle_id}) if not res.fetchone(): raise HTTPException(status_code=404, detail="Jármű nem található.") # 2. Beszúrás a vehicle_expenses táblába insert_query = text(""" INSERT INTO data.vehicle_expenses (vehicle_id, category, amount, date, odometer_value, description) VALUES (:v_id, :cat, :amt, :date, :odo, :desc) """) await db.execute(insert_query, { "v_id": expense.vehicle_id, "cat": expense.category, "amt": expense.amount, "date": expense.date, "odo": expense.odometer_value, "desc": expense.description }) await db.commit() return {"status": "success", "message": "Költség rögzítve."}