2022-09-26 16:08:56 +02:00
|
|
|
import 'package:sqflite/sqflite.dart';
|
|
|
|
|
2023-09-09 21:17:01 +02:00
|
|
|
import 'package:adguard_home_manager/config/home_top_items_default_order.dart';
|
|
|
|
|
2022-10-26 14:26:09 +02:00
|
|
|
Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
2022-09-26 16:08:56 +02:00
|
|
|
List<Map<String, Object?>>? servers;
|
2022-09-27 15:43:52 +02:00
|
|
|
List<Map<String, Object?>>? appConfig;
|
2022-09-26 16:08:56 +02:00
|
|
|
|
2023-05-21 14:48:27 +02:00
|
|
|
Future rebuildAppConfig(Database db) async {
|
|
|
|
await db.execute("DROP TABLE appConfig");
|
|
|
|
await db.execute("CREATE TABLE appConfig (theme NUMERIC, overrideSslCheck NUMERIC, hideZeroValues NUMERIC, useDynamicColor NUMERIC, staticColor NUMERIC, useThemeColorForStatus NUMERIC, showTimeLogs NUMERIC, showIpLogs NUMERIC, combinedChart NUMERIC, doNotRememberVersion TEXT)");
|
|
|
|
await db.execute("INSERT INTO appConfig (theme, overrideSslCheck, hideZeroValues, useDynamicColor, staticColor, useThemeColorForStatus, showTimeLogs, showIpLogs, combinedChart) VALUES (0, 0, 0, ${acceptsDynamicTheme == true ? 1 : 0}, 0, 0, 0, 0, 0)");
|
|
|
|
}
|
|
|
|
|
2022-09-30 02:24:49 +02:00
|
|
|
Future upgradeDbToV2(Database db) async {
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN overrideSslCheck NUMERIC");
|
|
|
|
await db.execute("UPDATE appConfig SET overrideSslCheck = 0");
|
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-10-04 15:43:16 +02:00
|
|
|
Future upgradeDbToV3(Database db) async {
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN hideZeroValues NUMERIC");
|
|
|
|
await db.execute("UPDATE appConfig SET hideZeroValues = 0");
|
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-10-16 23:59:56 +02:00
|
|
|
Future upgradeDbToV4(Database db) async {
|
|
|
|
await db.execute("ALTER TABLE servers ADD COLUMN runningOnHa INTEGER");
|
|
|
|
await db.execute("UPDATE servers SET runningOnHa = 0");
|
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM servers',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-10-27 22:57:59 +02:00
|
|
|
Future upgradeDbToV5(Database db) async {
|
2022-10-26 14:26:09 +02:00
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN useDynamicColor NUMERIC");
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN staticColor NUMERIC");
|
2022-10-26 15:22:50 +02:00
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN useThemeColorForStatus NUMERIC");
|
|
|
|
await db.execute("UPDATE appConfig SET useDynamicColor = ${acceptsDynamicTheme == true ? 1 : 0}, staticColor = 0, useThemeColorForStatus = 0");
|
2022-10-26 14:26:09 +02:00
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-10-27 22:57:59 +02:00
|
|
|
Future upgradeDbToV6(Database db) async {
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN showNameTimeLogs NUMERIC");
|
|
|
|
await db.execute("UPDATE appConfig SET showNameTimeLogs = 0");
|
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-10-29 19:16:05 +02:00
|
|
|
Future upgradeDbToV7(Database db) async {
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN doNotRememberVersion TEXT");
|
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-05-20 21:12:52 +02:00
|
|
|
Future upgradeDbToV8(Database db) async {
|
2023-05-21 14:48:27 +02:00
|
|
|
try {
|
|
|
|
final data = await db.rawQuery(
|
2023-05-20 21:12:52 +02:00
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
2023-05-21 14:48:27 +02:00
|
|
|
await rebuildAppConfig(db);
|
|
|
|
await db.update(
|
|
|
|
'appConfig',
|
|
|
|
{
|
|
|
|
'theme': data[0]['theme'],
|
|
|
|
'overrideSslCheck': data[0]['overrideSslCheck'],
|
|
|
|
'hideZeroValues': data[0]['hideZeroValues'],
|
|
|
|
'useDynamicColor': data[0]['useDynamicColor'],
|
|
|
|
'staticColor': data[0]['staticColor'],
|
|
|
|
'useThemeColorForStatus': data[0]['useThemeColorForStatus'],
|
|
|
|
'showTimeLogs': data[0]['showNameTimeLogs'],
|
|
|
|
'showIpLogs': data[0]['showIpLogs'],
|
|
|
|
'combinedChart': data[0]['combinedChart'],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
} catch (e) {
|
|
|
|
await rebuildAppConfig(db);
|
|
|
|
}
|
2023-05-20 21:12:52 +02:00
|
|
|
}
|
|
|
|
|
2023-09-09 21:17:01 +02:00
|
|
|
Future upgradeDbToV9(Database db) async {
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN hideServerAddress NUMERIC");
|
|
|
|
await db.execute("ALTER TABLE appConfig ADD COLUMN homeTopItemsOrder TEXT");
|
|
|
|
await db.execute("UPDATE appConfig SET hideServerAddress = 0, homeTopItemsOrder = '$homeTopItemsDefaultOrderString'");
|
|
|
|
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-09-26 16:08:56 +02:00
|
|
|
Database db = await openDatabase(
|
|
|
|
'adguard_home_manager.db',
|
2023-09-09 21:17:01 +02:00
|
|
|
version: 9,
|
2022-09-26 16:08:56 +02:00
|
|
|
onCreate: (Database db, int version) async {
|
2022-10-16 23:59:56 +02:00
|
|
|
await db.execute("CREATE TABLE servers (id TEXT PRIMARY KEY, name TEXT, connectionMethod TEXT, domain TEXT, path TEXT, port INTEGER, user TEXT, password TEXT, defaultServer INTEGER, authToken TEXT, runningOnHa INTEGER)");
|
2023-09-09 21:17:01 +02:00
|
|
|
await db.execute("CREATE TABLE appConfig (theme NUMERIC, overrideSslCheck NUMERIC, hideZeroValues NUMERIC, useDynamicColor NUMERIC, staticColor NUMERIC, useThemeColorForStatus NUMERIC, showTimeLogs NUMERIC, showIpLogs NUMERIC, combinedChart NUMERIC, doNotRememberVersion TEXT, hideServerAddress NUMERIC, homeTopItemsOrder TEXT)");
|
2023-10-05 09:15:19 +02:00
|
|
|
await db.execute("INSERT INTO appConfig (theme, overrideSslCheck, hideZeroValues, useDynamicColor, staticColor, useThemeColorForStatus, showTimeLogs, showIpLogs, combinedChart, hideServerAddress, homeTopItemsOrder) VALUES (0, 0, 0, ${acceptsDynamicTheme == true ? 1 : 0}, 0, 0, 0, 0, 0, 0, '$homeTopItemsDefaultOrderString')");
|
2022-09-26 16:08:56 +02:00
|
|
|
},
|
|
|
|
onUpgrade: (Database db, int oldVersion, int newVersion) async {
|
2022-09-30 02:24:49 +02:00
|
|
|
if (oldVersion == 1) {
|
|
|
|
await upgradeDbToV2(db);
|
2022-10-04 15:43:16 +02:00
|
|
|
await upgradeDbToV3(db);
|
2022-10-16 23:59:56 +02:00
|
|
|
await upgradeDbToV4(db);
|
2022-10-26 14:26:09 +02:00
|
|
|
await upgradeDbToV5(db);
|
2022-10-27 22:57:59 +02:00
|
|
|
await upgradeDbToV6(db);
|
2022-10-29 19:16:05 +02:00
|
|
|
await upgradeDbToV7(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
2022-10-04 15:43:16 +02:00
|
|
|
}
|
|
|
|
if (oldVersion == 2) {
|
|
|
|
await upgradeDbToV3(db);
|
2022-10-16 23:59:56 +02:00
|
|
|
await upgradeDbToV4(db);
|
2022-10-26 14:26:09 +02:00
|
|
|
await upgradeDbToV5(db);
|
2022-10-27 22:57:59 +02:00
|
|
|
await upgradeDbToV6(db);
|
2022-10-29 19:16:05 +02:00
|
|
|
await upgradeDbToV7(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
2022-10-16 23:59:56 +02:00
|
|
|
}
|
|
|
|
if (oldVersion == 3) {
|
|
|
|
await upgradeDbToV4(db);
|
2022-10-26 14:26:09 +02:00
|
|
|
await upgradeDbToV5(db);
|
2022-10-27 22:57:59 +02:00
|
|
|
await upgradeDbToV6(db);
|
2022-10-29 19:16:05 +02:00
|
|
|
await upgradeDbToV7(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
2022-10-26 14:26:09 +02:00
|
|
|
}
|
|
|
|
if (oldVersion == 4) {
|
|
|
|
await upgradeDbToV5(db);
|
2022-10-27 22:57:59 +02:00
|
|
|
await upgradeDbToV6(db);
|
2022-10-29 19:16:05 +02:00
|
|
|
await upgradeDbToV7(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
2022-10-27 22:57:59 +02:00
|
|
|
}
|
|
|
|
if (oldVersion == 5) {
|
|
|
|
await upgradeDbToV6(db);
|
2022-10-29 19:16:05 +02:00
|
|
|
await upgradeDbToV7(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
2022-10-29 19:16:05 +02:00
|
|
|
}
|
|
|
|
if (oldVersion == 6) {
|
|
|
|
await upgradeDbToV7(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
2023-05-20 21:12:52 +02:00
|
|
|
}
|
|
|
|
if (oldVersion == 7) {
|
|
|
|
await upgradeDbToV8(db);
|
2023-09-09 21:17:01 +02:00
|
|
|
await upgradeDbToV9(db);
|
|
|
|
}
|
|
|
|
if (oldVersion == 8) {
|
|
|
|
await upgradeDbToV9(db);
|
2022-09-30 02:24:49 +02:00
|
|
|
}
|
2022-09-26 16:08:56 +02:00
|
|
|
},
|
|
|
|
onOpen: (Database db) async {
|
|
|
|
await db.transaction((txn) async{
|
|
|
|
servers = await txn.rawQuery(
|
|
|
|
'SELECT * FROM servers',
|
|
|
|
);
|
|
|
|
});
|
2022-09-27 15:43:52 +02:00
|
|
|
await db.transaction((txn) async{
|
|
|
|
appConfig = await txn.rawQuery(
|
|
|
|
'SELECT * FROM appConfig',
|
|
|
|
);
|
|
|
|
});
|
2022-09-26 16:08:56 +02:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
return {
|
|
|
|
"servers": servers,
|
2022-09-27 15:43:52 +02:00
|
|
|
"appConfig": appConfig![0],
|
2022-09-26 16:08:56 +02:00
|
|
|
"dbInstance": db,
|
|
|
|
};
|
|
|
|
}
|