/** * Helper for querying cached objects * Centralizes the pattern of querying with fallback hash/ID lookup */ import { objectCache } from '../objectCache' import { parseObjectId } from '../urlGenerator' import type { ObjectType } from '../objectCache' /** * Get a cached object by ID with fallback to hash lookup * Tries by hash first, then by full ID */ export async function getCachedObjectById( objectType: ObjectType, id: string ): Promise { // Try to parse id as id format (__) or use it as hash const parsed = parseObjectId(id) const hash = parsed.hash ?? id // Read only from IndexedDB cache const cached = await objectCache.get(objectType, hash) if (cached) { return cached as T } // Also try by ID if hash lookup failed const cachedById = await objectCache.getById(objectType, id) if (cachedById) { return cachedById as T } // Not found in cache - return null (no network request) return null }