Перенес хранение информации о сессии (токен, din, posid) в базу данных
This commit is contained in:
82
lib/db.dart
Normal file
82
lib/db.dart
Normal file
@@ -0,0 +1,82 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:path/path.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
|
||||
const String tableSession = "session";
|
||||
const String columnMerchantID = "merchant_id"; // DIN code, который вводится при авторизации
|
||||
const String columnToken = "token"; // Токен для pos. Приходит с бэкэнда.
|
||||
const String columnPosID = "pos_id"; // идентификатор для создания токена на бэке.
|
||||
const String columnDocID = "doc_id"; // идентификатор, для проведения покупки на бэкенде.
|
||||
|
||||
//{
|
||||
// columnMerchantID: merchantID,
|
||||
// columnToken: token,
|
||||
// columnPosID: posID,
|
||||
// columnDocID: docID
|
||||
//}
|
||||
|
||||
/// База данных, для хранения временных данных (din, token, locale, etc.)
|
||||
class SqliteHelper {
|
||||
|
||||
Database db;
|
||||
|
||||
Future open() async {
|
||||
Directory documentsDirectory = await getApplicationDocumentsDirectory();
|
||||
String path = join(documentsDirectory.path, "demo.db");
|
||||
db = await openDatabase(path, version: 1,
|
||||
onCreate: (Database db, int version) async {
|
||||
await db.execute('''create table session (
|
||||
$columnMerchantID text primary key,
|
||||
$columnToken text,
|
||||
$columnPosID text,
|
||||
$columnDocID integer)''');
|
||||
});
|
||||
}
|
||||
|
||||
Future insert(String merchantID, String posID, String token) async {
|
||||
|
||||
Map session = {
|
||||
columnMerchantID: merchantID,
|
||||
columnPosID: posID,
|
||||
columnToken: token
|
||||
};
|
||||
|
||||
return db.insert(tableSession, session);
|
||||
}
|
||||
|
||||
Future<String> getToken() async {
|
||||
Map session = await _getSession();
|
||||
return session != null ? session[columnToken] : null;
|
||||
}
|
||||
|
||||
Future<String> getMerchantID() async {
|
||||
Map session = await _getSession();
|
||||
return session != null ? session[columnMerchantID] : null;
|
||||
}
|
||||
|
||||
Future<String> getPosID() async {
|
||||
Map session = await _getSession();
|
||||
return session != null ? session[columnPosID] : new DateTime.now().millisecondsSinceEpoch.toString();
|
||||
}
|
||||
|
||||
Future<Map> _getSession() async {
|
||||
|
||||
List<Map> maps = await db.query(tableSession, columns: null);
|
||||
|
||||
if (maps.length > 0) {
|
||||
return maps.first;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Future clear() async {
|
||||
return await db.delete(tableSession, where: null);
|
||||
}
|
||||
|
||||
Future close() async => db.close();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user