feat: add local backup export import core
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -243,6 +243,16 @@ final class _FakeBootstrap implements AppDependencies {
|
||||
),
|
||||
exercisePerformanceReferenceUseCase = ExercisePerformanceReferenceUseCase(
|
||||
repository: _FakeExercisePerformanceReferenceRepository(),
|
||||
),
|
||||
dataExportUseCase = DataExportUseCase(
|
||||
repository: _FakeLocalDataBackupRepository(),
|
||||
mediaStore: _FakeLocalBackupMediaStore(),
|
||||
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
|
||||
),
|
||||
dataImportUseCase = DataImportUseCase(
|
||||
repository: _FakeLocalDataBackupRepository(),
|
||||
mediaStore: _FakeLocalBackupMediaStore(),
|
||||
clock: _FakeClock(DateTime.utc(2026, 7, 17, 12)),
|
||||
);
|
||||
|
||||
@override
|
||||
@ -283,6 +293,12 @@ final class _FakeBootstrap implements AppDependencies {
|
||||
|
||||
@override
|
||||
final ExercisePerformanceReferenceUseCase exercisePerformanceReferenceUseCase;
|
||||
|
||||
@override
|
||||
final DataExportUseCase dataExportUseCase;
|
||||
|
||||
@override
|
||||
final DataImportUseCase dataImportUseCase;
|
||||
}
|
||||
|
||||
String _sessionSnapshot() {
|
||||
@ -682,6 +698,62 @@ final class _FakeMediaStorage implements LocalMediaStorage {
|
||||
Future<Set<String>> listManagedLocalUris() async => const {};
|
||||
}
|
||||
|
||||
final class _FakeLocalDataBackupRepository
|
||||
implements LocalDataBackupRepository {
|
||||
@override
|
||||
Future<LocalBackupImportResult> applyImportSnapshot({
|
||||
required LocalDataExportSnapshot snapshot,
|
||||
required LocalBackupImportMode mode,
|
||||
required DateTime importedAt,
|
||||
}) async {
|
||||
return const LocalBackupImportResult(
|
||||
insertedCount: 0,
|
||||
updatedCount: 0,
|
||||
ignoredOlderCount: 0,
|
||||
deletedByReplaceCount: 0,
|
||||
missingMediaCount: 0,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> hasAnyUserData() async => false;
|
||||
|
||||
@override
|
||||
Future<bool> hasOpenActiveWorkoutSession() async => false;
|
||||
|
||||
@override
|
||||
Future<LocalDataExportSnapshot> readExportSnapshot(
|
||||
DateTime exportedAt,
|
||||
) async {
|
||||
return LocalDataExportSnapshot(
|
||||
exportedAt: exportedAt,
|
||||
appSchemaVersion: 1,
|
||||
originDeviceId: 'device-1',
|
||||
mediaAssets: const [],
|
||||
exercises: const [],
|
||||
programs: const [],
|
||||
workoutTemplates: const [],
|
||||
workoutHistories: const [],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
final class _FakeLocalBackupMediaStore implements LocalBackupMediaStore {
|
||||
@override
|
||||
Future<List<EmbeddedBackupMediaFile>> readEmbeddableFiles(
|
||||
List<LocalBackupResource> mediaAssets,
|
||||
) async {
|
||||
return const [];
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Map<String, RestoredMediaFile>> restoreEmbeddedFiles(
|
||||
List<EmbeddedBackupMediaFile> files,
|
||||
) async {
|
||||
return const {};
|
||||
}
|
||||
}
|
||||
|
||||
final class _FakeProgramRepository implements ProgramRepository {
|
||||
@override
|
||||
Future<Program?> findById(String id) async => null;
|
||||
|
||||
Reference in New Issue
Block a user