import 'dart:convert'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:wger/models/exercises/category.dart'; import 'package:wger/models/exercises/equipment.dart'; import 'package:wger/models/exercises/image.dart'; import 'package:wger/models/exercises/muscle.dart'; import 'package:wger/models/exercises/translation.dart'; import 'package:wger/models/exercises/video.dart'; part 'exercise_api.freezed.dart'; part 'exercise_api.g.dart'; /// Model for an exercise as returned from the exerciseinfo endpoint /// /// Basically this is just used as a convenience to create "real" exercise /// objects and nothing more @freezed sealed class ExerciseApiData with _$ExerciseApiData { factory ExerciseApiData({ required int id, required String uuid, // ignore: invalid_annotation_target @Default(null) @JsonKey(name: 'variations') int? variationId, // ignore: invalid_annotation_target @JsonKey(name: 'created') required DateTime created, // ignore: invalid_annotation_target @JsonKey(name: 'last_update') required DateTime lastUpdate, // ignore: invalid_annotation_target @JsonKey(name: 'last_update_global') required DateTime lastUpdateGlobal, required ExerciseCategory category, required List muscles, // ignore: invalid_annotation_target @JsonKey(name: 'muscles_secondary') required List musclesSecondary, // ignore: invalid_annotation_target required List equipment, // ignore: invalid_annotation_target @JsonKey(name: 'translations', defaultValue: []) required List translations, required List images, required List