65 lines
1.6 KiB
Dart
65 lines
1.6 KiB
Dart
import 'dart:convert';
|
|
import 'dart:developer';
|
|
import 'package:hub/shared/helpers/database_storage.dart';
|
|
import 'package:sqflite/sqflite.dart';
|
|
import 'package:hub/shared/helpers/base_storage.dart';
|
|
|
|
class SQLiteStorage implements BaseStorage {
|
|
SQLiteStorage._();
|
|
|
|
static final SQLiteStorage instance = SQLiteStorage._();
|
|
|
|
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<void> init() async {
|
|
await DatabaseStorage.instance.init();
|
|
}
|
|
|
|
@override
|
|
Future<String?> 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<void> 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<void> delete(String key) async {
|
|
await DatabaseStorage.database.delete(tableKeychain, where: 'key = ?', whereArgs: [key]);
|
|
}
|
|
|
|
@override
|
|
Future<void> clearAll() async {
|
|
await DatabaseStorage.database.delete(tableKeychain);
|
|
}
|
|
}
|