feat(bibliothèque): migration Drift v16, seed basket et seeding au démarrage (ticket #80)
Ajoute la migration Drift v16 (enum ExerciseCategory, champ isExample sur exercises/programs/workout_templates, table local_seed_metadata), le contenu seed basket déterministe (21 exercices, 1 programme, 1 séance- modèle) dans lib/application/starter_content/, les ports StarterSeedStateRepository/StarterContentRepository et le use case SeedStarterContentUseCase branché dans AppBootstrap.create(). Validé GO par QA/Main : dart analyze propre, suite complète 167 tests (4 échecs préexistants sans rapport avec ce lot), 4 nouveaux tests seed tous verts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -15,6 +15,28 @@ abstract interface class IdGenerator {
|
||||
String newId();
|
||||
}
|
||||
|
||||
final class StarterContent {
|
||||
const StarterContent({
|
||||
required this.exercises,
|
||||
required this.program,
|
||||
required this.workoutTemplate,
|
||||
});
|
||||
|
||||
final List<Exercise> exercises;
|
||||
final Program program;
|
||||
final WorkoutTemplate workoutTemplate;
|
||||
}
|
||||
|
||||
abstract interface class StarterSeedStateRepository {
|
||||
Future<int> readAppliedStarterSeedVersion();
|
||||
Future<void> writeAppliedStarterSeedVersion(int version, DateTime appliedAt);
|
||||
}
|
||||
|
||||
abstract interface class StarterContentRepository {
|
||||
Future<bool> isLocalContentEmpty();
|
||||
Future<void> insertStarterContent(StarterContent content);
|
||||
}
|
||||
|
||||
enum RemoteAuthFailure {
|
||||
invalidCredentials,
|
||||
emailAlreadyUsed,
|
||||
|
||||
Reference in New Issue
Block a user