Initial commit
This commit is contained in:
53
lib/data/repositories/exercise_repository_impl.dart
Normal file
53
lib/data/repositories/exercise_repository_impl.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user