import 'package:drift/drift.dart'; import 'package:trainhub_flutter/core/utils/id_generator.dart'; import 'package:trainhub_flutter/data/database/daos/exercise_dao.dart'; import 'package:trainhub_flutter/data/mappers/exercise_mapper.dart'; import 'package:trainhub_flutter/domain/entities/exercise.dart'; import 'package:trainhub_flutter/domain/repositories/exercise_repository.dart'; import 'package:trainhub_flutter/data/database/app_database.dart'; class ExerciseRepositoryImpl implements ExerciseRepository { final ExerciseDao _dao; ExerciseRepositoryImpl(this._dao); @override Future> getAll() async { final rows = await _dao.getAllExercises(); return rows.map(ExerciseMapper.toEntity).toList(); } @override Future create({ required String name, String? instructions, String? tags, String? videoUrl, }) async { final String id = IdGenerator.generate(); await _dao.insertExercise( ExercisesCompanion.insert( id: id, name: name, instructions: Value(instructions), tags: Value(tags), videoUrl: Value(videoUrl), ), ); final row = await _dao.getExerciseById(id); return ExerciseMapper.toEntity(row); } @override Future update(ExerciseEntity exercise) async { await _dao.updateExercise( exercise.id, ExerciseMapper.toUpdateCompanion(exercise), ); } @override Future delete(String id) async { await _dao.deleteExercise(id); } }