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

View File

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