Files
trainhub-flutter/lib/data/repositories/exercise_repository_impl.dart
Kazimierz Ciołek 782986a632 Initial commit
2026-02-19 02:49:29 +01:00

54 lines
1.5 KiB
Dart

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<List<ExerciseEntity>> getAll() async {
final rows = await _dao.getAllExercises();
return rows.map(ExerciseMapper.toEntity).toList();
}
@override
Future<ExerciseEntity> 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<void> update(ExerciseEntity exercise) async {
await _dao.updateExercise(
exercise.id,
ExerciseMapper.toUpdateCompanion(exercise),
);
}
@override
Future<void> delete(String id) async {
await _dao.deleteExercise(id);
}
}