fix: add file key in table

This commit is contained in:
Prateek Sunal 2024-04-10 22:50:02 +05:30
parent 5e3805b7bb
commit 3a8b737968
3 changed files with 33 additions and 2 deletions

View file

@ -62,10 +62,14 @@ class UploadLocksDB {
final Directory documentsDirectory =
await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, _databaseName);
return await openDatabase(
path,
version: _databaseVersion,
onCreate: _onCreate,
onOpen: (db) async {
await _createTrackUploadsTable(db);
},
);
}
@ -79,10 +83,25 @@ class UploadLocksDB {
)
''',
);
await _createTrackUploadsTable(db);
}
Future _createTrackUploadsTable(Database db) async {
if ((await db.query(
'sqlite_master',
where: 'name = ?',
whereArgs: [
_trackUploadTable.table,
],
))
.isNotEmpty) {
return;
}
await db.execute(
'''
CREATE TABLE ${_trackUploadTable.table} (
${_trackUploadTable.columnID} TEXT PRIMARY KEY NOT NULL,
${_trackUploadTable.columnID} INTEGER PRIMARY KEY,
${_trackUploadTable.columnLocalID} TEXT NOT NULL,
${_trackUploadTable.columnFileHash} TEXT NOT NULL UNIQUE,
${_trackUploadTable.columnEncryptedFilePath} TEXT NOT NULL,
@ -170,7 +189,12 @@ class UploadLocksDB {
// For multipart download tracking
Future<bool> doesExists(String localId, String hash) async {
final db = await instance.database;
final rows = await db.query(_trackUploadTable.table);
final rows = await db.query(
_trackUploadTable.table,
where:
'${_trackUploadTable.columnLocalID} = ? AND ${_trackUploadTable.columnFileHash} = ?',
);
return rows.isNotEmpty;
}
@ -227,6 +251,7 @@ class UploadLocksDB {
MultipartUploadURLs urls,
String encryptedFilePath,
int fileSize,
String fileKey,
) async {
final db = await UploadLocksDB.instance.database;
final objectKey = urls.objectKey;
@ -240,6 +265,7 @@ class UploadLocksDB {
_trackUploadTable.columnCompleteUrl: urls.completeURL,
_trackUploadTable.columnEncryptedFilePath: encryptedFilePath,
_trackUploadTable.columnEncryptedFileSize: fileSize,
_trackUploadTable.columnFileKey: fileKey,
_trackUploadTable.columnCompletionStatus: _trackStatus.pending,
_trackUploadTable.columnPartSize: multipartPartSize,
},

View file

@ -522,6 +522,7 @@ class FileUploader {
fileUploadURLs,
encryptedFilePath,
await encryptedFile.length(),
fileAttributes.key!,
);
fileObjectKey = await putMultipartFile(fileUploadURLs, encryptedFile);
}

View file

@ -1,12 +1,14 @@
// ignore_for_file: implementation_imports
import "dart:io";
import "dart:typed_data";
import "package:dio/dio.dart";
import "package:logging/logging.dart";
import "package:photos/core/constants.dart";
import "package:photos/core/network/network.dart";
import "package:photos/db/upload_locks_db.dart";
import "package:photos/utils/crypto_util.dart";
import "package:photos/utils/xml_parser_util.dart";
final _enteDio = NetworkClient.instance.enteDio;
@ -79,6 +81,7 @@ Future<void> createTableEntry(
MultipartUploadURLs urls,
String encryptedFilePath,
int fileSize,
Uint8List fileKey,
) async {
await UploadLocksDB.instance.createTrackUploadsEntry(
localId,
@ -86,6 +89,7 @@ Future<void> createTableEntry(
urls,
encryptedFilePath,
fileSize,
CryptoUtil.bin2base64(fileKey),
);
}