use remoteDb

This commit is contained in:
Neeraj Gupta
2025-04-22 11:58:56 +05:30
parent c97a313edb
commit 7fc8649455
3 changed files with 15 additions and 28 deletions

View File

@@ -1509,26 +1509,6 @@ class FilesDB with SqlDbBase {
return result;
}
///Each collectionIDs in list aren't necessarily unique
Future<List<int>> getAllCollectionIDsOfFiles(
List<int> 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 = <int>[];
for (var result in results) {
collectionIDsOfFiles.add(result['collection_id'] as int);
}
return collectionIDsOfFiles;
}
List<EnteFile> convertToFilesForIsolate(Map args) {
final List<EnteFile> files = [];
for (final result in args["result"]) {

View File

@@ -16,4 +16,17 @@ extension CollectionFileRead on RemoteDB {
);
return rows.map((row) => row["collection_id"] as int).toSet();
}
Future<Map<int, int>> getCollectionIdToFileCount(List<int> 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<int, int> collectionIdToFileCount = {};
for (var row in rows) {
final collectionId = row["collection_id"] as int;
final count = row["count"] as int;
collectionIdToFileCount[collectionId] = count;
}
return collectionIdToFileCount;
}
}

View File

@@ -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<List<AlbumFilter>> _curateAlbumFilters(
List<EnteFile> files,
) async {
final albumFilters = <AlbumFilter>[];
final idToOccurrence = <int, int>{};
final uploadedIDs = <int>[];
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) {