diff --git a/mobile/lib/db/files_db.dart b/mobile/lib/db/files_db.dart index 4ff7f20e2..efd24b28d 100644 --- a/mobile/lib/db/files_db.dart +++ b/mobile/lib/db/files_db.dart @@ -539,7 +539,7 @@ class FilesDB { PrimitiveWrapper batchCounter, { required bool isGenIdNull, }) async { - parameterSets.add(_getParameterSetForFileV2(file)); + parameterSets.add(_getParameterSetForFile(file)); batchCounter.value++; final columnNames = isGenIdNull @@ -1149,11 +1149,14 @@ class FilesDB { Future update(EnteFile file) async { final db = await instance.sqliteAsyncDB; - final setClause = _getSetClauseForFile(file); + final parameterSet = _getParameterSetForFile(file)..add(file.generatedID); + final updateAssignments = _generateUpdateAssignmentsWithPlaceholders( + fileGenId: file.generatedID, + ); await db.execute( - 'UPDATE $filesTable SET ' - '$setClause WHERE $columnGeneratedID = ?', - [file.generatedID], + 'UPDATE $filesTable ' + 'SET $updateAssignments WHERE $columnGeneratedID = ?', + parameterSet, ); } @@ -1167,6 +1170,21 @@ class FilesDB { ); } + Future updateUploadedFileAcrossCollectionsNew(EnteFile file) async { + final db = await instance.sqliteAsyncDB; + final parameterSet = _getParameterSetForFile(file, omitCollectionId: true) + ..add(file.uploadedFileID); + final updateAssignments = _generateUpdateAssignmentsWithPlaceholders( + fileGenId: file.generatedID, + omitCollectionId: true, + ); + await db.execute( + 'UPDATE $filesTable' + 'SET $updateAssignments WHERE $columnUploadedFileID = ?', + parameterSet, + ); + } + Future updateLocalIDForUploaded(int uploadedID, String localID) async { final db = await instance.sqliteAsyncDB; await db.execute( @@ -1782,8 +1800,8 @@ class FilesDB { return convertToFiles(results); } - String _getSetClauseForFile(EnteFile file) { - final row = _getRowForFile(file); + String _getSetClauseForFileWithoutCollection(EnteFile file) { + final row = _getRowForFileWithoutCollection(file); final setClause = []; for (int i = 0; i < row.entries.length; i++) { final entry = row.entries.elementAt(i); @@ -1792,18 +1810,30 @@ class FilesDB { return setClause.join(', '); } - List _getParameterSetForFile(EnteFile file) { - final row = _getRowForFile(file); - final values = []; - for (int i = 0; i < row.entries.length; i++) { - values.add(row.entries.elementAt(i).value); + ///Returns "columnName1 = ?, columnName2 = ?, ..." + String _generateUpdateAssignmentsWithPlaceholders({ + required int? fileGenId, + bool omitCollectionId = false, + }) { + final setClauses = []; + + for (String columnName in _columnNames) { + if (columnName == columnGeneratedID && fileGenId == null) { + continue; + } + if (columnName == columnCollectionID && omitCollectionId) { + continue; + } + setClauses.add("$columnName = ?"); } - return values; + + return setClauses.join(","); } - List _getParameterSetForFileV2( + List _getParameterSetForFile( EnteFile file, { bool omitNullGenId = true, + bool omitCollectionId = false, }) { final values = []; double? latitude; @@ -1854,17 +1884,11 @@ class FilesDB { file.addedTime ?? DateTime.now().microsecondsSinceEpoch, ]); - return values; - } - - String _getSetClauseForFileWithoutCollection(EnteFile file) { - final row = _getRowForFileWithoutCollection(file); - final setClause = []; - for (int i = 0; i < row.entries.length; i++) { - final entry = row.entries.elementAt(i); - setClause.add('${entry.key} = ${entry.value}'); + if (omitCollectionId) { + values.removeAt(3); } - return setClause.join(', '); + + return values; } Map _getRowForFile(EnteFile file) {