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 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 executeTask(); }