feat: add local backup export import core

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 13:23:30 +02:00
parent b256595e08
commit c3d5273869
6 changed files with 1380 additions and 4 deletions

View File

@ -15,6 +15,8 @@ abstract interface class AppDependencies {
WorkoutHistoryUseCases get workoutHistoryUseCases;
ProgressionStatsUseCase get progressionStatsUseCase;
ExercisePerformanceReferenceUseCase get exercisePerformanceReferenceUseCase;
DataExportUseCase get dataExportUseCase;
DataImportUseCase get dataImportUseCase;
SyncUseCases get syncUseCases;
ShareUseCases get shareUseCases;
}
@ -33,6 +35,8 @@ final class AppBootstrap implements AppDependencies {
required this.workoutHistoryUseCases,
required this.progressionStatsUseCase,
required this.exercisePerformanceReferenceUseCase,
required this.dataExportUseCase,
required this.dataImportUseCase,
required this.syncUseCases,
required this.shareUseCases,
required this.syncGateway,
@ -62,6 +66,10 @@ final class AppBootstrap implements AppDependencies {
@override
final ExercisePerformanceReferenceUseCase exercisePerformanceReferenceUseCase;
@override
final DataExportUseCase dataExportUseCase;
@override
final DataImportUseCase dataImportUseCase;
@override
final SyncUseCases syncUseCases;
@override
final ShareUseCases shareUseCases;
@ -90,6 +98,8 @@ final class AppBootstrap implements AppDependencies {
);
final performanceReferenceRepository =
DriftExercisePerformanceReferenceRepository(database);
final localDataBackupRepository = DriftLocalDataBackupRepository(database);
const localBackupMediaStore = PathProviderLocalMediaStorage();
final ids = LocalIdGenerator();
const clock = SystemClock();
const originDeviceId = 'local-device';
@ -179,6 +189,16 @@ final class AppBootstrap implements AppDependencies {
exercisePerformanceReferenceUseCase: ExercisePerformanceReferenceUseCase(
repository: performanceReferenceRepository,
),
dataExportUseCase: DataExportUseCase(
repository: localDataBackupRepository,
mediaStore: localBackupMediaStore,
clock: clock,
),
dataImportUseCase: DataImportUseCase(
repository: localDataBackupRepository,
mediaStore: localBackupMediaStore,
clock: clock,
),
syncUseCases: SyncUseCases(
tokenStore: const SecureStorageAuthTokenStore(),
remoteSyncApi: remoteSyncApi,