diff --git a/api/main.py b/api/main.py index 4262e04..0e449ee 100644 --- a/api/main.py +++ b/api/main.py @@ -75,11 +75,34 @@ def save_object(obj): return JSONResponse(content=content, status_code=400) +def update_object(obj_id: int, obj): + with Session(engine) as session: + try: + object_db = session.get(type(obj), obj_id) + if not object_db: + content = jsonable_encoder({"message": "%s-ID not found" % type(obj).__qualname__}) + return JSONResponse(content=content, status_code=404) + obj_data = obj.model_dump(exclude_unset=True) + object_db.sqlmodel_update(obj_data) + session.add(object_db) + session.commit() + session.refresh(object_db) + return object_db + except IntegrityError|DataError as e: + content = jsonable_encoder({"message": e}) + return JSONResponse(content=content, status_code=400) + + @app.post("/cars/") def create_cars(car: Car): return save_object(car) +@app.put("/cars/{obj_id}") +def update_cars(obj_id, car: Car): + return update_object(obj_id, car) + + @app.get("/cars/") def read_cars(): with Session(engine) as session: @@ -92,6 +115,11 @@ def create_cars(fill_item: FuelItem): return save_object(fill_item) +@app.put("/fill_items/{obj_id}") +def update_cars(obj_id, fill_item: FuelItem): + return update_object(obj_id, fill_item) + + @app.get("/fill_items/") def read_cars(): with Session(engine) as session: