Ajoute les entités du domaine (domain/entities.dart), les ports de repository (application/ports.dart), les use cases (application/use_cases.dart) et leur implémentation Drift (infrastructure/local/drift_repositories.dart). flutter analyze propre, tests unitaires verts, build APK debug validé. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
1.4 KiB
Dart
50 lines
1.4 KiB
Dart
import '../domain/domain.dart';
|
|
|
|
abstract interface class Clock {
|
|
DateTime now();
|
|
}
|
|
|
|
final class SystemClock implements Clock {
|
|
const SystemClock();
|
|
|
|
@override
|
|
DateTime now() => DateTime.now().toUtc();
|
|
}
|
|
|
|
abstract interface class IdGenerator {
|
|
String newId();
|
|
}
|
|
|
|
abstract interface class ExerciseRepository {
|
|
Future<Exercise?> findById(String id);
|
|
Future<List<Exercise>> listActive();
|
|
Future<void> save(Exercise exercise);
|
|
}
|
|
|
|
abstract interface class ProgramRepository {
|
|
Future<Program?> findById(String id);
|
|
Future<void> save(Program program);
|
|
Future<void> saveExercise(ProgramExercise exercise);
|
|
}
|
|
|
|
abstract interface class WorkoutTemplateRepository {
|
|
Future<WorkoutTemplate?> findById(String id);
|
|
Future<void> save(WorkoutTemplate template);
|
|
Future<void> saveProgram(WorkoutTemplateProgram program);
|
|
Future<void> saveOverride(WorkoutTemplateExerciseOverride override);
|
|
}
|
|
|
|
abstract interface class ActiveSessionRepository {
|
|
Future<ActiveWorkoutSession?> findById(String id);
|
|
Future<void> save(ActiveWorkoutSession session);
|
|
Future<void> saveSetResult(ActiveSetResult result);
|
|
Future<void> saveRestState(ActiveRestState restState);
|
|
Future<List<ActiveSetResult>> listSetResults(String sessionId);
|
|
Future<List<ActiveRestState>> listRestStates(String sessionId);
|
|
}
|
|
|
|
abstract interface class WorkoutHistoryRepository {
|
|
Future<void> save(WorkoutHistory history);
|
|
Future<void> saveSetResult(WorkoutHistorySetResult result);
|
|
}
|