( configOrQueryOrCollection: (queryFn?: any) => any, )
| 284 | |
| 285 | // Implementation - use function overloads to infer the actual collection type |
| 286 | export function useLiveQuery( |
| 287 | configOrQueryOrCollection: (queryFn?: any) => any, |
| 288 | ) { |
| 289 | const collection = createMemo( |
| 290 | () => { |
| 291 | if (configOrQueryOrCollection.length === 1) { |
| 292 | // This is a query function - check if it returns null/undefined |
| 293 | const queryBuilder = new BaseQueryBuilder() as InitialQueryBuilder |
| 294 | const result = configOrQueryOrCollection(queryBuilder) |
| 295 | |
| 296 | if (result === undefined || result === null) { |
| 297 | // Disabled query - return null |
| 298 | return null |
| 299 | } |
| 300 | |
| 301 | return createLiveQueryCollection({ |
| 302 | query: configOrQueryOrCollection, |
| 303 | startSync: true, |
| 304 | }) |
| 305 | } |
| 306 | |
| 307 | const innerCollection = configOrQueryOrCollection() |
| 308 | |
| 309 | if (innerCollection === undefined || innerCollection === null) { |
| 310 | // Disabled query - return null |
| 311 | return null |
| 312 | } |
| 313 | |
| 314 | if (innerCollection instanceof CollectionImpl) { |
| 315 | innerCollection.startSyncImmediate() |
| 316 | return innerCollection as Collection |
| 317 | } |
| 318 | |
| 319 | return createLiveQueryCollection({ |
| 320 | ...innerCollection, |
| 321 | startSync: true, |
| 322 | }) |
| 323 | }, |
| 324 | undefined, |
| 325 | { name: `TanstackDBCollectionMemo` }, |
| 326 | ) |
| 327 | |
| 328 | // Reactive state that gets updated granularly through change events |
| 329 | const state = new ReactiveMap<string | number, any>() |
| 330 | |
| 331 | // Reactive data array that maintains sorted order |
| 332 | const [data, setData] = createStore<Array<any>>([], { |
| 333 | name: `TanstackDBData`, |
| 334 | }) |
| 335 | |
| 336 | // Track collection status reactively |
| 337 | const [status, setStatus] = createSignal( |
| 338 | collection() ? collection()!.status : (`disabled` as const), |
| 339 | { |
| 340 | name: `TanstackDBStatus`, |
| 341 | }, |
| 342 | ) |
| 343 |
searching dependent graphs…