import 'package:immich_mobile/entities/album.entity.dart'; import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/entities/device_asset.entity.dart'; import 'package:immich_mobile/interfaces/database.interface.dart'; abstract interface class IAssetRepository implements IDatabaseRepository { Future<Asset?> getByRemoteId(String id); Future<Asset?> getByOwnerIdChecksum(int ownerId, String checksum); Future<List<Asset>> getAllByRemoteId( Iterable<String> ids, { AssetState? state, }); Future<List<Asset?>> getAllByOwnerIdChecksum( List<int> ids, List<String> checksums, ); Future<List<Asset>> getAll({ required int ownerId, AssetState? state, AssetSort? sortBy, int? limit, }); Future<List<Asset>> getAllLocal(); Future<List<Asset>> getByAlbum( Album album, { Iterable<int> notOwnedBy = const [], int? ownerId, AssetState? state, AssetSort? sortBy, }); Future<Asset> update(Asset asset); Future<List<Asset>> updateAll(List<Asset> assets); Future<void> deleteAllByRemoteId(List<String> ids, {AssetState? state}); Future<void> deleteById(List<int> ids); Future<List<Asset>> getMatches({ required List<Asset> assets, required int ownerId, AssetState? state, int limit = 100, }); Future<List<DeviceAsset?>> getDeviceAssetsById(List<Object> ids); Future<void> upsertDeviceAssets(List<DeviceAsset> deviceAssets); Future<void> upsertDuplicatedAssets(Iterable<String> duplicatedAssets); Future<List<String>> getAllDuplicatedAssetIds(); } enum AssetSort { checksum, ownerIdChecksum }