From 708033c88cca68077848fb28a13706c974eb8ab5 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Thu, 12 Nov 2020 21:41:45 +0100 Subject: [PATCH] Fix verifier migrating to the latest version --- .../lib/src/services/schema/verifier_impl.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/moor_generator/lib/src/services/schema/verifier_impl.dart b/moor_generator/lib/src/services/schema/verifier_impl.dart index 2e061ae1..29aa25c5 100644 --- a/moor_generator/lib/src/services/schema/verifier_impl.dart +++ b/moor_generator/lib/src/services/schema/verifier_impl.dart @@ -16,13 +16,14 @@ class VerifierImplementation implements SchemaVerifier { @override Future migrateAndValidate(GeneratedDatabase db, int expectedVersion, {bool validateDropped = false}) async { - // Open the database to collect its schema. - await db.executor.ensureOpen(db); + // Open the database to collect its schema. Put a delegate in between + // claiming that the actual version is what we expect. + await db.executor.ensureOpen(_DelegatingUser(expectedVersion, db)); final actualSchema = await db.executor.collectSchemaInput(); // Open another connection to instantiate and extract the reference schema. final otherConnection = await startAt(expectedVersion); - await otherConnection.executor.ensureOpen(_SimpleUser(expectedVersion)); + await otherConnection.executor.ensureOpen(_DelegatingUser(expectedVersion)); final referenceSchema = await otherConnection.executor.collectSchemaInput(); await otherConnection.executor.close(); @@ -86,14 +87,15 @@ extension on QueryExecutor { } } -class _SimpleUser extends QueryExecutorUser { +class _DelegatingUser extends QueryExecutorUser { @override final int schemaVersion; + final QueryExecutorUser inner; - _SimpleUser(this.schemaVersion); + _DelegatingUser(this.schemaVersion, [this.inner]); @override Future beforeOpen(QueryExecutor executor, OpeningDetails details) { - return Future.value(); + return inner?.beforeOpen(executor, details) ?? Future.value(); } }