feat: add memoized _load_filter_sort_postprocess helper (#72)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-04-19 22:39:13 +02:00
parent 18d07b5398
commit 0abbd982ea
2 changed files with 109 additions and 0 deletions
+32
View File
@@ -5,6 +5,7 @@ import polars as pl
from dash import no_update
from polars import selectors as cs
from src.cache import cache
from src.db import query_marches, schema
from src.utils import logger
from src.utils.data import DATA_SCHEMA
@@ -373,6 +374,37 @@ def get_default_hidden_columns(page):
return hidden_columns
@cache.memoize()
def _load_filter_sort_postprocess(filter_query, sort_by_key):
logger.debug(
f"Cache miss — recomputing for filter={filter_query!r} sort={sort_by_key!r}"
)
lff: pl.LazyFrame = query_marches().lazy()
if filter_query:
lff = filter_table_data(lff, filter_query, "tableau")
if sort_by_key:
sort_by = [
{"column_id": col, "direction": direction} for col, direction in sort_by_key
]
lff = sort_table_data(lff, sort_by)
lff = lff.cast(pl.String)
lff = lff.fill_null("")
dff: pl.DataFrame = lff.collect()
dff = add_links(dff)
if "sourceFile" in dff.columns:
dff = add_resource_link(dff)
if dff.height > 0:
dff = format_values(dff)
return dff
def prepare_table_data(
data, data_timestamp, filter_query, page_current, page_size, sort_by, source_table
):