1- import { type SQLWatchOptions , parseQuery , type CompilableQuery , ParsedQuery } from '@powersync/common' ;
1+ import { type CompilableQuery , ParsedQuery , type SQLWatchOptions , parseQuery } from '@powersync/common' ;
22import { type MaybeRef , type Ref , ref , toValue , watchEffect } from 'vue' ;
33import { usePowerSync } from './powerSync' ;
44
@@ -87,10 +87,10 @@ export const useQuery = <T = any>(
8787 error . value = wrappedError ;
8888 } ;
8989
90- const _fetchData = async ( sql : string , parameters : any [ ] ) => {
90+ const _fetchData = async ( executor : ( ) => Promise < T [ ] > ) => {
9191 isFetching . value = true ;
9292 try {
93- const result = await powerSync . value . getAll < T > ( sql , parameters ) ;
93+ const result = await executor ( ) ;
9494 handleResult ( result ) ;
9595 } catch ( e ) {
9696 console . error ( 'Failed to fetch data:' , e ) ;
@@ -104,8 +104,9 @@ export const useQuery = <T = any>(
104104 onCleanup ( ( ) => abortController . abort ( ) ) ;
105105
106106 let parsedQuery : ParsedQuery ;
107+ const queryValue = toValue ( query ) ;
107108 try {
108- parsedQuery = parseQuery ( toValue ( query ) , toValue ( sqlParameters ) . map ( toValue ) ) ;
109+ parsedQuery = parseQuery ( queryValue , toValue ( sqlParameters ) . map ( toValue ) ) ;
109110 } catch ( e ) {
110111 console . error ( 'Failed to parse query:' , e ) ;
111112 handleError ( e ) ;
@@ -123,7 +124,9 @@ export const useQuery = <T = any>(
123124 return ;
124125 }
125126 // Fetch initial data
126- fetchData = ( ) => _fetchData ( sql , parameters ) ;
127+ const executor =
128+ typeof queryValue == 'string' ? ( ) => powerSync . value . getAll < T > ( sql , parameters ) : ( ) => queryValue . execute ( ) ;
129+ fetchData = ( ) => _fetchData ( executor ) ;
127130 await fetchData ( ) ;
128131
129132 if ( options . runQueryOnce ) {
0 commit comments