Browse Source

[mob][photos] Migrate to sqlite_async(9)

ashilkn 1 year ago
parent
commit
dec7c45310
1 changed files with 17 additions and 70 deletions
  1. 17 70
      mobile/lib/db/files_db.dart

+ 17 - 70
mobile/lib/db/files_db.dart

@@ -606,13 +606,11 @@ class FilesDB {
   Future<(Set<int>, Map<String, int>)> getUploadAndHash(
     int collectionID,
   ) async {
-    final db = await instance.database;
-    final results = await db.query(
-      filesTable,
-      columns: [columnUploadedFileID, columnHash],
-      where:
-          '$columnCollectionID = ? AND ($columnUploadedFileID IS NOT NULL AND $columnUploadedFileID IS NOT -1)',
-      whereArgs: [
+    final db = await instance.sqliteAsyncDB;
+    final results = await db.getAll(
+      'SELECT $columnUploadedFileID, $columnHash FROM $filesTable'
+      ' WHERE $columnCollectionID = ? AND ($columnUploadedFileID IS NOT NULL AND $columnUploadedFileID IS NOT -1)',
+      [
         collectionID,
       ],
     );
@@ -1265,18 +1263,22 @@ class FilesDB {
     );
   }
 
-  /// Uses int in return value.
   Future<int> deleteFilesFromCollection(
     int collectionID,
     List<int> uploadedFileIDs,
   ) async {
-    final db = await instance.database;
-    return db.delete(
-      filesTable,
-      where:
-          '$columnCollectionID = ? AND $columnUploadedFileID IN (${uploadedFileIDs.join(', ')})',
-      whereArgs: [collectionID],
-    );
+    final db = await instance.sqliteAsyncDB;
+    return db.writeTransaction((tx) async {
+      await tx.execute(
+        '''
+      DELETE FROM $filesTable
+      WHERE $columnCollectionID = ? AND $columnUploadedFileID IN (${uploadedFileIDs.join(', ')});
+    ''',
+        [collectionID],
+      );
+      final res = await tx.get('SELECT changes()');
+      return res['changes()'] as int;
+    });
   }
 
   Future<int> collectionFileCount(int collectionID) async {
@@ -1911,61 +1913,6 @@ class FilesDB {
     );
   }
 
-  Map<String, dynamic> _getRowForFile(EnteFile file) {
-    final row = <String, dynamic>{};
-    if (file.generatedID != null) {
-      row[columnGeneratedID] = file.generatedID;
-    }
-    row[columnLocalID] = file.localID;
-    row[columnUploadedFileID] = file.uploadedFileID ?? -1;
-    row[columnOwnerID] = file.ownerID;
-    row[columnCollectionID] = file.collectionID ?? -1;
-    row[columnTitle] = file.title;
-    row[columnDeviceFolder] = file.deviceFolder;
-    // if (file.location == null ||
-    //     (file.location!.latitude == null && file.location!.longitude == null)) {
-    //   file.location = Location.randomLocation();
-    // }
-    if (file.location != null) {
-      row[columnLatitude] = file.location!.latitude;
-      row[columnLongitude] = file.location!.longitude;
-    }
-    row[columnFileType] = getInt(file.fileType);
-    row[columnCreationTime] = file.creationTime;
-    row[columnModificationTime] = file.modificationTime;
-    row[columnUpdationTime] = file.updationTime;
-    row[columnAddedTime] =
-        file.addedTime ?? DateTime.now().microsecondsSinceEpoch;
-    row[columnEncryptedKey] = file.encryptedKey;
-    row[columnKeyDecryptionNonce] = file.keyDecryptionNonce;
-    row[columnFileDecryptionHeader] = file.fileDecryptionHeader;
-    row[columnThumbnailDecryptionHeader] = file.thumbnailDecryptionHeader;
-    row[columnMetadataDecryptionHeader] = file.metadataDecryptionHeader;
-    row[columnFileSubType] = file.fileSubType ?? -1;
-    row[columnDuration] = file.duration ?? 0;
-    row[columnExif] = file.exif;
-    row[columnHash] = file.hash;
-    row[columnMetadataVersion] = file.metadataVersion;
-    row[columnFileSize] = file.fileSize;
-    row[columnMMdVersion] = file.mMdVersion;
-    row[columnMMdEncodedJson] = file.mMdEncodedJson ?? '{}';
-    row[columnMMdVisibility] = file.magicMetadata.visibility;
-    row[columnPubMMdVersion] = file.pubMmdVersion;
-    row[columnPubMMdEncodedJson] = file.pubMmdEncodedJson ?? '{}';
-    // override existing fields to avoid re-writing all queries and logic
-    if (file.pubMagicMetadata != null) {
-      if (file.pubMagicMetadata!.editedTime != null) {
-        row[columnCreationTime] = file.pubMagicMetadata!.editedTime;
-      }
-      if (file.pubMagicMetadata!.lat != null &&
-          file.pubMagicMetadata!.long != null) {
-        row[columnLatitude] = file.pubMagicMetadata!.lat;
-        row[columnLongitude] = file.pubMagicMetadata!.long;
-      }
-    }
-    return row;
-  }
-
   EnteFile _getFileFromRow(Map<String, dynamic> row) {
     final file = EnteFile();
     file.generatedID = row[columnGeneratedID];