health_datasource_wrapper.dart 1.5 KB
import 'package:doublefeel_flutter/core/result/app_result.dart';
import 'package:doublefeel_flutter/data/models/health/activity/activity_burn_statistics_data_v2.dart';
import 'package:doublefeel_flutter/data/models/health/hrv/hrv_statistics_data.dart';
import 'package:doublefeel_flutter/data/models/health/sleep/sleep_statistics_data.dart';

import 'health_datasource.dart';

/// Routes each report type to its current source of truth.
class HealthDataSourceWrapper implements HealthDataSource {
  const HealthDataSourceWrapper({
    required this.remoteDataSource,
    required this.localDataSource,
  });

  final HealthDataSource remoteDataSource;
  final HealthDataSource localDataSource;

  @override
  Future<AppResult<SleepStatisticsData>> getSleepStatistics(
    int dateRangeType,
    int startDate, {
    int? queryUserId,
  }) {
    return remoteDataSource.getSleepStatistics(
      dateRangeType,
      startDate,
      queryUserId: queryUserId,
    );
  }

  @override
  Future<AppResult<ActivityBurnStatisticsDataV2>> getActivityBurnStatistics(
    int dateRangeType,
    int startDate, {
    int? queryUserId,
  }) {
    return localDataSource.getActivityBurnStatistics(
      dateRangeType,
      startDate,
      queryUserId: queryUserId,
    );
  }

  @override
  Future<AppResult<HrvStatisticsDataV2>> getHrvStatistics(
    int dateRangeType,
    int startDate, {
    int? queryUserId,
  }) {
    return localDataSource.getHrvStatistics(
      dateRangeType,
      startDate,
      queryUserId: queryUserId,
    );
  }
}