В бд добавлена таблица настроек, данные для настроек берутся из базы

This commit is contained in:
Ivan Murashov
2017-09-08 17:25:56 +03:00
parent 29f6019caf
commit 0dc8ab5da0
16 changed files with 239 additions and 87 deletions

View File

@@ -5,12 +5,20 @@ 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"; // идентификатор, для проведения покупки на бэкенде.
/// Данные о таблице данных приложения.
const String tableSettings = "settings";
const String columnCurrency = "currency"; // валюта.
const String columnLocale = "locale"; // локаль.
//{
// columnMerchantID: merchantID,
// columnToken: token,
@@ -28,15 +36,22 @@ class SqliteHelper {
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 (
await db.execute('''create table $tableSession (
$columnMerchantID text primary key,
$columnToken text,
$columnPosID text,
$columnDocID integer)''');
await db.execute('''create table $tableSettings (
$columnCurrency integer,
$columnLocale text)''');
});
}
Future insert(String merchantID, String posID, String token) async {
/// Создается запись в таблице, содержащая
/// необходимые для идентификации пользователя и проведения запросов.
Future createSession(String merchantID, String posID, String token) async {
Map session = {
columnMerchantID: merchantID,
@@ -48,36 +63,53 @@ class SqliteHelper {
return db.insert(tableSession, session);
}
/// Создается запись в таблице, содержащая данные, которые не зависят от сессии.
Future createAppInfo(String locale, int currency) async {
List<Map> appInfo = await db.query(tableSettings);
if (appInfo.length > 0) {
return null;
} else {
return db.insert(tableSettings, {
columnLocale: locale,
columnCurrency: currency
});
}
}
Future<Map> getSettings() async {
return await selectAll(tableSettings);
}
Future<String> getToken() async {
Map session = await _getSession();
Map session = await selectAll(tableSession);
String token = session != null ? session[columnToken] : null;
print('token: {$token}');
return token;
}
Future<String> getMerchantID() async {
Map session = await _getSession();
Map session = await selectAll(tableSession);
String merchantID = session != null ? session[columnMerchantID] : null;
print('token: {$merchantID}');
return merchantID;
}
Future<String> getPosID() async {
Map session = await _getSession();
Map session = await selectAll(tableSession);
return session != null ? session[columnPosID] : new DateTime.now().millisecondsSinceEpoch.toString();
}
Future<int> getDocID() async {
Map session = await _getSession();
Map session = await selectAll(tableSession);
int docID = session != null ? session[columnDocID] : 0;
db.update(tableSession, {columnDocID: docID + 1});
print('docid: {$docID}');
return docID;
}
Future<Map> _getSession() async {
Future<Map> selectAll(String table) async {
List<Map> maps = await db.query(tableSession, columns: null);
List<Map> maps = await db.query(table, columns: null);
if (maps.length > 0) {
return maps.first;