11import {
22 AbstractPowerSyncDatabase ,
3+ compilableQueryWatch ,
4+ CompilableQueryWatchHandler ,
35 QueryResult ,
46 runOnSchemaChange ,
57 SQLWatchOptions ,
@@ -19,8 +21,9 @@ import { BaseSQLiteDatabase } from 'drizzle-orm/sqlite-core/db';
1921import { SQLiteAsyncDialect } from 'drizzle-orm/sqlite-core/dialect' ;
2022import type { DrizzleConfig } from 'drizzle-orm/utils' ;
2123import { PowerSyncSQLiteSession , PowerSyncSQLiteTransactionConfig } from './sqlite-session' ;
24+ import { toCompilableQuery } from 'src/utils/compilableQuery' ;
2225
23- type WatchQuery = { toSQL ( ) : Query ; execute ( ) : Promise < any > } ;
26+ type WatchQuery < T > = { toSQL ( ) : Query ; execute ( ) : Promise < T > } ;
2427
2528export interface PowerSyncSQLiteDatabase < TSchema extends Record < string , unknown > = Record < string , never > >
2629 extends BaseSQLiteDatabase < 'async' , QueryResult , TSchema > {
@@ -31,7 +34,7 @@ export interface PowerSyncSQLiteDatabase<TSchema extends Record<string, unknown>
3134 config ?: PowerSyncSQLiteTransactionConfig
3235 ) : Promise < T > ;
3336
34- watch ( query : WatchQuery , handler ?: WatchHandler , options ?: SQLWatchOptions ) : void ;
37+ watch < T > ( query : WatchQuery < T > , handler ?: CompilableQueryWatchHandler < T > , options ?: SQLWatchOptions ) : void ;
3538}
3639
3740export function wrapPowerSyncWithDrizzle < TSchema extends Record < string , unknown > = Record < string , never > > (
@@ -60,50 +63,17 @@ export function wrapPowerSyncWithDrizzle<TSchema extends Record<string, unknown>
6063 logger
6164 } ) ;
6265
63- const watch = ( query : WatchQuery , handler ?: WatchHandler , options ?: SQLWatchOptions ) : void => {
64- const { onResult, onError = ( e : Error ) => { } } = handler ?? { } ;
65- if ( ! onResult ) {
66- throw new Error ( 'onResult is required' ) ;
67- }
68-
69- const watchQuery = async ( abortSignal : AbortSignal ) => {
70- try {
71- const toSql = query . toSQL ( ) ;
72- const resolvedTables = await db . resolveTables ( toSql . sql , toSql . params , options ) ;
73-
74- // Fetch initial data
75- const result = await query . execute ( ) ;
76- onResult ( result ) ;
77-
78- db . onChangeWithCallback (
79- {
80- onChange : async ( ) => {
81- try {
82- const result = await query . execute ( ) ;
83- onResult ( result ) ;
84- } catch ( error : any ) {
85- onError ( error ) ;
86- }
87- } ,
88- onError
89- } ,
90- {
91- ...( options ?? { } ) ,
92- tables : resolvedTables ,
93- // Override the abort signal since we intercept it
94- signal : abortSignal
95- }
96- ) ;
97- } catch ( error : any ) {
98- onError ( error ) ;
99- }
100- } ;
101-
102- runOnSchemaChange ( watchQuery , db , options ) ;
103- } ;
66+ // const watch = <T>(
67+ // query: WatchQuery<T>,
68+ // handler?: CompilableQueryWatchHandler<T>,
69+ // options?: SQLWatchOptions
70+ // ): void => {
71+ // compilableQueryWatch(db, toCompilableQuery<T>(query), handler, options);
72+ // };
10473
10574 const baseDatabase = new BaseSQLiteDatabase ( 'async' , dialect , session , schema ) as PowerSyncSQLiteDatabase < TSchema > ;
10675 return Object . assign ( baseDatabase , {
107- watch : ( query : WatchQuery , handler ?: WatchHandler , options ?: SQLWatchOptions ) => watch ( query , handler , options )
76+ watch : < T > ( query : WatchQuery < T > , handler ?: CompilableQueryWatchHandler < T > , options ?: SQLWatchOptions ) => { }
77+ // watch(query, handler, options)
10878 } ) ;
10979}
0 commit comments