Skip to content

Instantly share code, notes, and snippets.

@rkistner
Created September 28, 2024 13:30
Show Gist options
  • Save rkistner/e1067e51ad340f9447c4e55bc7bc96e1 to your computer and use it in GitHub Desktop.
Save rkistner/e1067e51ad340f9447c4e55bc7bc96e1 to your computer and use it in GitHub Desktop.
import 'dart:isolate';
import 'package:powersync/powersync.dart';
import 'package:powersync/sqlite_async.dart';
const schema = Schema([
Table('customers', [Column.text('name'), Column.text('email')])
]);
late PowerSyncDatabase db;
// Setup connector to backend if you would like to sync data.
class BackendConnector extends PowerSyncBackendConnector {
PowerSyncDatabase db;
BackendConnector(this.db);
@override
// ignore: body_might_complete_normally_nullable
Future<PowerSyncCredentials?> fetchCredentials() async {
// implement fetchCredentials
}
@override
Future<void> uploadData(PowerSyncDatabase database) async {
// implement uploadData
}
}
openDatabase() async {
var path = 'powersync-demo.db';
// Setup the database.
db = PowerSyncDatabase(schema: schema, path: path);
await db.initialize();
// Run local statements.
await db.execute(
'INSERT INTO customers(id, name, email) VALUES(uuid(), ?, ?)',
['Fred', '[email protected]']);
// Connect to backend
// db.connect(connector: BackendConnector(db));
}
runInIsolate(IsolateConnectionFactory factory) async {
return await Isolate.run(() async {
var db = factory.open();
var results = await db.getAll('select * from customers');
return results;
});
}
main() async {
await openDatabase();
var results = await runInIsolate(db.isolateConnectionFactory());
print(results);
await db.close();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment