edumuellerFSL commented on code in PR #36781:
URL: https://github.com/apache/airflow/pull/36781#discussion_r1460077363


##########
airflow/api_connexion/endpoints/dataset_endpoint.py:
##########
@@ -32,14 +34,42 @@
     dataset_schema,
 )
 from airflow.models.dataset import DatasetEvent, DatasetModel
+from airflow.security import permissions
 from airflow.utils.db import get_query_count
+from airflow.utils.log.action_logger import action_event_from_permission
 from airflow.utils.session import NEW_SESSION, provide_session
+from airflow.www.decorators import action_logging
 
 if TYPE_CHECKING:
     from sqlalchemy.orm import Session
 
     from airflow.api_connexion.types import APIResponse
 
+RESOURCE_EVENT_PREFIX = "dataset"
+
+
+@security.requires_access_dataset("DELETE")
+@provide_session
+@action_logging(
+    event=action_event_from_permission(
+        prefix=RESOURCE_EVENT_PREFIX,
+        permission=permissions.ACTION_CAN_DELETE,
+    ),
+)
+def delete_dataset(*, uri: str, session: Session = NEW_SESSION) -> APIResponse:
+    """Delete a Dataset."""
+    dataset = session.scalar(select(DatasetModel).where(DatasetModel.uri == 
uri))
+    if dataset is None:
+        raise NotFound(
+            "Dataset not found",
+            detail=f"The Dataset with uri: `{uri}` was not found",
+        )
+    if dataset.consuming_dags or dataset.producing_tasks:
+        raise AlreadyExists(detail="Dataset is still referenced by other DAG")

Review Comment:
   It doesn't seem like this is a good use case for "AlreadyExists", maybe we 
should create a new custom exception



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to