kettlebell-tracker/lib/models/training_session.dart

83 lines
2 KiB
Dart

class TrainingSession {
final int? id;
final DateTime date;
final int sets;
final double weightLeft;
final double weightRight;
final int repsPerSet;
final int duration; // in seconds
final String program;
final int blockDay;
TrainingSession({
this.id,
required this.date,
required this.sets,
required this.weightLeft,
required this.weightRight,
required this.repsPerSet,
required this.duration,
required this.program,
required this.blockDay,
});
// Convert a TrainingSession into a Map. The keys must correspond to the names of the
// columns in the database.
Map<String, dynamic> toMap() {
return {
'id': id,
'date': date.toIso8601String(),
'sets': sets,
'weightLeft': weightLeft,
'weightRight': weightRight,
'repsPerSet': repsPerSet,
'duration': duration,
'program': program,
'blockDay': blockDay,
};
}
// Implement fromMap
factory TrainingSession.fromMap(Map<String, dynamic> map) {
return TrainingSession(
id: map['id'],
date: DateTime.parse(map['date']),
sets: map['sets'],
weightLeft: map['weightLeft'],
weightRight: map['weightRight'],
repsPerSet: map['repsPerSet'],
duration: map['duration'],
program: map['program'] ?? 'giant_1.0',
blockDay: map['blockDay'] ?? 1,
);
}
TrainingSession copyWith({
int? id,
DateTime? date,
int? sets,
double? weightLeft,
double? weightRight,
int? repsPerSet,
int? duration,
String? program,
int? blockDay,
}) {
return TrainingSession(
id: id ?? this.id,
date: date ?? this.date,
sets: sets ?? this.sets,
weightLeft: weightLeft ?? this.weightLeft,
weightRight: weightRight ?? this.weightRight,
repsPerSet: repsPerSet ?? this.repsPerSet,
duration: duration ?? this.duration,
program: program ?? this.program,
blockDay: blockDay ?? this.blockDay,
);
}
@override
String toString() {
return 'TrainingSession{id: $id, date: $date, sets: $sets}';
}
}