diff --git a/pv_site_api/main.py b/pv_site_api/main.py index de8ddcb..181e2d9 100644 --- a/pv_site_api/main.py +++ b/pv_site_api/main.py @@ -1,4 +1,5 @@ """Main API Routes""" + import os import time import uuid @@ -17,7 +18,7 @@ from pvsite_datamodel.read.status import get_latest_status from pvsite_datamodel.read.user import get_user_by_email from pvsite_datamodel.write.generation import insert_generation_values -from pvsite_datamodel.write.user_and_site import create_site +from pvsite_datamodel.write.user_and_site import create_site, delete_site from sqlalchemy.orm import Session import pv_site_api @@ -339,6 +340,30 @@ def post_site_info( return site_to_pydantic(site) +@app.delete("/sites/delete/{site_uuid}", tags=["Sites"]) +def delete_site_info( + site_uuid: str, + session: Session = Depends(get_session), + auth: dict = Depends(auth), +): + """ + ### This route allows a user to delte a site. + + """ + + if is_fake(): + print(f"Got {fake_site_uuid} to delete it.") + return {"message": "Site deleted successfully"} + + # check user has access to site + check_user_has_access_to_site(session=session, auth=auth, site_uuid=site_uuid) + + # delete site + message = delete_site(session=session, site_uuid=site_uuid) + + return message + + # get_pv_actual: the client can read pv data from the past @app.get("/sites/{site_uuid}/pv_actual", response_model=MultiplePVActual, tags=["Generation"]) @cache_response diff --git a/tests/test_main.py b/tests/test_main.py index 47ef9b5..691dd5a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,4 +1,5 @@ """ Test for main app """ + import json from datetime import datetime, timezone @@ -45,3 +46,10 @@ def test_post_pv_actual(client, fake): response = client.post("/sites/fff-fff-fff/pv_actual", json=obj) assert response.status_code == 200 + + +def test_delete_site(client, fake): + response = client.delete("/sites/delete/fff-fff-fff") + + assert response.json()["message"] == "Site deleted successfully" + assert response.status_code == 200