1234567891011121314151617181920212223242526272829303132333435363738 |
- import 'package:flutter/foundation.dart';
- import 'package:vital_local_database/index.dart';
- import 'package:vitalapp/database/db.dart';
- import 'package:vitalapp/database/db_patch/interface.dart';
- import 'package:fis_common/logger/logger.dart';
- abstract class BaseDatabasePatch implements IDatabasePatch {
- final IDatabase database;
- BaseDatabasePatch(this.database);
- @override
- int get updateVersion => targetVersion + 1;
- @override
- Future<int> perform(int version) async {
- final ver = updateVersion;
- final tag = "DatabasePatch$ver";
- logger.i("$tag perform, current version:$version.");
- if (targetVersion == version) {
- // 补丁匹配当前DB版本,执行更新
- try {
- logger.w(" execute tasks begin.");
- await executeTask();
- logger.w("$tag execute tasks finish.");
- } catch (e) {
- logger.e("$tag execute tasks error!", e);
- }
- return ver;
- } else {
- return version;
- }
- }
- /// 执行更新任务
- @protected
- Future<void> executeTask();
- }
|