from charts.connectors.redis import client from .dataloaders.charts.utils import ChartIdType from .dataloaders.charts.dates.utils import ChartDateType, _chart_date_cache_prefix, get_chart_date_epochs from .dataloaders.charts.dates_dataloader import chart_dates_dataloader from .dataloaders.charts.dates.placements_dataloader import chart_placements_for_chart_date_dataloader from .dataloaders.charts.metadata_dataloader import chart_metadata_dataloader def prime_charts_cache(chart_dates: list[ChartDateType]) -> None: chart_dates_with_epochs = get_chart_date_epochs(chart_dates) for chart_date in chart_dates_with_epochs: chart_date['epoch'] += 1 chart_placements_for_chart_date_dataloader.load_many_no_cache_read( chart_dates_with_epochs, filter={}, order={ 'by': 'position', 'dir': 'ASC', 'and_then': None }, show_sme_data=None, permissions=None, ) new_epochs = { _chart_date_cache_prefix(chart_date) + ":epoch": chart_date['epoch'] for chart_date in chart_dates_with_epochs } client.mset(new_epochs) # Prime chart dates chart_ids = [ChartIdType({'chart_id': id}) for id in {chart_date['chart_id'] for chart_date in chart_dates}] chart_dates_dataloader.load_many_no_cache_read(chart_ids) chart_metadata_dataloader.load_many_no_cache_read(chart_ids)