This commit is contained in:
J. A. Messias 2024-11-14 16:50:09 -03:00
parent 4eca85a85d
commit 1f70e5db22
2 changed files with 17 additions and 11 deletions

View File

@ -15,8 +15,13 @@ class DatabaseStorage implements BaseStorage {
factory DatabaseStorage() => instance; factory DatabaseStorage() => instance;
DatabaseStorage._internal(); DatabaseStorage._internal();
static late final Database _database; static Database? _database;
static Database get database => _database; static Database get database {
if (_database == null) {
throw Exception('Database has not been initialized. Call init() first.');
}
return _database!;
}
static BaseStorage getInstanceByKey(String key) { static BaseStorage getInstanceByKey(String key) {
if (KeychainStorageKey.values.map((e) => e.value).toList().contains(key)) { if (KeychainStorageKey.values.map((e) => e.value).toList().contains(key)) {
@ -29,6 +34,7 @@ class DatabaseStorage implements BaseStorage {
} }
Future<void> init() async { Future<void> init() async {
if (_database != null && _database!.isOpen) return;
_database = await openDatabase( _database = await openDatabase(
join(await getDatabasesPath(), _dbName), join(await getDatabasesPath(), _dbName),
version: _dbVersion, version: _dbVersion,
@ -42,14 +48,14 @@ class DatabaseStorage implements BaseStorage {
log('Creating database...'); log('Creating database...');
await database.execute(KeychainDelegate.createTableQuery); await database.execute(KeychainDelegate.createTableQuery);
await database.execute(LicenseDelegate.createTableQuery); await database.execute(LicenseDelegate.createTableQuery);
await LicenseService.setupLicense(); await LicenseService.setupLicense(database);
} }
Future<void> _onUpgrade(Database database, int oldVersion, int newVersion) async { Future<void> _onUpgrade(Database database, int oldVersion, int newVersion) async {
log('Upgrading database from version $oldVersion to $newVersion...'); log('Upgrading database from version $oldVersion to $newVersion...');
if (oldVersion < 2) { if (oldVersion < 2) {
await database.execute(LicenseDelegate.createTableQuery); await database.execute(LicenseDelegate.createTableQuery);
await LicenseService.setupLicense(); await LicenseService.setupLicense(database);
} }
} }
@ -57,8 +63,8 @@ class DatabaseStorage implements BaseStorage {
@override @override
Future<void> clearAll() async { Future<void> clearAll() async {
await _database.delete(KeychainDelegate.tableKeychain); await _database?.delete(KeychainDelegate.tableKeychain);
await _database.delete(LicenseDelegate.tableLicense); await _database?.delete(LicenseDelegate.tableLicense);
return; return;
} }

View File

@ -16,10 +16,10 @@ class LicenseService {
factory LicenseService() => _instance; factory LicenseService() => _instance;
LicenseService._internal(); LicenseService._internal();
static Future<void> setupLicense() async { static Future<void> setupLicense(Database database) async {
log('All modules are visible'); log('All modules are visible');
for (var element in LicenseStorageKey.values.map((e) => e.value)) { for (var element in LicenseStorageKey.values.map((e) => e.value)) {
await DatabaseStorage.database.insert( await database.insert(
LicenseDelegate.tableLicense, LicenseDelegate.tableLicense,
{ {
'key': element, 'key': element,
@ -69,7 +69,7 @@ class LicenseService {
} }
if (responseBody == []) { if (responseBody == []) {
await setupLicense(); await setupLicense(DatabaseStorage.database);
return true; return true;
} }
@ -80,7 +80,7 @@ class LicenseService {
} }
return true; return true;
} catch (e) { } catch (e) {
await setupLicense(); await setupLicense(DatabaseStorage.database);
return true; return true;
} }
} }