From f1f33e2fe42b7e91b77a6e56eb8f2f37a7bceb1e Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Wed, 4 Mar 2026 21:29:01 +0000 Subject: [PATCH] feat: implement delete dataset route --- server/app.py | 20 ++++++++++++++++++++ server/core/datasets.py | 18 +++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/server/app.py b/server/app.py index 1332ad2..f490fe9 100644 --- a/server/app.py +++ b/server/app.py @@ -175,6 +175,26 @@ def get_dataset(dataset_id): except Exception: print(traceback.format_exc()) return jsonify({"error": "An unexpected error occured"}), 500 + +@app.route("/dataset/", methods=["DELETE"]) +@jwt_required() +def delete_dataset(dataset_id): + try: + user_id = int(get_jwt_identity()) + + if not dataset_manager.authorize_user_dataset(dataset_id, user_id): + raise NotAuthorisedException("This user is not authorised to access this dataset") + + dataset_manager.delete_dataset_info(dataset_id) + dataset_manager.delete_dataset_content(dataset_id) + return jsonify({"message": f"Dataset {dataset_id} metadata and content successfully deleted"}), 200 + except NotAuthorisedException: + return jsonify({"error": "User is not authorised to access this content"}), 403 + except NonExistentDatasetException: + return jsonify({"error": "Dataset does not exist"}), 404 + except Exception: + print(traceback.format_exc()) + return jsonify({"error": "An unexpected error occured"}), 500 @app.route("/dataset//status", methods=["GET"]) @jwt_required() diff --git a/server/core/datasets.py b/server/core/datasets.py index e7ee717..2edb42c 100644 --- a/server/core/datasets.py +++ b/server/core/datasets.py @@ -143,4 +143,20 @@ class DatasetManager: print(result) raise NonExistentDatasetException(f"Dataset {dataset_id} does not exist") - return result[0] \ No newline at end of file + return result[0] + + def delete_dataset_info(self, dataset_id: int): + query = """ + DELETE FROM datasets + WHERE id = %s + """ + + self.db.execute(query, (dataset_id, )) + + def delete_dataset_content(self, dataset_id: int): + query = """ + DELETE FROM events + WHERE id = %s + """ + + self.db.execute(query, (dataset_id, )) \ No newline at end of file