Merge pull request #514 from ente-io/migrate-db-files

Migrate db files
This commit is contained in:
Ashil 2022-09-21 16:43:44 +05:30 committed by GitHub
commit 8635f01edb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 44 deletions

View file

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:convert';
import 'dart:io';
@ -54,15 +52,16 @@ class CollectionsDB {
static final CollectionsDB instance = CollectionsDB._privateConstructor();
static Future<Database> _dbFuture;
static Future<Database>? _dbFuture;
Future<Database> get database async {
_dbFuture ??= _initDatabase();
return _dbFuture;
return _dbFuture!;
}
Future<Database> _initDatabase() async {
final Directory documentsDirectory = await getApplicationDocumentsDirectory();
final Directory documentsDirectory =
await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, _databaseName);
return await openDatabaseWithMigration(path, dbConfig);
}
@ -180,20 +179,6 @@ class CollectionsDB {
return collections;
}
Future<int> getLastCollectionUpdationTime() async {
final db = await instance.database;
final rows = await db.query(
table,
orderBy: '$columnUpdationTime DESC',
limit: 1,
);
if (rows.isNotEmpty) {
return int.parse(rows[0][columnUpdationTime]);
} else {
return null;
}
}
Future<int> deleteCollection(int collectionID) async {
final db = await instance.database;
return db.delete(
@ -206,7 +191,7 @@ class CollectionsDB {
Map<String, dynamic> _getRowForCollection(Collection collection) {
final row = <String, dynamic>{};
row[columnID] = collection.id;
row[columnOwner] = collection.owner.toJson();
row[columnOwner] = collection.owner!.toJson();
row[columnEncryptedKey] = collection.encryptedKey;
row[columnKeyDecryptionNonce] = collection.keyDecryptionNonce;
row[columnName] = collection.name;
@ -217,16 +202,16 @@ class CollectionsDB {
row[columnPathDecryptionNonce] = collection.attributes.pathDecryptionNonce;
row[columnVersion] = collection.attributes.version;
row[columnSharees] =
json.encode(collection.sharees?.map((x) => x?.toMap())?.toList());
json.encode(collection.sharees?.map((x) => x?.toMap()).toList());
row[columnPublicURLs] =
json.encode(collection.publicURLs?.map((x) => x?.toMap())?.toList());
json.encode(collection.publicURLs?.map((x) => x?.toMap()).toList());
row[columnUpdationTime] = collection.updationTime;
if (collection.isDeleted ?? false) {
if (collection.isDeleted) {
row[columnIsDeleted] = _sqlBoolTrue;
} else {
row[columnIsDeleted] = _sqlBoolFalse;
}
row[columnMMdVersion] = collection.mMdVersion ?? 0;
row[columnMMdVersion] = collection.mMdVersion;
row[columnMMdEncodedJson] = collection.mMdEncodedJson ?? '{}';
return row;
}

View file

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:io';
import 'package:flutter/foundation.dart';
@ -56,12 +54,12 @@ class FileUpdationDB {
static final FileUpdationDB instance = FileUpdationDB._privateConstructor();
// only have a single app-wide reference to the database
static Future<Database> _dbFuture;
static Future<Database>? _dbFuture;
Future<Database> get database async {
// lazily instantiate the db the first time it is accessed
_dbFuture ??= _initDatabase();
return _dbFuture;
return _dbFuture!;
}
// this opens the database (and creates it if it doesn't exist)
@ -129,7 +127,7 @@ class FileUpdationDB {
);
}
Future<List<String>> getLocalIDsForPotentialReUpload(
Future<List<String?>> getLocalIDsForPotentialReUpload(
int limit,
String reason,
) async {
@ -140,14 +138,14 @@ class FileUpdationDB {
limit: limit,
where: whereClause,
);
final result = <String>[];
final result = <String?>[];
for (final row in rows) {
result.add(row[columnLocalID]);
result.add(row[columnLocalID] as String?);
}
return result;
}
Map<String, dynamic> _getRowForReUploadTable(String localID, String reason) {
Map<String, dynamic> _getRowForReUploadTable(String? localID, String reason) {
assert(localID != null);
final row = <String, dynamic>{};
row[columnLocalID] = localID;

View file

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:async';
import 'dart:io';
@ -20,15 +18,16 @@ class PublicKeysDB {
PublicKeysDB._privateConstructor();
static final PublicKeysDB instance = PublicKeysDB._privateConstructor();
static Future<Database> _dbFuture;
static Future<Database>? _dbFuture;
Future<Database> get database async {
_dbFuture ??= _initDatabase();
return _dbFuture;
return _dbFuture!;
}
Future<Database> _initDatabase() async {
final Directory documentsDirectory = await getApplicationDocumentsDirectory();
final Directory documentsDirectory =
await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, _databaseName);
return await openDatabase(
path,

View file

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:async';
import 'dart:io';
@ -19,14 +17,15 @@ class UploadLocksDB {
UploadLocksDB._privateConstructor();
static final UploadLocksDB instance = UploadLocksDB._privateConstructor();
static Future<Database> _dbFuture;
static Future<Database>? _dbFuture;
Future<Database> get database async {
_dbFuture ??= _initDatabase();
return _dbFuture;
return _dbFuture!;
}
Future<Database> _initDatabase() async {
final Directory documentsDirectory = await getApplicationDocumentsDirectory();
final Directory documentsDirectory =
await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, _databaseName);
return await openDatabase(
path,

View file

@ -12,7 +12,7 @@ class Collection {
final String encryptedName;
final String nameDecryptionNonce;
final CollectionType type;
final CollectionAttributes? attributes;
final CollectionAttributes attributes;
final List<User?>? sharees;
final List<PublicURL?>? publicURLs;
final int updationTime;
@ -114,7 +114,7 @@ class Collection {
'encryptedName': encryptedName,
'nameDecryptionNonce': nameDecryptionNonce,
'type': typeToString(type),
'attributes': attributes?.toMap(),
'attributes': attributes.toMap(),
'sharees': sharees?.map((x) => x?.toMap()).toList(),
'publicURLs': publicURLs?.map((x) => x?.toMap()).toList(),
'updationTime': updationTime,