exec method

Future<List<ExerciseAndThresholdModel>> exec(
  1. {required ExerciseIntensityModel nextExerciseIntensity}
)

運動データとその評価閾値を取得する。

指定された運動強度に基づいて、ローカルデータベースから関連する運動データのリストを取得し、 そのリストを元に1セット分の運動データのリストを作成し、それぞれの運動データに対して 評価閾値を生成し、運動データとその閾値データを ExerciseAndThresholdModel にまとめます。

Parameters:

  • nextExerciseIntensity : 次の運動強度

Return: Future が返されます。このFutureは、運動データと評価閾値のリストが完了すると完了します。

使用するリポジトリ:

Implementation

Future<List<ExerciseAndThresholdModel>> exec({
  required ExerciseIntensityModel nextExerciseIntensity,
}) async {
  try {
    final exerciseModels =
        await _exerciseRepository.getListFromExerciseIntensity(
      exerciseIntensity: nextExerciseIntensity,
    );

    final exerciseSet = _exerciseSelectionService.createExerciseSet(
      exerciseModelList: exerciseModels,
    );

    final exerciseAndThresholdModels = exerciseSet.map(
      (exercise) async {
        final exerciseEvaluationModels =
            await _exerciseEvaluationRepository.getListFromExerciseId(
          exerciseId: exercise.exerciseId,
        );

        final evaluationThresholds =
            _createExerciseEvaluationThresholdService.exec(
          exerciseEvaluationModelList: exerciseEvaluationModels,
        );

        return ExerciseAndThresholdModel(
          exercise: exercise,
          threshold: evaluationThresholds,
        );
      },
    ).toList();

    return Future.wait(exerciseAndThresholdModels);
  } on RepositoryException catch (error, stackTrace) {
    throw _errorHandler.handleRepositoryError(error, stackTrace);
  } on ServiceException catch (_) {
    throw UsecaseException(
      UsecaseErrorType.missingExerciseDataError,
      UsecaseErrorType.missingExerciseDataError.message,
    );
  } catch (error, stackTrace) {
    throw _errorHandler.handleUnknownError(error, stackTrace);
  }
}