import 'package:lunasea/core/models/configuration/external_module.dart'; import 'package:lunasea/core/models/configuration/indexer.dart'; import 'package:lunasea/core/models/configuration/profile.dart'; import 'package:lunasea/core/models/logs/log.dart'; import 'package:lunasea/system/logger.dart'; import 'package:lunasea/vendor.dart'; const BOX_ALERTS_KEY = 'alerts'; const BOX_EXTERNAL_MODULES_KEY = 'external_modules'; const BOX_INDEXERS_KEY = 'indexers'; const BOX_LOGS_KEY = 'logs'; const BOX_LUNASEA_KEY = 'lunasea'; const BOX_PROFILES_KEY = 'profiles'; enum LunaBox { alerts(BOX_ALERTS_KEY), externalModules(BOX_EXTERNAL_MODULES_KEY), indexers(BOX_INDEXERS_KEY), logs(BOX_LOGS_KEY), lunasea(BOX_LUNASEA_KEY), profiles(BOX_PROFILES_KEY); final String key; const LunaBox(this.key); Box get box => Hive.box(key); Future clear() async => box.keys.forEach((k) => box.delete(k)); Future size() async => box.length; Future open() async => await Hive.openBox(key); } extension LunaBoxExtension on LunaBox { List> export() { try { return box.keys .map>((k) => box.get(k)!.toMap()) .toList(); } catch (error, stack) { LunaLogger().error('Failed to export LunaBox', error, stack); return []; } } }