health_upload_models.dart 5.21 KB
import 'package:json_annotation/json_annotation.dart';

import '../json/converters.dart';

part 'health_upload_models.g.dart';

sealed class HealthDataUploadValue {
  const HealthDataUploadValue();
}

final class HealthDataUploadIntValue extends HealthDataUploadValue {
  const HealthDataUploadIntValue(this.value);
  final int value;
}

final class HealthDataUploadDoubleValue extends HealthDataUploadValue {
  const HealthDataUploadDoubleValue(this.value);
  final double value;
}

@JsonSerializable()
class HealthDataUploadItem {
  const HealthDataUploadItem({
    required this.dataType,
    required this.value,
    required this.time,
  });

  @JsonKey(name: 'data_type')
  final int dataType;
  @HealthDataUploadValueConverter()
  final HealthDataUploadValue value;
  final int time;

  factory HealthDataUploadItem.fromJson(Map<String, dynamic> json) =>
      _$HealthDataUploadItemFromJson(json);
  Map<String, dynamic> toJson() => _$HealthDataUploadItemToJson(this);
}

@JsonSerializable()
class HealthDataUploadItemList {
  const HealthDataUploadItemList({required this.itemList});

  @JsonKey(name: 'data_list')
  final List<HealthDataUploadItem> itemList;

  factory HealthDataUploadItemList.fromJson(Map<String, dynamic> json) =>
      _$HealthDataUploadItemListFromJson(json);
  Map<String, dynamic> toJson() => _$HealthDataUploadItemListToJson(this);
}

@JsonSerializable()
class SleepHealthDataUploadItem {
  const SleepHealthDataUploadItem({
    required this.dataType,
    required this.fromTime,
    required this.toTime,
  });

  @JsonKey(name: 'data_type')
  final int dataType;
  @JsonKey(name: 'from_time')
  final int fromTime;
  @JsonKey(name: 'to_time')
  final int toTime;

  factory SleepHealthDataUploadItem.fromJson(Map<String, dynamic> json) =>
      _$SleepHealthDataUploadItemFromJson(json);
  Map<String, dynamic> toJson() => _$SleepHealthDataUploadItemToJson(this);
}

@JsonSerializable()
class SleepStateHealthDataUploadItemList {
  const SleepStateHealthDataUploadItemList({required this.itemList});

  @JsonKey(name: 'data_list')
  final List<SleepHealthDataUploadItem> itemList;

  factory SleepStateHealthDataUploadItemList.fromJson(
    Map<String, dynamic> json,
  ) =>
      _$SleepStateHealthDataUploadItemListFromJson(json);
  Map<String, dynamic> toJson() =>
      _$SleepStateHealthDataUploadItemListToJson(this);
}

@JsonSerializable()
class HealthDataLatestUploadRecord {
  const HealthDataLatestUploadRecord({this.dataType, this.latestUploadTime});

  @JsonKey(name: 'data_type')
  final int? dataType;
  @JsonKey(name: 'latest_data_time')
  final int? latestUploadTime;

  factory HealthDataLatestUploadRecord.fromJson(Map<String, dynamic> json) =>
      _$HealthDataLatestUploadRecordFromJson(json);
  Map<String, dynamic> toJson() => _$HealthDataLatestUploadRecordToJson(this);
}

@JsonSerializable()
class HealthDataLatestUploadRecordList {
  const HealthDataLatestUploadRecordList({this.uploadInfoList});

  @JsonKey(name: 'latest_data_time_list')
  final List<HealthDataLatestUploadRecord>? uploadInfoList;

  factory HealthDataLatestUploadRecordList.fromJson(
    Map<String, dynamic> json,
  ) =>
      _$HealthDataLatestUploadRecordListFromJson(json);
  Map<String, dynamic> toJson() =>
      _$HealthDataLatestUploadRecordListToJson(this);
}

@JsonSerializable()
class HealthAuthRequest {
  const HealthAuthRequest({required this.code});

  final String code;

  factory HealthAuthRequest.fromJson(Map<String, dynamic> json) =>
      _$HealthAuthRequestFromJson(json);
  Map<String, dynamic> toJson() => _$HealthAuthRequestToJson(this);
}

@JsonSerializable()
class HealthAuthResponse {
  const HealthAuthResponse({this.scope});

  final String? scope;

  factory HealthAuthResponse.fromJson(Map<String, dynamic> json) =>
      _$HealthAuthResponseFromJson(json);
  Map<String, dynamic> toJson() => _$HealthAuthResponseToJson(this);
}

@JsonSerializable()
class PulseTypeRequest {
  const PulseTypeRequest({required this.pulseType});

  @JsonKey(name: 'pulse_type')
  final int pulseType;

  factory PulseTypeRequest.fromJson(Map<String, dynamic> json) =>
      _$PulseTypeRequestFromJson(json);
  Map<String, dynamic> toJson() => _$PulseTypeRequestToJson(this);
}

@JsonSerializable()
class PulseTypeResponse {
  const PulseTypeResponse({
    this.id,
    this.userId,
    this.pulseType,
    this.createTime,
  });

  final int? id;
  @JsonKey(name: 'user_id')
  final int? userId;
  @JsonKey(name: 'pulse_type')
  final int? pulseType;
  @JsonKey(name: 'create_time')
  final int? createTime;

  factory PulseTypeResponse.fromJson(Map<String, dynamic> json) =>
      _$PulseTypeResponseFromJson(json);
  Map<String, dynamic> toJson() => _$PulseTypeResponseToJson(this);
}

@JsonSerializable()
class LatestHrvData {
  const LatestHrvData({
    this.userHrv,
    this.userHrvBaseline,
    this.partnerHrv,
    this.partnerHrvBaseline,
  });

  @JsonKey(name: 'user_hrv')
  final double? userHrv;
  @JsonKey(name: 'user_hrv_baseline')
  final double? userHrvBaseline;
  @JsonKey(name: 'pair_user_hrv')
  final double? partnerHrv;
  @JsonKey(name: 'pair_hrv_baseline')
  final double? partnerHrvBaseline;

  factory LatestHrvData.fromJson(Map<String, dynamic> json) =>
      _$LatestHrvDataFromJson(json);
  Map<String, dynamic> toJson() => _$LatestHrvDataToJson(this);
}