Skip to content

Commit 794f151

Browse files
[td] Add tags to pipeline cache (mage-ai#4162)
* [td] Add tags to pipeline cache * [td] Fix sorting by blocks and triggers * fix * fix
1 parent 1e93045 commit 794f151

File tree

7 files changed

+55
-34
lines changed

7 files changed

+55
-34
lines changed

mage_ai/api/resources/PipelineResource.py

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -207,25 +207,6 @@ async def get_pipeline(uuid: str) -> Pipeline:
207207
)
208208

209209
pipelines = [p for p in pipelines if p is not None]
210-
if sorts:
211-
def _sort_key(p, sorts=sorts, reverse_sort=reverse_sort):
212-
bools = []
213-
vals = []
214-
for k in sorts:
215-
if hasattr(p, k):
216-
val = getattr(p, k)
217-
vals.append(val)
218-
bools.append(val is None if not reverse_sort else val is not None)
219-
else:
220-
bools.append(False)
221-
222-
return tuple(bools + vals)
223-
224-
pipelines = sorted(
225-
pipelines,
226-
key=_sort_key,
227-
reverse=reverse_sort,
228-
)
229210

230211
@safe_db_query
231212
def query_pipeline_schedules(pipeline_uuids):
@@ -287,6 +268,34 @@ def query_pipeline_schedules(pipeline_uuids):
287268
if pipeline.uuid in history_by_pipeline_uuid:
288269
pipeline.history = history_by_pipeline_uuid.get(pipeline.uuid)
289270

271+
if sorts:
272+
def _sort_key(p, sorts=sorts, reverse_sort=reverse_sort):
273+
bools = []
274+
vals = []
275+
for k in sorts:
276+
if 'blocks' == k.lower():
277+
val = len(p.blocks_by_uuid)
278+
vals.append(val)
279+
bools.append(val is None if not reverse_sort else val is not None)
280+
elif 'triggers' == k.lower():
281+
val = len(p.blocks_by_uuid)
282+
vals.append(val)
283+
bools.append(val is None if not reverse_sort else val is not None)
284+
elif hasattr(p, k):
285+
val = getattr(p, k)
286+
vals.append(val)
287+
bools.append(val is None if not reverse_sort else val is not None)
288+
else:
289+
bools.append(False)
290+
291+
return tuple(bools + vals)
292+
293+
pipelines = sorted(
294+
pipelines,
295+
key=_sort_key,
296+
reverse=reverse_sort,
297+
)
298+
290299
if offset_limit_applied:
291300
results = pipelines
292301
else:

mage_ai/cache/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
PIPELINE_KEYS = [
77
'description',
88
'name',
9+
'tags',
910
'type',
1011
'updated_at',
1112
'uuid',
@@ -28,6 +29,7 @@ def build_pipeline_dict(
2829
pipeline_output_dict = dict(
2930
description=None,
3031
name=None,
32+
tags=None,
3133
type=None,
3234
updated_at=None,
3335
uuid=None,

mage_ai/frontend/components/shared/Table/index.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,13 +365,15 @@ function Table({
365365

366366
const column = columns?.[sortColIdx]?.uuid;
367367

368-
goToWithQuery(selectEntriesWithValues({
368+
goToWithQuery({
369+
...selectEntriesWithValues({
370+
[SortQueryEnum.SORT_COL_IDX]: sortColIdx,
371+
[SortQueryEnum.SORT_DIRECTION]: sortDirection,
372+
}),
369373
[MetaQueryEnum.ORDER_BY]: column
370374
? `${sortedColumnDirection === SortDirectionEnum.DESC ? '-' : ''}${column}`
371375
: null,
372-
[SortQueryEnum.SORT_COL_IDX]: sortColIdx,
373-
[SortQueryEnum.SORT_DIRECTION]: sortDirection,
374-
}), {
376+
}, {
375377
pushHistory: true,
376378
});
377379
}

mage_ai/frontend/pages/pipelines/index.tsx

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import ToggleSwitch from '@oracle/elements/Inputs/ToggleSwitch';
3939
import Toolbar from '@components/shared/Table/Toolbar';
4040
import api from '@api';
4141
import dark from '@oracle/styles/themes/dark';
42+
import useProject from '@utils/models/project/useProject';
4243
import { BORDER_RADIUS_SMALL } from '@oracle/styles/units/borders';
4344
import { BlockTypeEnum } from '@interfaces/BlockType';
4445
import {
@@ -138,6 +139,11 @@ function PipelineListPage() {
138139
const refPaginate = useRef(null);
139140
const timeout = useRef(null);
140141

142+
const {
143+
fetchProjects,
144+
project,
145+
} = useProject();
146+
141147
const [buttonTabsHeight, setButtonTabsHeight] = useState<number>(null);
142148

143149
const [selectedPipeline, setSelectedPipeline] = useState<PipelineType>(null);
@@ -185,8 +191,6 @@ function PipelineListPage() {
185191
refButtonTabs,
186192
]);
187193

188-
const { data: dataProjects, mutate: fetchProjects } = api.projects.list();
189-
const project: ProjectType = useMemo(() => dataProjects?.projects?.[0], [dataProjects]);
190194
const displayLocalTimezone = useMemo(
191195
() => storeLocalTimezoneSetting(project?.features?.[FeatureUUIDEnum.LOCAL_TIMEZONE]),
192196
[project?.features],
@@ -202,8 +206,6 @@ function PipelineListPage() {
202206
include_schedules: 1,
203207
}, {
204208
revalidateOnFocus: false,
205-
}, {
206-
pauseFetch: operationHistoryEnabled && selectedTabUUID && TAB_RECENT.uuid === selectedTabUUID,
207209
});
208210

209211
const fromHistoryDays = useMemo(() => q?.[PipelineQueryEnum.HISTORY_DAYS] || 7, [q]);
@@ -351,6 +353,16 @@ function PipelineListPage() {
351353
}
352354
);
353355

356+
useEffect(() => {
357+
if (query?.[PipelineQueryEnum.SEARCH] && searchText === null) {
358+
setSearchTextState(query?.[PipelineQueryEnum.SEARCH]);
359+
}
360+
}, [
361+
query,
362+
searchText,
363+
setSearchTextState,
364+
]);
365+
354366
useEffect(() => {
355367
let queryFinal = {};
356368

@@ -462,12 +474,7 @@ function PipelineListPage() {
462474
setFilters(selectEntriesWithValues(f));
463475
}
464476

465-
if (queryFinal?.[PipelineQueryEnum.SEARCH]) {
466-
setSearchText(queryFinal?.[PipelineQueryEnum.SEARCH]);
467-
}
468-
469477
if (!isEmptyObject(queryFinal)) {
470-
console.log('wtf', queryFinal, selectEntriesWithValues(queryFinal))
471478
goToWithQuery(selectEntriesWithValues(queryFinal), {
472479
pushHistory: false,
473480
});
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"added_at":null,"pipeline":{"description":"Mage is powerful!","name":"example_pipeline","type":"python","updated_at":"2023-09-22 22:59:13","uuid":"example_pipeline","blocks":[{"downstream_blocks":["fill_in_missing_values","summer_dew","wandering_voice","blue_haze","solitary_moon","spring_feather","bar_chart_for_load_titanic_1695423547036"],"language":"python","name":"load_titanic","type":"data_loader","upstream_blocks":[],"uuid":"load_titanic"},{"downstream_blocks":[],"language":"markdown","name":"spring feather","type":"markdown","upstream_blocks":["load_titanic"],"uuid":"spring_feather"},{"downstream_blocks":[],"language":"markdown","name":"polished field","type":"markdown","upstream_blocks":[],"uuid":"polished_field"},{"downstream_blocks":[],"language":"python","name":"solitary moon","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"solitary_moon"},{"downstream_blocks":["autumn_sound"],"language":"python","name":"blue haze","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"blue_haze"},{"downstream_blocks":[],"language":"yaml","name":"autumn sound","type":"dbt","upstream_blocks":["blue_haze"],"uuid":"autumn_sound"},{"downstream_blocks":[],"language":"python","name":"wandering voice","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"wandering_voice"},{"downstream_blocks":[],"language":"python","name":"summer dew","type":"data_exporter","upstream_blocks":["load_titanic"],"uuid":"summer_dew"},{"downstream_blocks":["export_titanic_clean"],"language":"python","name":"fill_in_missing_values","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"fill_in_missing_values"},{"downstream_blocks":["hidden_wildflower"],"language":"python","name":"export_titanic_clean","type":"data_exporter","upstream_blocks":["fill_in_missing_values"],"uuid":"export_titanic_clean"},{"downstream_blocks":["empty_shadow"],"language":"python","name":"hidden wildflower","type":"data_loader","upstream_blocks":["export_titanic_clean"],"uuid":"hidden_wildflower"},{"downstream_blocks":["aged_cloud"],"language":"python","name":"empty shadow","type":"transformer","upstream_blocks":["hidden_wildflower"],"uuid":"empty_shadow"},{"downstream_blocks":[],"language":"python","name":"aged cloud","type":"data_exporter","upstream_blocks":["empty_shadow"],"uuid":"aged_cloud"},{"downstream_blocks":[],"language":"markdown","name":"winter waterfall","type":"markdown","upstream_blocks":[],"uuid":"winter_waterfall"},{"downstream_blocks":[],"language":"python","name":"growth/test","type":"transformer","upstream_blocks":[],"uuid":"growth/test"}]}}
1+
{"added_at":null,"pipeline":{"description":null,"name":"example_pipeline","tags":[],"type":"python","updated_at":"2023-09-22 22:59:13","uuid":"example_pipeline","blocks":[{"downstream_blocks":["fill_in_missing_values","summer_dew","wandering_voice","blue_haze","solitary_moon","spring_feather","bar_chart_for_load_titanic_1695423547036"],"language":"python","name":"load_titanic","type":"data_loader","upstream_blocks":[],"uuid":"load_titanic"},{"downstream_blocks":[],"language":"markdown","name":"spring feather","type":"markdown","upstream_blocks":["load_titanic"],"uuid":"spring_feather"},{"downstream_blocks":[],"language":"markdown","name":"polished field","type":"markdown","upstream_blocks":[],"uuid":"polished_field"},{"downstream_blocks":[],"language":"python","name":"solitary moon","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"solitary_moon"},{"downstream_blocks":["autumn_sound"],"language":"python","name":"blue haze","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"blue_haze"},{"downstream_blocks":[],"language":"yaml","name":"autumn sound","type":"dbt","upstream_blocks":["blue_haze"],"uuid":"autumn_sound"},{"downstream_blocks":[],"language":"python","name":"wandering voice","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"wandering_voice"},{"downstream_blocks":[],"language":"python","name":"summer dew","type":"data_exporter","upstream_blocks":["load_titanic"],"uuid":"summer_dew"},{"downstream_blocks":["export_titanic_clean"],"language":"python","name":"fill_in_missing_values","type":"transformer","upstream_blocks":["load_titanic"],"uuid":"fill_in_missing_values"},{"downstream_blocks":["hidden_wildflower"],"language":"python","name":"export_titanic_clean","type":"data_exporter","upstream_blocks":["fill_in_missing_values"],"uuid":"export_titanic_clean"},{"downstream_blocks":["empty_shadow"],"language":"python","name":"hidden wildflower","type":"data_loader","upstream_blocks":["export_titanic_clean"],"uuid":"hidden_wildflower"},{"downstream_blocks":["aged_cloud"],"language":"python","name":"empty shadow","type":"transformer","upstream_blocks":["hidden_wildflower"],"uuid":"empty_shadow"},{"downstream_blocks":[],"language":"python","name":"aged cloud","type":"data_exporter","upstream_blocks":["empty_shadow"],"uuid":"aged_cloud"},{"downstream_blocks":[],"language":"markdown","name":"winter waterfall","type":"markdown","upstream_blocks":[],"uuid":"winter_waterfall"},{"downstream_blocks":[],"language":"python","name":"growth/test","type":"transformer","upstream_blocks":[],"uuid":"growth/test"}]},"updated_at":1702284950.403907}

mage_ai/tests/cache/pipeline_details_mapping_template

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

mage_ai/tests/cache/test_pipeline_cache.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ async def test_initialize_cache_for_models(self):
165165
),
166166
],
167167
name=uuid.uuid4().hex,
168+
tags=[uuid.uuid4().hex, uuid.uuid4().hex],
168169
type=uuid.uuid4().hex,
169170
updated_at=uuid.uuid4().hex,
170171
uuid=uuid.uuid4().hex,

0 commit comments

Comments
 (0)