Skip to content

Commit dca599f

Browse files
[Feature]: Improve client constructors (#211)
Co-authored-by: benitav <[email protected]>
1 parent cbc1a4b commit dca599f

File tree

39 files changed

+636
-284
lines changed

39 files changed

+636
-284
lines changed

.changeset/fuzzy-dots-shave.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@powersync/react-native': minor
3+
'@powersync/common': minor
4+
'@powersync/web': minor
5+
---
6+
7+
Improved constructor behavior of `PowerSyncDatabase` and logic for open factories. Deprecated `RNQSPowerSyncDatabaseOpenFactory` and `WASQLitePowerSyncDatabaseOpenFactory`.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ tsconfig.tsbuildinfo
66
.DS_STORE
77
.idea
88
.fleet
9+
# Useful if running repository in VSCode dev container
10+
.pnpm-store

demos/example-capacitor/src/components/providers/SystemProvider.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { PowerSyncContext } from '@powersync/react';
2-
import { WASQLitePowerSyncDatabaseOpenFactory } from '@powersync/web';
2+
import { PowerSyncDatabase } from '@powersync/web';
33
import { CircularProgress } from '@mui/material';
44
import Logger from 'js-logger';
55
import React, { Suspense } from 'react';
@@ -15,14 +15,14 @@ const isIOs = platform === 'ios';
1515
// Web worker implementation does not work on iOS
1616
const useWebWorker = !isIOs;
1717

18-
const powerSync = new WASQLitePowerSyncDatabaseOpenFactory({
19-
dbFilename: 'powersync2.db',
18+
const powerSync = new PowerSyncDatabase({
19+
database: { dbFilename: 'powersync2.db' },
2020
schema: AppSchema,
2121
flags: {
2222
enableMultiTabs: false,
2323
useWebWorker
2424
}
25-
}).getInstance();
25+
});
2626
const connector = new BackendConnector();
2727

2828
powerSync.connect(connector);

demos/example-electron/src/components/providers/SystemProvider.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { PowerSyncContext } from '@powersync/react';
2-
import { WASQLitePowerSyncDatabaseOpenFactory } from '@powersync/web';
2+
import { PowerSyncDatabase } from '@powersync/web';
33
import { CircularProgress } from '@mui/material';
44
import Logger from 'js-logger';
55
import React, { Suspense } from 'react';
@@ -9,13 +9,13 @@ import { BackendConnector } from '../../library/powersync/BackendConnector.js';
99
Logger.useDefaults();
1010
Logger.setLevel(Logger.DEBUG);
1111

12-
const powerSync = new WASQLitePowerSyncDatabaseOpenFactory({
13-
dbFilename: 'powersync2.db',
12+
const powerSync = new PowerSyncDatabase({
13+
database: { dbFilename: 'powersync2.db' },
1414
schema: AppSchema,
1515
flags: {
1616
disableSSRWarning: true
1717
}
18-
}).getInstance();
18+
});
1919
const connector = new BackendConnector();
2020

2121
powerSync.connect(connector);

demos/example-nextjs/src/components/providers/SystemProvider.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { AppSchema } from '@/library/powersync/AppSchema';
44
import { BackendConnector } from '@/library/powersync/BackendConnector';
55
import { PowerSyncContext } from '@powersync/react';
6-
import { WASQLitePowerSyncDatabaseOpenFactory } from '@powersync/web';
6+
import { PowerSyncDatabase } from '@powersync/web';
77
import { CircularProgress } from '@mui/material';
88
import Logger from 'js-logger';
99
import React, { Suspense } from 'react';
@@ -19,13 +19,13 @@ if (typeof self.Buffer == 'undefined') {
1919
Logger.useDefaults();
2020
Logger.setLevel(Logger.DEBUG);
2121

22-
const powerSync = new WASQLitePowerSyncDatabaseOpenFactory({
23-
dbFilename: 'powersync2.db',
22+
const powerSync = new PowerSyncDatabase({
23+
database: { dbFilename: 'powersync2.db' },
2424
schema: AppSchema,
2525
flags: {
2626
disableSSRWarning: true
2727
}
28-
}).getInstance();
28+
});
2929
const connector = new BackendConnector();
3030

3131
powerSync.connect(connector);

demos/example-vite/src/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Column, ColumnType, WASQLitePowerSyncDatabaseOpenFactory, Schema, Table } from '@powersync/web';
1+
import { Column, ColumnType, Schema, Table, PowerSyncDatabase } from '@powersync/web';
22
import Logger from 'js-logger';
33

44
Logger.useDefaults();
@@ -26,10 +26,10 @@ export const AppSchema = new Schema([
2626
let PowerSync;
2727

2828
const openDatabase = async () => {
29-
PowerSync = new WASQLitePowerSyncDatabaseOpenFactory({
29+
PowerSync = new PowerSyncDatabase({
3030
schema: AppSchema,
31-
dbFilename: 'test.sqlite'
32-
}).getInstance();
31+
database: { dbFilename: 'test.sqlite' }
32+
});
3333

3434
await PowerSync.init();
3535

demos/example-webpack/src/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Column, ColumnType, WASQLitePowerSyncDatabaseOpenFactory, Schema, Table } from '@powersync/web';
1+
import { Column, ColumnType, Schema, Table, PowerSyncDatabase } from '@powersync/web';
22
import Logger from 'js-logger';
33

44
Logger.useDefaults();
@@ -26,10 +26,10 @@ export const AppSchema = new Schema([
2626
let PowerSync;
2727

2828
const openDatabase = async () => {
29-
PowerSync = new WASQLitePowerSyncDatabaseOpenFactory({
29+
PowerSync = new PowerSyncDatabase({
3030
schema: AppSchema,
31-
dbFilename: 'test.sqlite'
32-
}).getInstance();
31+
database: { dbFilename: 'test.sqlite' }
32+
});
3333

3434
await PowerSync.init();
3535

demos/react-multi-client/src/library/TimedPowerSyncDatabase.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class TimedPowerSyncDatabase extends PowerSyncDatabase {
2929

3030
constructor(options: WebPowerSyncDatabaseOptions) {
3131
super(options);
32-
this.localKey = `${this.options.database.name}_connecting`;
32+
this.localKey = `${this.database.name}_connecting`;
3333
}
3434

3535
registerListener(listener: Partial<TimedPowerSyncListener>) {

demos/react-native-supabase-group-chat/src/providers/PowerSync.tsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import '@azure/core-asynciterator-polyfill';
22
import 'react-native-polyfill-globals/auto';
3-
import { PowerSyncContext, RNQSPowerSyncDatabaseOpenFactory } from '@powersync/react-native';
3+
import { PowerSyncContext, PowerSyncDatabase } from '@powersync/react-native';
44
import Logger from 'js-logger';
55
import { ReactNode, useMemo } from 'react';
66

@@ -10,19 +10,18 @@ import { schema } from '../lib/schema';
1010

1111
Logger.useDefaults();
1212

13-
const factory = new RNQSPowerSyncDatabaseOpenFactory({
14-
schema,
15-
dbFilename: 'test.sqlite'
16-
//location: 'optional location directory to DB file'
17-
});
18-
1913
const connector = new Connector();
2014

2115
export const PowerSyncProvider = ({ children }: { children: ReactNode }) => {
2216
const { isSyncEnabled } = useAuth();
2317

2418
const powerSync = useMemo(() => {
25-
const powerSync = factory.getInstance();
19+
const powerSync = new PowerSyncDatabase({
20+
schema,
21+
database: { dbFilename: 'test.sqlite' }
22+
//location: 'optional location directory to DB file'
23+
});
24+
2625
powerSync.init();
2726

2827
if (isSyncEnabled) {

demos/react-native-supabase-todolist/library/powersync/system.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import '@azure/core-asynciterator-polyfill';
22
import 'react-native-polyfill-globals/auto';
33
import React from 'react';
4-
import {
5-
AbstractPowerSyncDatabase,
6-
RNQSPowerSyncDatabaseOpenFactory,
7-
SyncStreamConnectionMethod
8-
} from '@powersync/react-native';
4+
import { PowerSyncDatabase, SyncStreamConnectionMethod } from '@powersync/react-native';
95
import { SupabaseStorageAdapter } from '../storage/SupabaseStorageAdapter';
106

117
import { AppSchema } from './AppSchema';
@@ -31,19 +27,19 @@ export class System {
3127
kvStorage: KVStorage;
3228
storage: SupabaseStorageAdapter;
3329
supabaseConnector: SupabaseConnector;
34-
powersync: AbstractPowerSyncDatabase;
30+
powersync: PowerSyncDatabase;
3531
attachmentQueue: PhotoAttachmentQueue | undefined = undefined;
3632

3733
constructor() {
3834
this.kvStorage = new KVStorage();
39-
const factory = new RNQSPowerSyncDatabaseOpenFactory({
40-
schema: AppSchema,
41-
dbFilename: 'sqlite.db'
42-
});
43-
4435
this.supabaseConnector = new SupabaseConnector(this);
4536
this.storage = this.supabaseConnector.storage;
46-
this.powersync = factory.getInstance();
37+
this.powersync = new PowerSyncDatabase({
38+
schema: AppSchema,
39+
database: {
40+
dbFilename: 'sqlite.db'
41+
}
42+
});
4743

4844
if (AppConfig.supabaseBucket) {
4945
this.attachmentQueue = new PhotoAttachmentQueue({

0 commit comments

Comments
 (0)