fix: add file key in table

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

View File

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

View File

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

View File

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