Skip to main content

sqlite_plus_changes 0.0.1-dev.2 copy "sqlite_plus_changes: ^0.0.1-dev.2" to clipboard
sqlite_plus_changes: ^0.0.1-dev.2 copied to clipboard

Opt-in transactional key change log and durable consumer checkpoints for sqlite_plus.

example/main.dart

import 'package:sqlite_plus/sqlite_plus.dart';
import 'package:sqlite_plus_changes/sqlite_plus_changes.dart';

Future<void> main() async {
  final db = await openInMemory();
  try {
    await db.execute('PRAGMA recursive_triggers=ON');
    await db.execute(
        'CREATE TABLE products(id INTEGER PRIMARY KEY,name TEXT,price INTEGER)');
    final changes = await SqlitePlusChanges.open(database: db);
    await changes.track(table: 'products', columns: ['name', 'price']);
    final search = await changes.consumer(name: 'search');
    await changes.transaction((tx) async {
      await tx.execute('INSERT INTO products VALUES(?,?,?)', [1, 'حليب', 10]);
      await tx.execute('UPDATE products SET price=? WHERE id=?', [12, 1]);
    });
    final batch = await search.read();
    for (final transaction in batch.transactions) {
      for (final event in transaction.events) {
        print(
            '${transaction.id}: ${event.kind.name} ${event.table} ${event.key} ${event.changedColumns}');
      }
    }
    await search.acknowledge(batch.checkpoint);
    print('checkpoint: ${batch.checkpoint.encode()}');
    await changes.pruneAcknowledged();
  } finally {
    await db.close();
  }
}
0
likes
160
points
174
downloads

Documentation

API reference

Publisher

verified publisherquds.cc

Weekly Downloads

Opt-in transactional key change log and durable consumer checkpoints for sqlite_plus.

Repository (GitHub)
View/report issues

Topics

#sqlite #database #changelog

License

MIT (license)

Dependencies

sqlite_plus

More

Packages that depend on sqlite_plus_changes