From 7fc8649455e8f6df7714f8a05f1cc211aa931b41 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Tue, 22 Apr 2025 11:58:56 +0530 Subject: [PATCH] use remoteDb --- mobile/lib/db/files_db.dart | 20 ------------------- .../lib/db/remote/read/collection_files.dart | 13 ++++++++++++ .../lib/utils/hierarchical_search_util.dart | 10 ++-------- 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/mobile/lib/db/files_db.dart b/mobile/lib/db/files_db.dart index 8565f144d5..fff050aabb 100644 --- a/mobile/lib/db/files_db.dart +++ b/mobile/lib/db/files_db.dart @@ -1509,26 +1509,6 @@ class FilesDB with SqlDbBase { return result; } - ///Each collectionIDs in list aren't necessarily unique - Future> getAllCollectionIDsOfFiles( - List uploadedFileIDs, - ) async { - final db = await instance.sqliteAsyncDB; - final inParam = uploadedFileIDs.join(','); - - final results = await db.getAll( - ''' - SELECT $columnCollectionID FROM $filesTable - WHERE $columnUploadedFileID IN ($inParam) AND $columnCollectionID != -1 - ''', - ); - final collectionIDsOfFiles = []; - for (var result in results) { - collectionIDsOfFiles.add(result['collection_id'] as int); - } - return collectionIDsOfFiles; - } - List convertToFilesForIsolate(Map args) { final List files = []; for (final result in args["result"]) { diff --git a/mobile/lib/db/remote/read/collection_files.dart b/mobile/lib/db/remote/read/collection_files.dart index de364b6859..8c53e24fb1 100644 --- a/mobile/lib/db/remote/read/collection_files.dart +++ b/mobile/lib/db/remote/read/collection_files.dart @@ -16,4 +16,17 @@ extension CollectionFileRead on RemoteDB { ); return rows.map((row) => row["collection_id"] as int).toSet(); } + + Future> getCollectionIdToFileCount(List file_ids) async { + final rows = await sqliteDB.getAll( + "SELECT collection_id, COUNT(*) as count FROM collection_files WHERE file_id IN (${file_ids.join(",")}) GROUP BY collection_id", + ); + final Map collectionIdToFileCount = {}; + for (var row in rows) { + final collectionId = row["collection_id"] as int; + final count = row["count"] as int; + collectionIdToFileCount[collectionId] = count; + } + return collectionIdToFileCount; + } } diff --git a/mobile/lib/utils/hierarchical_search_util.dart b/mobile/lib/utils/hierarchical_search_util.dart index dddf48ddbb..dbf25bb137 100644 --- a/mobile/lib/utils/hierarchical_search_util.dart +++ b/mobile/lib/utils/hierarchical_search_util.dart @@ -4,6 +4,7 @@ import "package:photos/core/configuration.dart"; import "package:photos/core/constants.dart"; import "package:photos/db/files_db.dart"; import "package:photos/db/ml/db.dart"; +import "package:photos/db/remote/read/collection_files.dart"; import "package:photos/generated/l10n.dart"; import "package:photos/models/file/extensions/file_props.dart"; import "package:photos/models/file/file.dart"; @@ -217,20 +218,13 @@ Future> _curateAlbumFilters( List files, ) async { final albumFilters = []; - final idToOccurrence = {}; final uploadedIDs = []; for (EnteFile file in files) { if (file.uploadedFileID != null && file.uploadedFileID != -1) { uploadedIDs.add(file.uploadedFileID!); } } - final collectionIDsOfFiles = - await FilesDB.instance.getAllCollectionIDsOfFiles(uploadedIDs); - - for (int collectionID in collectionIDsOfFiles) { - idToOccurrence[collectionID] = (idToOccurrence[collectionID] ?? 0) + 1; - } - + final idToOccurrence = await remoteDB.getCollectionIdToFileCount(uploadedIDs); for (int id in idToOccurrence.keys) { final collection = CollectionsService.instance.getCollectionByID(id); if (collection == null) {