Browse Source

fix(neon): cache initialization

Signed-off-by: Nikolas Rimikis <leptopoda@users.noreply.github.com>
pull/866/head
Nikolas Rimikis 1 year ago
parent
commit
2a4c9ef605
No known key found for this signature in database
GPG Key ID: 85ED1DE9786A4FF2
  1. 23
      packages/neon/neon/lib/src/utils/request_manager.dart

23
packages/neon/neon/lib/src/utils/request_manager.dart

@ -28,8 +28,10 @@ class RequestManager {
static RequestManager get instance => _requestManager ??= RequestManager(); static RequestManager get instance => _requestManager ??= RequestManager();
Future<void> initCache() async { Future<void> initCache() async {
_cache = Cache(); final cache = Cache();
await _cache!.init(); await cache.init();
_cache = cache;
} }
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<bool> has(final String key) async => Future<bool> 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<String?> get(final String key) async => Future<String?> 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<void> set(final String key, final String value) async => _database!.rawQuery( Future<void> 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', 'INSERT INTO cache (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value',
[key, value], [key, value],
); );

Loading…
Cancel
Save