Initial commit

This commit is contained in:
Kazimierz Ciołek
2026-02-19 02:49:29 +01:00
commit 782986a632
148 changed files with 29230 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
import 'dart:convert';
import 'package:drift/drift.dart';
import 'package:trainhub_flutter/data/database/app_database.dart';
import 'package:trainhub_flutter/domain/entities/training_plan.dart';
import 'package:trainhub_flutter/domain/entities/training_section.dart';
import 'package:trainhub_flutter/domain/entities/training_exercise.dart';
class TrainingPlanMapper {
TrainingPlanMapper._();
static TrainingPlanEntity toEntity(TrainingPlan row) {
final List<dynamic> sectionsJson =
row.sections != null && row.sections!.isNotEmpty
? jsonDecode(row.sections!) as List
: [];
return TrainingPlanEntity(
id: row.id,
name: row.name,
sections: sectionsJson
.map((s) => _mapSection(s as Map<String, dynamic>))
.toList(),
);
}
static TrainingSectionEntity _mapSection(Map<String, dynamic> json) {
final exercisesJson = json['exercises'] as List<dynamic>? ?? [];
return TrainingSectionEntity(
id: json['id'] as String? ?? '',
name: json['name'] as String? ?? '',
exercises: exercisesJson
.map((e) => _mapExercise(e as Map<String, dynamic>))
.toList(),
);
}
static TrainingExerciseEntity _mapExercise(Map<String, dynamic> json) {
return TrainingExerciseEntity(
instanceId: json['instanceId'] as String? ?? '',
exerciseId: json['exerciseId'] as String? ?? '',
name: json['name'] as String? ?? '',
sets: json['sets'] as int? ?? 3,
value: json['value'] as int? ?? 10,
isTime: json['isTime'] as bool? ?? false,
rest: json['rest'] as int? ?? 60,
);
}
static String sectionsToJson(List<TrainingSectionEntity> sections) {
return jsonEncode(sections.map((s) => _sectionToMap(s)).toList());
}
static Map<String, dynamic> _sectionToMap(TrainingSectionEntity section) {
return {
'id': section.id,
'name': section.name,
'exercises': section.exercises.map((e) => _exerciseToMap(e)).toList(),
};
}
static Map<String, dynamic> _exerciseToMap(TrainingExerciseEntity exercise) {
return {
'instanceId': exercise.instanceId,
'exerciseId': exercise.exerciseId,
'name': exercise.name,
'sets': exercise.sets,
'value': exercise.value,
'isTime': exercise.isTime,
'rest': exercise.rest,
};
}
static TrainingPlansCompanion toInsertCompanion(
String id, String name) {
return TrainingPlansCompanion.insert(
id: id,
name: name,
sections: const Value('[]'),
);
}
static TrainingPlansCompanion toUpdateCompanion(TrainingPlanEntity entity) {
return TrainingPlansCompanion(
name: Value(entity.name),
sections: Value(sectionsToJson(entity.sections)),
);
}
}