refactor sync service

This commit is contained in:
shenlong-tanwen 2025-04-12 15:34:13 +05:30
commit c4047fd9b2
23 changed files with 1527 additions and 737 deletions
mobile/lib/domain/interfaces

View file

@ -1,17 +1,21 @@
import 'package:immich_mobile/domain/interfaces/db.interface.dart';
import 'package:immich_mobile/domain/models/asset/asset.model.dart';
import 'package:immich_mobile/domain/models/local_album.model.dart';
abstract interface class ILocalAlbumRepository implements IDatabaseRepository {
Future<void> upsert(LocalAlbum localAlbum);
Future<void> insert(LocalAlbum localAlbum, Iterable<LocalAsset> assets);
Future<void> addAssets(String albumId, Iterable<LocalAsset> assets);
Future<List<LocalAlbum>> getAll({SortLocalAlbumsBy? sortBy});
/// Get all asset ids that are only in the album and not in other albums.
/// This is used to determine which assets are unique to the album.
/// This is useful in cases where the album is a smart album or a user-created album, especially in iOS
Future<List<String>> getAssetIdsOnlyInAlbum(String albumId);
Future<List<LocalAsset>> getAssetsForAlbum(String albumId);
Future<void> update(LocalAlbum localAlbum);
Future<void> delete(String albumId);
Future<void> removeAssets(String albumId, Iterable<String> assetIds);
}
enum SortLocalAlbumsBy { id }