From 214dcddb6576d0d52c1801dee2dd46eadc958179 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:18:33 +0530 Subject: [PATCH] [mob] Prioritize fetch for already indexed files. --- mobile/lib/db/ml/filedata.dart | 6 ++++++ mobile/lib/services/filedata/filedata_service.dart | 2 +- mobile/lib/utils/ml_util.dart | 10 +++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/mobile/lib/db/ml/filedata.dart b/mobile/lib/db/ml/filedata.dart index 6e6afc9ef4..477aca8b40 100644 --- a/mobile/lib/db/ml/filedata.dart +++ b/mobile/lib/db/ml/filedata.dart @@ -25,4 +25,10 @@ extension FileDataTable on MLDataDB { inputs, ); } + + Future> getFileIDsWithFDData() async { + final db = await MLDataDB.instance.asyncDB; + final res = await db.execute('SELECT $fileIDColumn FROM $fileDataTable'); + return res.map((e) => e[fileIDColumn] as int).toSet(); + } } diff --git a/mobile/lib/services/filedata/filedata_service.dart b/mobile/lib/services/filedata/filedata_service.dart index 12c3d68e3a..c190a2b18b 100644 --- a/mobile/lib/services/filedata/filedata_service.dart +++ b/mobile/lib/services/filedata/filedata_service.dart @@ -115,7 +115,7 @@ class FileDataService { try { bool hasMoreData = false; do { - final lastTime = _prefs.getInt("fd.lastSyncTimex") ?? 0; + final lastTime = _prefs.getInt("fd.lastSyncTime") ?? 0; final res = await _dio.post( "/files/data/status-diff", data: { diff --git a/mobile/lib/utils/ml_util.dart b/mobile/lib/utils/ml_util.dart index 3818821a6b..cce482abc4 100644 --- a/mobile/lib/utils/ml_util.dart +++ b/mobile/lib/utils/ml_util.dart @@ -7,6 +7,7 @@ import "package:photos/core/configuration.dart"; import "package:photos/db/files_db.dart"; import "package:photos/db/ml/clip_db.dart"; import "package:photos/db/ml/db.dart"; +import "package:photos/db/ml/filedata.dart"; import "package:photos/extensions/list.dart"; import "package:photos/models/file/extensions/file_props.dart"; import "package:photos/models/file/file.dart"; @@ -87,6 +88,9 @@ Future> getFilesForMlIndexing() async { await MLDataDB.instance.clipIndexedFileWithVersion(); final Set queuedFiledIDs = {}; + final Set filesWithFDStatus = + await MLDataDB.instance.getFileIDsWithFDData(); + // Get all regular files and all hidden files final enteFiles = await SearchService.instance.getAllFiles(); final hiddenFiles = await SearchService.instance.getHiddenFiles(); @@ -149,10 +153,14 @@ Future> getFilesForMlIndexing() async { ...filesWithoutLocalID, ...hiddenFilesToIndex, ]; + final splitResult = sortedBylocalID.splitMatch( + (i) => filesWithFDStatus.contains(i.file.uploadedFileID!), + ); + _logger.info( "Getting list of files to index for ML took ${DateTime.now().difference(time).inMilliseconds} ms", ); - return sortedBylocalID; + return [...splitResult.matched, ...splitResult.unmatched]; } Stream> fetchEmbeddingsAndInstructions(