base.dart 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import 'package:flutter/foundation.dart';
  2. import 'package:vital_local_database/index.dart';
  3. import 'package:vitalapp/database/db.dart';
  4. import 'package:vitalapp/database/db_patch/interface.dart';
  5. import 'package:fis_common/logger/logger.dart';
  6. abstract class BaseDatabasePatch implements IDatabasePatch {
  7. final IDatabase database;
  8. BaseDatabasePatch(this.database);
  9. @override
  10. int get updateVersion => targetVersion + 1;
  11. @override
  12. Future<int> perform(int version) async {
  13. final ver = updateVersion;
  14. final tag = "DatabasePatch$ver";
  15. logger.i("$tag perform, current version:$version.");
  16. if (targetVersion == version) {
  17. // 补丁匹配当前DB版本,执行更新
  18. try {
  19. logger.w(" execute tasks begin.");
  20. await executeTask();
  21. logger.w("$tag execute tasks finish.");
  22. } catch (e) {
  23. logger.e("$tag execute tasks error!", e);
  24. }
  25. return ver;
  26. } else {
  27. return version;
  28. }
  29. }
  30. /// 执行更新任务
  31. @protected
  32. Future<void> executeTask();
  33. }