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, columnDocID: 0 }; return db.insert(tableSession, session); } Future getToken() async { Map session = await _getSession(); String token = session != null ? session[columnToken] : null; print('token: {$token}'); return token; } Future getMerchantID() async { Map session = await _getSession(); String merchantID = session != null ? session[columnMerchantID] : null; print('token: {$merchantID}'); return merchantID; } Future getPosID() async { Map session = await _getSession(); return session != null ? session[columnPosID] : new DateTime.now().millisecondsSinceEpoch.toString(); } Future getDocID() async { Map session = await _getSession(); int docID = session != null ? session[columnDocID] : 0; db.update(tableSession, {columnDocID: docID + 1}); print('docid: {$docID}'); return docID; } Future _getSession() async { List 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(); }