rxdb
Version:
A local-first realtime NoSQL Database for JavaScript applications - https://rxdb.info/
48 lines (41 loc) • 1.37 kB
text/typescript
import type {
ReplicationOptions,
ReplicationPullOptions,
ReplicationPushOptions
} from '../../types';
import type { SupabaseClient } from '@supabase/supabase-js';
export type SupabasePullQueryBuilderParams = {
query: ReturnType<SupabaseClient['from']>['select'] extends (
...args: any[]
) => infer R
? R
: never;
lastPulledCheckpoint: SupabaseCheckpoint | undefined;
batchSize: number;
};
export type SupabasePullQueryBuilder<RxDocType> = (
params: SupabasePullQueryBuilderParams
) => SupabasePullQueryBuilderParams['query'] | void;
export type SyncOptionsSupabase<RxDocType> = Omit<
ReplicationOptions<RxDocType, SupabaseCheckpoint>,
'pull' | 'push'
> & {
client: SupabaseClient;
tableName: string;
/**
* Modified field, default "_modified"
*/
modifiedField?: '_modified' | string;
pull?: Omit<ReplicationPullOptions<RxDocType, SupabaseCheckpoint>, 'handler' | 'stream$'> & {
/**
* Allows modifying the PostgREST query before RxDB fetches remote changes.
* You can return a new builder instance or mutate the provided one.
*/
queryBuilder?: SupabasePullQueryBuilder<RxDocType>;
};
push?: Omit<ReplicationPushOptions<RxDocType>, 'handler'>;
};
export type SupabaseCheckpoint = {
id: string;
modified: string;
}