import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/database_storage.dart'; import 'package:sqflite/sqflite.dart'; class KeychainDelegate implements BaseStorage { KeychainDelegate._(); static final KeychainDelegate instance = KeychainDelegate._(); static const String tableKeychain = 'keychain'; static String get createTableQuery => ''' CREATE TABLE $tableKeychain ( key TEXT UNIQUE, value TEXT, type TEXT, updateAt TEXT, resolvedAt TEXT, createdAt TEXT ); '''; @override Future init() async { await DatabaseStorage.instance.init(); } @override Future get(String key) async { var response = await DatabaseStorage.database.query(tableKeychain, where: 'key = ?', whereArgs: [key]); if (response.isEmpty) { return null; } return response.first['value'].toString(); } @override Future set(String key, String value) async { var date = DateTime.now().toIso8601String(); await DatabaseStorage.database.insert( tableKeychain, { 'key': key, 'value': value, 'type': 'local', 'updateAt': date, 'resolvedAt': date, 'createdAt': date, }, conflictAlgorithm: ConflictAlgorithm.replace); } @override Future delete(String key) async { await DatabaseStorage.database.delete(tableKeychain, where: 'key = ?', whereArgs: [key]); } @override Future clearAll() async { await DatabaseStorage.database.delete(tableKeychain); } }