diff --git a/crates/bindings-typescript/src/tanstack/SpacetimeDBQueryClient.ts b/crates/bindings-typescript/src/tanstack/SpacetimeDBQueryClient.ts index c8e6a825a09..ff337b2dc66 100644 --- a/crates/bindings-typescript/src/tanstack/SpacetimeDBQueryClient.ts +++ b/crates/bindings-typescript/src/tanstack/SpacetimeDBQueryClient.ts @@ -4,13 +4,15 @@ import type { QueryFunction, } from '@tanstack/react-query'; import { + type Query, + toSql, type BooleanExpr, evaluateBooleanExpr, getQueryAccessorName, getQueryWhereClause, } from '../lib/query'; -type QueryInput = { toSql(): string } & Record; +type QueryInput = Query; const queryRegistry = new Map< string, @@ -51,7 +53,7 @@ export function spacetimeDBQuery( const query = queryOrSkip; const accessorName = getQueryAccessorName(query); const whereExpr = getQueryWhereClause(query); - const querySql = query.toSql(); + const querySql = toSql(query); queryRegistry.set(querySql, { accessorName, whereExpr }); diff --git a/crates/bindings-typescript/src/tanstack/hooks.ts b/crates/bindings-typescript/src/tanstack/hooks.ts index d6e664519fb..f8eb2c8decd 100644 --- a/crates/bindings-typescript/src/tanstack/hooks.ts +++ b/crates/bindings-typescript/src/tanstack/hooks.ts @@ -6,6 +6,7 @@ import type { UseSuspenseQueryResult, } from '@tanstack/react-query'; import type { UntypedTableDef, RowType } from '../lib/table'; +import type { Query } from '../lib/query'; import { spacetimeDBQuery } from './SpacetimeDBQueryClient'; export type UseSpacetimeDBQueryResult = [ @@ -29,7 +30,7 @@ export type UseSpacetimeDBSuspenseQueryResult = [ // useSpacetimeDBQuery(tables.user.where(r => r.online.eq(true))) // useSpacetimeDBQuery(condition ? tables.user : 'skip') export function useSpacetimeDBQuery( - queryOrSkip: ({ toSql(): string } & Record) | 'skip', + queryOrSkip: Query | 'skip', // any useQuery option (e.g. enabled, refetchInterval, select, placeholderData), // except queryKey, queryFn, and meta (managed internally) options?: Omit< @@ -60,7 +61,7 @@ export function useSpacetimeDBQuery( // until data is ready, a parent handles the loading UI. // does not support 'skip' because useSuspenseQuery must always resolve export function useSpacetimeDBSuspenseQuery( - query: { toSql(): string } & Record, + query: Query, options?: Omit< UseSuspenseQueryOptions< RowType[],