self_health_repository.dart 1.14 KB
import 'package:doublefeel_flutter/core/network/api/health_api.dart';
import 'package:doublefeel_flutter/core/result/app_result.dart';
import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart';
import 'package:intl/intl.dart';

abstract class SelfHealthRepository {
  Future<V2HealthData> getHealthData(DateTime date);

  Future<V2StressScore> getStressScore(DateTime date);
}

class SelfHealthRepositoryImpl implements SelfHealthRepository {
  const SelfHealthRepositoryImpl(this._healthApi);

  final HealthApi _healthApi;

  @override
  Future<V2HealthData> getHealthData(DateTime date) async {
    final intDate = int.parse(DateFormat('yyyyMMdd').format(date));
    return switch (await _healthApi.getV2HealthData(null, intDate)) {
      AppSuccess(:final data) => data,
      AppFailure(:final error) => throw error,
    };
  }

  @override
  Future<V2StressScore> getStressScore(DateTime date) async {
    final intDate = int.parse(DateFormat('yyyyMMdd').format(date));
    return switch (await _healthApi.getV2StressScore(null, intDate)) {
      AppSuccess(:final data) => data,
      AppFailure(:final error) => throw error,
    };
  }
}