setQueryData<T> static method

void setQueryData<T>(
  1. List key,
  2. T updater(
    1. T? oldData
    )
)

Directly updates cached query data for key using a transformation updater callback.

Creates a new QueryCacheEntry or updates an existing one, marks it fresh (isStale = false), and notifies invalidation listeners.

BloomData.setQueryData<List<Task>>(['tasks'], (oldTasks) => [...?oldTasks, newTask]);

Implementation

static void setQueryData<T>(List<dynamic> key, T Function(T? oldData) updater) {
  final keyStr = normalizeKey(key);
  final existing = _cache[keyStr] as QueryCacheEntry<T>?;
  final newData = updater(existing?.data);

  _cache[keyStr] = QueryCacheEntry<T>(
    key: key,
    data: newData,
    updatedAt: DateTime.now(),
    staleTime: existing?.staleTime ?? const Duration(minutes: 5),
    cacheTime: existing?.cacheTime ?? const Duration(minutes: 30),
    isStale: false,
  );

  _invalidationControllers[keyStr]?.add(null);
}