Browse Source

harbour: Open cache database before starting app

pull/19/head
jld3103 2 years ago
parent
commit
ce9e4d55e7
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 4
      packages/harbour/lib/main.dart
  2. 29
      packages/harbour/lib/src/utils/request_manager.dart

4
packages/harbour/lib/main.dart

@ -31,7 +31,9 @@ Future main() async {
final sharedPreferences = await SharedPreferences.getInstance(); final sharedPreferences = await SharedPreferences.getInstance();
final requestManager = RequestManager(platform); final cache = Cache(platform);
await cache.init();
final requestManager = RequestManager(cache);
final globalOptions = GlobalOptions( final globalOptions = GlobalOptions(
Storage('global', sharedPreferences), Storage('global', sharedPreferences),

29
packages/harbour/lib/src/utils/request_manager.dart

@ -1,10 +1,9 @@
part of '../harbour.dart'; part of '../harbour.dart';
class RequestManager { class RequestManager {
RequestManager(final HarbourPlatform platform) { RequestManager(this._cache);
_cache = Cache(platform);
} final Cache _cache;
late final Cache _cache;
final bool _enablePrinting = false; final bool _enablePrinting = false;
@ -182,7 +181,7 @@ class Cache {
final HarbourPlatform _platform; final HarbourPlatform _platform;
Database? _database; Database? _database;
Future _ensureInitialized() async { Future init() async {
if (_database != null) { if (_database != null) {
return; return;
} }
@ -199,26 +198,16 @@ class Cache {
); );
} }
Future<bool> has(final String key) async { Future<bool> has(final String key) async =>
await _ensureInitialized(); Sqflite.firstIntValue(await _database!.rawQuery('SELECT COUNT(*) FROM cache WHERE key = ?', [key])) == 1;
return Sqflite.firstIntValue(await _database!.rawQuery('SELECT COUNT(*) FROM cache WHERE key = ?', [key])) == 1;
}
Future<String?> get(final String key) async {
await _ensureInitialized();
return (await _database!.rawQuery('SELECT value FROM cache WHERE key = ?', [key]))[0]['value'] as String?;
}
Future set(final String key, final String value) async { Future<String?> get(final String key) async =>
await _ensureInitialized(); (await _database!.rawQuery('SELECT value FROM cache WHERE key = ?', [key]))[0]['value'] as String?;
await _database!.rawQuery( Future set(final String key, final String value) async => _database!.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],
); );
}
} }
class ResultCached<T> implements Result<T> { class ResultCached<T> implements Result<T> {

Loading…
Cancel
Save