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 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 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}'; } }