Remove background mode from moor_ffi

This commit is contained in:
Simon Binder 2019-10-30 21:15:07 +01:00
parent f3221e09bc
commit 85426a7bf4
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
3 changed files with 26 additions and 35 deletions

View File

@ -1,3 +1,8 @@
## unreleased
- Remove the `background` flag from the moor apis provided by this package. Use the moor isolate api
instead.
## 0.0.1 ## 0.0.1
- Initial release. Contains standalone bindings and a moor implementation. - Initial release. Contains standalone bindings and a moor implementation.

View File

@ -7,28 +7,22 @@ class VmDatabase extends DelegatedDatabase {
/// Creates a database that will store its result in the [file], creating it /// Creates a database that will store its result in the [file], creating it
/// if it doesn't exist. /// if it doesn't exist.
/// factory VmDatabase(File file, {bool logStatements = false}) {
/// If [background] is enabled (defaults to false), the database will be return VmDatabase._(_VmDelegate(file), logStatements);
/// opened on a background isolate. This is much slower, but reduces work on
/// the UI thread.
factory VmDatabase(File file,
{bool logStatements = false, bool background = false}) {
return VmDatabase._(_VmDelegate(file, background), logStatements);
} }
/// Creates an in-memory database won't persist its changes on disk. /// Creates an in-memory database won't persist its changes on disk.
factory VmDatabase.memory({bool logStatements = false}) { factory VmDatabase.memory({bool logStatements = false}) {
return VmDatabase._(_VmDelegate(null, false), logStatements); return VmDatabase._(_VmDelegate(null), logStatements);
} }
} }
class _VmDelegate extends DatabaseDelegate { class _VmDelegate extends DatabaseDelegate {
BaseDatabase _db; Database _db;
final File file; final File file;
final bool background;
_VmDelegate(this.file, this.background); _VmDelegate(this.file);
@override @override
final TransactionDelegate transactionDelegate = const NoTransactionDelegate(); final TransactionDelegate transactionDelegate = const NoTransactionDelegate();
@ -42,16 +36,8 @@ class _VmDelegate extends DatabaseDelegate {
@override @override
Future<void> open([GeneratedDatabase db]) async { Future<void> open([GeneratedDatabase db]) async {
if (file != null) { if (file != null) {
if (background) { _db = Database.openFile(file);
_db = await IsolateDb.openFile(file);
} else {
_db = Database.openFile(file);
}
} else { } else {
assert(
!background,
"moor_ffi doesn't support in-memory databases on a background "
'isolate');
_db = Database.memory(); _db = Database.memory();
} }
versionDelegate = _VmVersionDelegate(_db); versionDelegate = _VmVersionDelegate(_db);
@ -61,10 +47,10 @@ class _VmDelegate extends DatabaseDelegate {
@override @override
Future<void> runBatched(List<BatchedStatement> statements) async { Future<void> runBatched(List<BatchedStatement> statements) async {
for (var stmt in statements) { for (var stmt in statements) {
final prepared = await _db.prepare(stmt.sql); final prepared = _db.prepare(stmt.sql);
for (var boundVars in stmt.variables) { for (var boundVars in stmt.variables) {
await prepared.execute(boundVars); prepared.execute(boundVars);
} }
prepared.close(); prepared.close();
@ -75,11 +61,11 @@ class _VmDelegate extends DatabaseDelegate {
Future _runWithArgs(String statement, List<dynamic> args) async { Future _runWithArgs(String statement, List<dynamic> args) async {
if (args.isEmpty) { if (args.isEmpty) {
await _db.execute(statement); _db.execute(statement);
} else { } else {
final stmt = await _db.prepare(statement); final stmt = _db.prepare(statement);
await stmt.execute(args); stmt.execute(args);
await stmt.close(); stmt.close();
} }
} }
@ -91,27 +77,27 @@ class _VmDelegate extends DatabaseDelegate {
@override @override
Future<int> runInsert(String statement, List args) async { Future<int> runInsert(String statement, List args) async {
await _runWithArgs(statement, args); await _runWithArgs(statement, args);
return await _db.getLastInsertId(); return _db.getLastInsertId();
} }
@override @override
Future<int> runUpdate(String statement, List args) async { Future<int> runUpdate(String statement, List args) async {
await _runWithArgs(statement, args); await _runWithArgs(statement, args);
return await _db.getUpdatedRows(); return _db.getUpdatedRows();
} }
@override @override
Future<QueryResult> runSelect(String statement, List args) async { Future<QueryResult> runSelect(String statement, List args) async {
final stmt = await _db.prepare(statement); final stmt = _db.prepare(statement);
final result = await stmt.select(args); final result = stmt.select(args);
await stmt.close(); stmt.close();
return Future.value(QueryResult(result.columnNames, result.rows)); return Future.value(QueryResult(result.columnNames, result.rows));
} }
} }
class _VmVersionDelegate extends DynamicVersionDelegate { class _VmVersionDelegate extends DynamicVersionDelegate {
final BaseDatabase database; final Database database;
_VmVersionDelegate(this.database); _VmVersionDelegate(this.database);
@ -119,8 +105,8 @@ class _VmVersionDelegate extends DynamicVersionDelegate {
Future<int> get schemaVersion => Future.value(database.userVersion()); Future<int> get schemaVersion => Future.value(database.userVersion());
@override @override
Future<void> setSchemaVersion(int version) async { Future<void> setSchemaVersion(int version) {
await database.setUserVersion(version); database.setUserVersion(version);
return Future.value(); return Future.value();
} }
} }

View File

@ -1,6 +1,6 @@
name: moor_ffi name: moor_ffi
description: "Provides experimental sqlite bindings using dart:ffi, including a moor executor" description: "Provides experimental sqlite bindings using dart:ffi, including a moor executor"
version: 0.0.1 version: 0.0.2
author: Simon Binder <oss@simonbinder.eu> author: Simon Binder <oss@simonbinder.eu>
homepage: https://github.com/simolus3/moor/tree/develop/moor_ffi homepage: https://github.com/simolus3/moor/tree/develop/moor_ffi
issue_tracker: https://github.com/simolus3/moor/issues issue_tracker: https://github.com/simolus3/moor/issues