|
19 | 19 | from datetime import datetime
|
20 | 20 | from typing import Annotated
|
21 | 21 |
|
22 |
| -from fastapi import Depends, HTTPException, Query, status |
| 22 | +from fastapi import Depends, HTTPException, status |
23 | 23 | from sqlalchemy import select
|
24 | 24 |
|
25 | 25 | from airflow.api_fastapi.common.db.common import (
|
26 | 26 | SessionDep,
|
27 | 27 | paginated_select,
|
28 | 28 | )
|
29 | 29 | from airflow.api_fastapi.common.parameters import (
|
| 30 | + FilterOptionEnum, |
| 31 | + FilterParam, |
30 | 32 | QueryLimit,
|
31 | 33 | QueryOffset,
|
32 | 34 | SortParam,
|
| 35 | + filter_param_factory, |
33 | 36 | )
|
34 | 37 | from airflow.api_fastapi.common.router import AirflowRouter
|
35 | 38 | from airflow.api_fastapi.core_api.datamodels.event_logs import (
|
@@ -83,46 +86,50 @@ def get_event_logs(
|
83 | 86 | ).dynamic_depends()
|
84 | 87 | ),
|
85 | 88 | ],
|
86 |
| - dag_id: str | None = None, |
87 |
| - task_id: str | None = None, |
88 |
| - run_id: str | None = None, |
89 |
| - map_index: int | None = None, |
90 |
| - try_number: int | None = None, |
91 |
| - owner: str | None = None, |
92 |
| - event: str | None = None, |
93 |
| - excluded_events: list[str] | None = Query(None), |
94 |
| - included_events: list[str] | None = Query(None), |
95 |
| - before: datetime | None = None, |
96 |
| - after: datetime | None = None, |
| 89 | + dag_id: Annotated[FilterParam[str | None], Depends(filter_param_factory(Log.dag_id, str | None))], |
| 90 | + task_id: Annotated[FilterParam[str | None], Depends(filter_param_factory(Log.task_id, str | None))], |
| 91 | + run_id: Annotated[FilterParam[str | None], Depends(filter_param_factory(Log.run_id, str | None))], |
| 92 | + map_index: Annotated[FilterParam[int | None], Depends(filter_param_factory(Log.map_index, int | None))], |
| 93 | + try_number: Annotated[FilterParam[int | None], Depends(filter_param_factory(Log.try_number, int | None))], |
| 94 | + owner: Annotated[FilterParam[str | None], Depends(filter_param_factory(Log.owner, str | None))], |
| 95 | + event: Annotated[FilterParam[str | None], Depends(filter_param_factory(Log.event, str | None))], |
| 96 | + excluded_events: Annotated[ |
| 97 | + FilterParam[list[str] | None], |
| 98 | + Depends( |
| 99 | + filter_param_factory(Log.event, list[str] | None, FilterOptionEnum.NOT_IN, "excluded_events") |
| 100 | + ), |
| 101 | + ], |
| 102 | + included_events: Annotated[ |
| 103 | + FilterParam[list[str] | None], |
| 104 | + Depends(filter_param_factory(Log.event, list[str] | None, FilterOptionEnum.IN, "included_events")), |
| 105 | + ], |
| 106 | + before: Annotated[ |
| 107 | + FilterParam[datetime | None], |
| 108 | + Depends(filter_param_factory(Log.dttm, datetime | None, FilterOptionEnum.LESS_THAN, "before")), |
| 109 | + ], |
| 110 | + after: Annotated[ |
| 111 | + FilterParam[datetime | None], |
| 112 | + Depends(filter_param_factory(Log.dttm, datetime | None, FilterOptionEnum.GREATER_THAN, "after")), |
| 113 | + ], |
97 | 114 | ) -> EventLogCollectionResponse:
|
98 | 115 | """Get all Event Logs."""
|
99 | 116 | query = select(Log).group_by(Log.id)
|
100 |
| - # TODO: Refactor using the `FilterParam` class in commit `574b72e41cc5ed175a2bbf4356522589b836bb11` |
101 |
| - if dag_id is not None: |
102 |
| - query = query.where(Log.dag_id == dag_id) |
103 |
| - if task_id is not None: |
104 |
| - query = query.where(Log.task_id == task_id) |
105 |
| - if run_id is not None: |
106 |
| - query = query.where(Log.run_id == run_id) |
107 |
| - if map_index is not None: |
108 |
| - query = query.where(Log.map_index == map_index) |
109 |
| - if try_number is not None: |
110 |
| - query = query.where(Log.try_number == try_number) |
111 |
| - if owner is not None: |
112 |
| - query = query.where(Log.owner == owner) |
113 |
| - if event is not None: |
114 |
| - query = query.where(Log.event == event) |
115 |
| - if excluded_events is not None: |
116 |
| - query = query.where(Log.event.notin_(excluded_events)) |
117 |
| - if included_events is not None: |
118 |
| - query = query.where(Log.event.in_(included_events)) |
119 |
| - if before is not None: |
120 |
| - query = query.where(Log.dttm < before) |
121 |
| - if after is not None: |
122 |
| - query = query.where(Log.dttm > after) |
123 | 117 | event_logs_select, total_entries = paginated_select(
|
124 | 118 | statement=query,
|
125 | 119 | order_by=order_by,
|
| 120 | + filters=[ |
| 121 | + dag_id, |
| 122 | + task_id, |
| 123 | + run_id, |
| 124 | + map_index, |
| 125 | + try_number, |
| 126 | + owner, |
| 127 | + event, |
| 128 | + excluded_events, |
| 129 | + included_events, |
| 130 | + before, |
| 131 | + after, |
| 132 | + ], |
126 | 133 | offset=offset,
|
127 | 134 | limit=limit,
|
128 | 135 | session=session,
|
|
0 commit comments