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. 35
      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 requestManager = RequestManager(platform);
final cache = Cache(platform);
await cache.init();
final requestManager = RequestManager(cache);
final globalOptions = GlobalOptions(
Storage('global', sharedPreferences),

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

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

Loading…
Cancel
Save