exec method

Future<String> exec(
  1. {required DateTime dateTime,
  2. required Uint8List photoData}
)

食事記録を登録する。

指定された日時と写真データを使用して食事記録をサーバーへ登録し、タスクIDを返します。

Parameters:

  • dateTime : 食事記録の日時
  • photoData : 食事記録の写真データ

Return: Future<String> が返されます。このFutureは、操作が完了するとタスクIDを含みます。

使用するリポジトリ:

  • MealRecordRepository : 食事記録のデータ操作を管理するリポジトリ 使用するAPI:
  • MealRecordApi.mealRecordPost : 食事記録の登録または更新を行うAPI 使用するサービス:
  • ConvertPhotoToMultipartFileService : 写真データをMultipartFile形式に変換するサービス

Implementation

Future<String> exec({
  required DateTime dateTime,
  required Uint8List photoData,
}) async {
  try {
    final utcDateTime = dateTime.toUtc();

    final image = await _convertPhotoToMultipartFile.exec(
      photoData: photoData,
    );

    final responce = await _mealRecordRepository.upsertRecord(
      dateTime: utcDateTime,
      image: image,
    );

    final taskId = responce.taskId;

    return taskId;
  } on RepositoryException catch (error, stackTrace) {
    throw _errorHandler.handleRepositoryError(error, stackTrace);
  } on ServiceException catch (error) {
    switch (error.type) {
      case ServiceErrorType.imageConvertError:
        throw UsecaseException(
          UsecaseErrorType.imageConvertError,
          UsecaseErrorType.imageConvertError.message,
        );
      default:
        throw UsecaseException(
          UsecaseErrorType.unknown,
          UsecaseErrorType.unknown.message,
        );
    }
  } on UsecaseException {
    rethrow;
  } catch (error, stackTrace) {
    throw _errorHandler.handleUnknownError(error, stackTrace);
  }
}