[mob][photos] Migrate to sqlite_async(9)
This commit is contained in:
parent
1a360d3ee7
commit
dec7c45310
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue