vatsrahul1001 commented on code in PR #54263: URL: https://github.com/apache/airflow/pull/54263#discussion_r2268646535
########## airflow-core/src/airflow/api_fastapi/common/parameters.py: ########## @@ -606,6 +606,65 @@ def depends_float( QueryTagsFilter = Annotated[_TagsFilter, Depends(_TagsFilter.depends)] QueryOwnersFilter = Annotated[_OwnersFilter, Depends(_OwnersFilter.depends)] + +class _HasAssetScheduleFilter(BaseParam[bool]): + """Filter DAGs that have asset-based scheduling.""" + + def to_orm(self, select: Select) -> Select: + if self.value is None and self.skip_none: + return select + + if self.value: + # Filter DAGs that have asset-based scheduling + return select.where( + and_( + DagModel.asset_expression.is_not(None), + func.cast(DagModel.asset_expression, String) != "null", + ) + ) + # Filter DAGs that do NOT have asset-based scheduling + return select.where( + or_(DagModel.asset_expression.is_(None), func.cast(DagModel.asset_expression, String) == "null") + ) + + @classmethod + def depends( + cls, + has_asset_schedule: bool | None = Query(None, description="Filter DAGs with asset-based scheduling"), + ) -> _HasAssetScheduleFilter: + return cls().set_value(has_asset_schedule) + + +class _AssetDependencyFilter(BaseParam[str]): + """Filter DAGs by specific asset dependencies.""" + + def to_orm(self, select: Select) -> Select: + if self.value is None and self.skip_none: + return select + + # Join with DagScheduleAssetReference and AssetModel to filter by asset name/URI + select = select.join( + DagScheduleAssetReference, DagModel.dag_id == DagScheduleAssetReference.dag_id, isouter=False + ).join(AssetModel, DagScheduleAssetReference.asset_id == AssetModel.id, isouter=False) + Review Comment: Used subquery to handle this -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
