clasificadorCache.js 1.28 KB
/**
 * Cache store for clasificador data
 * Persists data in memory to avoid reloading on navigation
 */
import { writable } from 'svelte/store';

// Cache structure
const createClasificadorCache = () => {
  const { subscribe, set, update } = writable({
    objetoGasto: {
      allItems: null,
      grupos: null,
      entities: null,
      availableYears: null,
      lastFetched: null
    }
  });

  return {
    subscribe,

    // Set all clasificador objeto data
    setObjetoGasto: (data) => {
      update(cache => ({
        ...cache,
        objetoGasto: {
          ...data,
          lastFetched: Date.now()
        }
      }));
    },

    // Get cached data if valid (less than 5 minutes old)
    getObjetoGasto: (currentCache) => {
      const cache = currentCache.objetoGasto;
      if (!cache.lastFetched) return null;

      // Cache valid for 5 minutes
      const isValid = Date.now() - cache.lastFetched < 5 * 60 * 1000;
      if (!isValid) return null;

      return cache;
    },

    // Clear cache
    clear: () => {
      set({
        objetoGasto: {
          allItems: null,
          grupos: null,
          entities: null,
          availableYears: null,
          lastFetched: null
        }
      });
    }
  };
};

export const clasificadorCache = createClasificadorCache();