mirror of https://github.com/AMT-Cheif/drift.git
Determine schema version. (#1743)
Avoid an unnecessary write to the database when no migration is needed.
This commit is contained in:
parent
b25921a362
commit
79aedea60e
|
@ -42,4 +42,4 @@ class MyDatabase extends _$MyDatabase {
|
|||
},
|
||||
);
|
||||
}
|
||||
// #enddocregion
|
||||
// #enddocregion
|
||||
|
|
|
@ -334,7 +334,8 @@ class DelegatedDatabase extends _BaseExecutor {
|
|||
final openingDetails = OpeningDetails(oldVersion, currentVersion);
|
||||
await user.beforeOpen(_BeforeOpeningExecutor(this), openingDetails);
|
||||
|
||||
if (versionDelegate is DynamicVersionDelegate) {
|
||||
if (versionDelegate is DynamicVersionDelegate &&
|
||||
(oldVersion == null || oldVersion < currentVersion)) {
|
||||
// set version now, after migrations ran successfully
|
||||
await versionDelegate.setSchemaVersion(currentVersion);
|
||||
}
|
||||
|
|
|
@ -109,14 +109,20 @@ void main() {
|
|||
|
||||
test('when the database supports dynamic version', () async {
|
||||
final version = _MockDynamicVersionDelegate();
|
||||
when(userDb.schemaVersion).thenReturn(3);
|
||||
when(version.schemaVersion).thenAnswer((_) => Future.value(3));
|
||||
|
||||
when(delegate.versionDelegate).thenReturn(version);
|
||||
await db.ensureOpen(userDb);
|
||||
|
||||
verify(delegate.open(userDb));
|
||||
verifyNever(delegate.runCustom(any, any));
|
||||
verify(version.schemaVersion);
|
||||
// Running migrations from version 3 to 3
|
||||
verifyNever(version.setSchemaVersion(3));
|
||||
|
||||
when(version.schemaVersion).thenAnswer((_) => Future.value(2));
|
||||
await db.ensureOpen(userDb);
|
||||
// Running migrations from version 2 to 3
|
||||
verify(version.setSchemaVersion(3));
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue