Перенес хранение информации о сессии (токен, din, posid) в базу данных

This commit is contained in:
Ivan Murashov
2017-09-06 17:19:11 +03:00
parent 60090ea437
commit 569c69e268
9 changed files with 162 additions and 127 deletions

82
lib/db.dart Normal file
View 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();
}