exec method
運動データマスターを更新または挿入する。
サーバーから最新の運動データマスターを取得し、ローカルデータベースを更新または挿入します。 ローカルデータベースにバージョンデータがない場合は全件登録します。 バージョンが異なる場合は全件更新します。 バージョンが同じ場合は何もしません。
Return: Future が返されます。このFutureは、操作が完了すると完了します。
使用するリポジトリ:
- ExerciseDataMasterRepository : 運動データマスターの取得を管理するリポジトリ
- ExerciseDataVersionRepository : 運動データのバージョン管理を行うリポジトリ
- ExerciseEvaluationRepository : 運動評価データの管理を行うリポジトリ
- ExerciseRepository : 運動データの管理を行うリポジトリ
使用するAPI:
ExerciseApi.getExerciseDataMasterGet: 運動データマスターの取得を行うAPI
Implementation
Future<void> exec() async {
try {
/// APIから取得した運動データマスター
final exerciseDataMasterModel =
await _exerciseDataMasterRepository.getExerciseDataMasterList();
/// ローカルDBの運動データバージョン
final exerciseDataVersionModel =
await _exerciseDataVersionRepository.get();
// ローカルDBにバージョンデータがない場合は全件登録
if (exerciseDataVersionModel == null) {
await _insertLocalDatabase(exerciseDataMasterModel);
return;
}
/// APIから取得した運動データマスターのバージョン
final remoteMasterVersion =
exerciseDataMasterModel.versions.masterVersion;
/// ローカルDBの運動データマスターのバージョン
final localMasterVersion = exerciseDataVersionModel.masterVersion;
// バージョンが異なる場合は全件更新
if (remoteMasterVersion != localMasterVersion) {
await _updateLocalDatabase(exerciseDataMasterModel);
return;
}
} on RepositoryException catch (error, stackTrace) {
throw _errorHandler.handleRepositoryError(error, stackTrace);
} catch (e, stackTrace) {
throw _errorHandler.handleUnknownError(e, stackTrace);
}
}