diff --git a/packages/neon/neon/lib/src/utils/request_manager.dart b/packages/neon/neon/lib/src/utils/request_manager.dart index ec1b96ed..d67dd3dc 100644 --- a/packages/neon/neon/lib/src/utils/request_manager.dart +++ b/packages/neon/neon/lib/src/utils/request_manager.dart @@ -28,8 +28,10 @@ class RequestManager { static RequestManager get instance => _requestManager ??= RequestManager(); Future initCache() async { - _cache = Cache(); - await _cache!.init(); + final cache = Cache(); + await cache.init(); + + _cache = cache; } Cache? _cache; @@ -209,13 +211,24 @@ class Cache { ); } + Database get _requireDatabase { + final database = _database; + if (database == null) { + throw StateError( + 'Cache has not been set up yet. Please make sure Cache.init() has been called before and completed.', + ); + } + + return database; + } + Future has(final String key) async => - Sqflite.firstIntValue(await _database!.rawQuery('SELECT COUNT(*) FROM cache WHERE key = ?', [key])) == 1; + Sqflite.firstIntValue(await _requireDatabase.rawQuery('SELECT COUNT(*) FROM cache WHERE key = ?', [key])) == 1; Future get(final String key) async => - (await _database!.rawQuery('SELECT value FROM cache WHERE key = ?', [key]))[0]['value'] as String?; + (await _requireDatabase.rawQuery('SELECT value FROM cache WHERE key = ?', [key]))[0]['value'] as String?; - Future set(final String key, final String value) async => _database!.rawQuery( + Future set(final String key, final String value) async => _requireDatabase.rawQuery( 'INSERT INTO cache (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value', [key, value], );